2.SpringBoot整合Mybatis(一对一)
前言:
上一篇整合springboot和mybatis的项目的建立,以及单表的简单的增删改查。这里是上一篇blog的地址:https://www.cnblogs.com/wx60079/p/11461158.html今天来介绍一对一的关系该怎么处理。
准备工具:IntelliJ IDEA Navicat for MySQL Postman
一、建立数据库:
每个user对应一张身份证,每张身份证上有身份证号cardId、开始日期、结束日期。并且建立与user表的外键
1 CREATE TABLE `id_card` ( 2 `cardId` bigint(18) NOT NULL, 3 `uid` int(5) DEFAULT NULL, 4 `begin_time` date DEFAULT NULL, 5 `end_time` date DEFAULT NULL, 6 PRIMARY KEY (`cardId`), 7 KEY `fksu_id` (`uid`), 8 CONSTRAINT `fksu_id` FOREIGN KEY (`uid`) REFERENCES `user` (`id`) 9 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
id_card
二、代码实现
1.添加身份证实体:
1 package com.beilin.entity; 2 import org.springframework.format.annotation.DateTimeFormat; 3 import java.util.Date; 4 5 /** 6 * 身份证实体 7 * @author 北林 8 * 9 */ 10 11 public class IDCard { 12 13 private int uid; 14 private long cardId; 15 16 @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") 17 private Date beginTime; 18 @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") 19 private Date endTime; 20 private User user; 21 22 23 public User getUser() { 24 return user; 25 } 26 public void setUser(User user) { 27 this.user = user; 28 } 29 public int getUid() { 30 return uid; 31 } 32 public void setUid(int uid) { 33 this.uid = uid; 34 } 35 public long getCardId() { 36 return cardId; 37 } 38 public void setCardId(long cardId) { 39 this.cardId = cardId; 40 } 41 public Date getBeginTime() { 42 return beginTime; 43 } 44 public void setBeginTime(Date beginTime) { 45 this.beginTime = beginTime; 46 } 47 public Date getEndTime() { 48 return endTime; 49 } 50 public void setEndTime(Date endTime) { 51 this.endTime = endTime; 52 } 53 54 55 }
IDCard.java
在这里需要注意的是:由于身份证上的日期类型是Data 我在Postman反反复复试了多次,如果要修改的话,总是失败,在此就用:String类型--->Data
为此,在IDCard同级目录下创建:
1 package com.beilin.entity; 2 3 import org.springframework.format.annotation.DateTimeFormat; 4 5 import java.util.Date; 6 7 public class IDCardRequest { 8 9 private int uid; 10 private long cardId; 11 12 private String beginTime; 13 private String endTime; 14 15 16 public int getUid() { 17 return uid; 18 } 19 20 public void setUid(int uid) { 21 this.uid = uid; 22 } 23 24 public long getCardId() { 25 return cardId; 26 } 27 28 public void setCardId(long cardId) { 29 this.cardId = cardId; 30 } 31 32 public String getBeginTime() { 33 return beginTime; 34 } 35 36 public void setBeginTime(String beginTime) { 37 this.beginTime = beginTime; 38 } 39 40 public String getEndTime() { 41 return endTime; 42 } 43 44 public void setEndTime(String endTime) { 45 this.endTime = endTime; 46 } 47 }
IDCardRequest.java
2.添加数据操作接口mapper:
(本来简单的增删改查不打算写的,再写也是为了自己更熟练,这里主要看后面的那两方法)
1 package com.beilin.mapper; 2 import com.beilin.entity.IDCard; 3 import java.util.List; 4 5 /** 6 * Idcard的数据操作层接口类 7 * @author 北林 8 * 9 */ 10 11 public interface IDCardMapper { 12 13 //增 14 public void insert(IDCard iDCard); 15 16 //删 17 public void delete(Integer uid); 18 19 //改 20 public void update(IDCard iDCard); 21 22 //查 23 public List<IDCard> getByUid(Integer uid); 24 25 /** 26 * 获取包括user信息的身份证列表 27 */ 28 public List<IDCard> getListIdOfUser(); 29 30 }
IDCardMapper.java
3.添加mapper映射:
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > 3 <mapper namespace="com.beilin.mapper.IDCardMapper"> 4 5 <!-- user表与身份证表的一对一映射--> 6 <resultMap type="iDCard" id="IDCardOfUserMap"> 7 <id property="cardId" column="cardId"/> 8 <result property="beginTime" column="begin_time"/> 9 <result property="endTime" column="end_time"/> 10 <association property="user" javaType="user"> 11 <id property="id" column="id"/> 12 <result property="name" column="name"/> 13 <result property="age" column="age"/> 14 </association> 15 </resultMap> 16 17 18 <!--插入id_card表信息--> 19 <insert id="insert" parameterType="iDCard"> 20 insert into id_card values(#{cardId},#{uid},#{beginTime},#{endTime}) 21 </insert> 22 23 <!--根据uid删除id_card表信息--> 24 <delete id="delete" parameterType="int"> 25 delete from id_card where uid=#{uid} 26 </delete> 27 28 <!--根据uid修改id_card表信息--> 29 <update id="update" parameterType="iDCard"> 30 update id_card set cardId=#{cardId},begin_time=#{beginTime},end_time=#{endTime} where uid=#{uid} 31 </update> 32 33 <!--根据uid查询id_card信息--> 34 <select id="getByUid" parameterType="int" resultType="iDCard"> 35 select * from id_card where uid=#{uid} 36 </select> 37 38 39 <!-- 查出带有uer信息的id_card列表 --> 40 <select id="getListIdOfUser" resultMap="IDCardOfUserMap"> 41 select * from id_card a,user b where a.uid=b.id; 42 </select> 43 44 </mapper>
IDCardMapper.xml
4.添加controller:
1 package com.beilin.controller; 2 3 import com.beilin.entity.IDCard; 4 import com.beilin.entity.IDCardRequest; 5 import com.beilin.mapper.IDCardMapper; 6 import org.springframework.beans.factory.annotation.Autowired; 7 import org.springframework.web.bind.annotation.*; 8 9 import java.text.SimpleDateFormat; 10 import java.util.Date; 11 import java.util.List; 12 13 @RestController 14 public class IDCardController { 15 @Autowired 16 private IDCardMapper iDCardMapper; 17 18 //插入IDCard信息 19 //注意这里使用的是json格式 20 @PostMapping("/insert") 21 public void insert(@RequestBody IDCard iDCard){ 22 iDCardMapper.insert(iDCard); 23 } 24 25 //根据uid删除 26 @RequestMapping("/delete/{uid}") 27 public void delete(@PathVariable("uid") Integer uid){ 28 iDCardMapper.delete(uid); 29 } 30 31 @RequestMapping("/update/{uid}") 32 public void update(IDCardRequest idCardRequest, @PathVariable("uid") Integer uid){ 33 IDCard idCard = new IDCard(); 34 idCard.setCardId(idCardRequest.getCardId()); 35 idCard.setUid(idCardRequest.getUid()); 36 try{ 37 idCard.setBeginTime(this.strToDate(idCardRequest.getBeginTime())); 38 idCard.setEndTime(this.strToDate(idCardRequest.getEndTime())); 39 }catch (Exception e){ 40 e.printStackTrace(); 41 } 42 iDCardMapper.update(idCard); 43 } 44 45 /** 46 * 根据uid查询 47 * @return 48 */ 49 @RequestMapping("/select/{uid}") 50 public List<IDCard> getByUid(@PathVariable("uid") Integer uid) { 51 List<IDCard> iDCards = iDCardMapper.getByUid(uid); 52 return iDCards; 53 } 54 55 /** 56 * 查出带有user信息的身份证列表 57 * @return 58 */ 59 @GetMapping("/IDCardsOfUser") 60 public List<IDCard> listOfUser(){ 61 List<IDCard> iDCards= iDCardMapper.getListIdOfUser(); 62 return iDCards; 63 } 64 65 private Date strToDate(String strDate) throws Exception { 66 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); 67 return simpleDateFormat.parse(strDate); 68 } 69 }
IDCardController.java
三、测试:
(当然,最开始建表里面是什么都没有的,可以根据上面的增删改方法自行练习,这里不再赘述)
1.数据表信息:
2.Postman运行结果:
后面还有一部分没有截出来
最后,边学边写也是非常耗时间的,往往一个小问题都能卡个一两天,写博客也是当事后日记来写,以便加深记忆,如果有什么错误的地方,也请大家指出!
转载于:https://www.cnblogs.com/wx60079/p/11525649.html
2.SpringBoot整合Mybatis(一对一)相关推荐
- SpringBoot整合mybatis、shiro、redis实现基于数据库的细粒度动态权限管理系统实例(转)...
SpringBoot整合mybatis.shiro.redis实现基于数据库的细粒度动态权限管理系统实例 shiro 目录(?)[+] 前言 表结构 maven配置 配置Druid 配置mybatis ...
- mybatis plugins_[MyBatis] SpringBoot 整合Mybatis
现在基本上搭建一个简单的工程都是三剑客 springboot+mybatis+redis 之前整合Mybatis 都是按照SSM来,所以,这一次带来SpringBoot+MyBatis 的快速整合 p ...
- SpringBoot整合Mybatis超详细流程
SpringBoot整合Mybatis超详细流程 文章目录 SpringBoot整合Mybatis超详细流程 前言 详细流程 0.引入Mybatis 1.创建数据 2.创建程序目录 3.理解后台访问流 ...
- SpringBoot整合Mybatis(高级)
SpringBoot整合Mybatis(高级) 文章目录 SpringBoot整合Mybatis(高级) 前言 基础环境配置 增删改查 ResultMap 复杂查询 多对一 一对多 动态SQL if ...
- 3、SpringBoot整合MyBatis注解版及配置文件版
目录 1.配置pom.xml 2.配置application.yml 3.配置DruidConfig关联yml的配置文件spring.datasource 4.创建数据库及数据库表结构 5.创建对应的 ...
- (一)SpringBoot 整合 MyBatis
一.工具 IDE:idea.DB:mysql 二.创建SpringBoot工程 在Idea中使用SpringInitializr模板创建SpringBoot工程,依赖选择如下: 这里也可以不选JDBC ...
- SpringBoot整合mybatis进行快速开发
SpringBoot整合mybatis进行数据库操作 1.环境的搭建 pom.xml <!--核心模块,包括自动配置支持.日志和YAML --> <dependencies>& ...
- springboot 整合mybatis实现curd
springboot 整合mybatis pom文件 mvc 架构 application.properties 扩展配置,druid配置类 项目地址: https://github.com/seve ...
- springboot整合mysql5.7_详解SpringBoot整合MyBatis详细教程
1. 导入依赖 首先新建一个springboot项目,勾选组件时勾选Spring Web.JDBC API.MySQL Driver 然后导入以下整合依赖 org.mybatis.spring.boo ...
最新文章
- linux日志手机,通过 shell 脚本 自动发送 log日志 文件内容 到手机邮箱
- 记录这两日悲哀的血泪史,以便后来人能绕行
- 《IBM-PC汇编语言程序设计》(第2版)【沈美明 温冬婵】——第三章——自编解析与答案
- ORACLE ROWNUM用法、select into与insert into区别、merge into的使用、递归查询
- 09 Softmax 回归 + 损失函数 + 图片分类数据集【动手学深度学习v2】
- 【报错笔记】关于图片上传时的路径问题
- 乘风破浪的迁移学习!四字成语讲明白这个大热研究方向
- 马云:未来10年,人类将面临AI、IoT和区块链3大挑战!(视频+全文)
- 【java】从进程角度理解java
- #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
- idft重建图像 matlab_不可见成为可见!超材料和 AI 融合,洛桑联邦理工破译了声音图像...
- 2 创建型模式之 - 工厂模式
- TortoiseSvn和Subclipse对应关系
- 你真的了解“无纸化办公”了吗?
- php通过js连接打印机直接打印PDF文件
- matlab 函数pdf怎么用_PDF剪裁页面工具怎么用?怎么剪裁PDF页面
- 实战技巧-学会这一招让前端工程师都刮目相看
- 对数据库中的数据(用户名/密码)加密解密
- 可视化行程管理app_可视化流量:时间行程,扭矩和时间图
- 三面微软,四面雅虎,外企面经复盘总结,那些你不知道的面试技巧