javascript
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同級目錄下創(chuàng)建:
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.java2.添加數據操作接口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.java3.添加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(一对一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OR-CAD CAPTURE学习笔记——
- 下一篇: oracle 手工创建数据库