自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

后端技術(shù):Mybatis中resultMap用法示例筆記

開(kāi)發(fā) 后端
resultMap屬于mybatis返回操作結(jié)果的一個(gè)標(biāo)簽,可以用來(lái)映射select查詢出來(lái)結(jié)果的集合,主要作用是將實(shí)體類(lèi)中的字段與數(shù)據(jù)庫(kù)表中的字段進(jìn)行關(guān)聯(lián)映射。

1、概念

resultMap屬于mybatis返回操作結(jié)果的一個(gè)標(biāo)簽,可以用來(lái)映射select查詢出來(lái)結(jié)果的集合,主要作用是將實(shí)體類(lèi)中的字段與數(shù)據(jù)庫(kù)表中的字段進(jìn)行關(guān)聯(lián)映射。并且支持復(fù)雜的返回結(jié)果類(lèi)型。

2、使用場(chǎng)景

2.1 屬性映射

當(dāng)數(shù)據(jù)庫(kù)字段和項(xiàng)目中的實(shí)體屬性不一致時(shí),可以使resultMap進(jìn)行數(shù)據(jù)庫(kù)字段和實(shí)體類(lèi)屬性的映射關(guān)系比如:

  1. column="id" jdbcType="integer" property="id" />     
  2.  column="user_name" jdbcType="VARCHAR" property="userName" /> 

說(shuō)明:如果數(shù)據(jù)庫(kù)字段和實(shí)體類(lèi)屬性一致的情況下,可以省略不寫(xiě)。

2.2 實(shí)現(xiàn)Java復(fù)雜實(shí)體類(lèi)用法

a.初始化腳本

  1. DROP TABLE IF EXISTS `t_user`; 
  2. CREATE TABLE `t_user` ( 
  3.   `id` int(11) NOT NULL AUTO_INCREMENT, 
  4.   `user_name` varchar(255) CHARACTER SET armscii8 DEFAULT NULL
  5.   `passwordvarchar(255) CHARACTER SET armscii8 DEFAULT NULL
  6.   `last_login_time` datetime DEFAULT NULL
  7.   `sex` tinyint(4) DEFAULT NULL
  8.   PRIMARY KEY (`id`) 
  9. ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8; 
  10.  
  11.  
  12. -- ---------------------------- 
  13. -- Records of t_user 
  14. -- ---------------------------- 
  15. INSERT INTO `t_user` VALUES ('1''xiaoxin''123''2019-07-27 16:01:21''1'); 
  16. INSERT INTO `t_user` VALUES ('2''jack jo''123''2019-07-24 16:01:37''1'); 
  17. INSERT INTO `t_user` VALUES ('4''landengdeng''123''2019-07-24 16:01:37''1'); 
  18. INSERT INTO `t_user` VALUES ('5''max''123''2019-07-24 16:01:37''1'); 
  19. INSERT INTO `t_user` VALUES ('6''liua11''123456'null'1'); 
  20. INSERT INTO `t_user` VALUES ('7''xiaozhang''888888'null'1'); 
  21. DROP TABLE IF EXISTS `t_hobby`; 
  22. CREATE TABLE `t_hobby` ( 
  23.   `id` int(11) NOT NULL
  24.   `hobbyName` varchar(50) CHARACTER SET utf8 DEFAULT NULL
  25.   `userId` int(11) DEFAULT NULL
  26.   PRIMARY KEY (`id`) 
  27. ) ENGINE=InnoDB DEFAULT CHARSET=latin1; 
  28.  
  29.  
  30. -- ---------------------------- 
  31. -- Records of t_hobby 
  32. -- ---------------------------- 
  33. INSERT INTO `t_hobby` VALUES ('0''音樂(lè)''2'); 
  34. INSERT INTO `t_hobby` VALUES ('1''籃球''1'); 
  35. INSERT INTO `t_hobby` VALUES ('2''讀書(shū)''1'); 

b.定義實(shí)體類(lèi)

定義實(shí)體 UserDO.java

  1. public class UserDO { 
  2. private Integer id; 
  3. private String userName; 
  4. private String password
  5. private Integer sex; 
  6. private Date lastLoginTime; 
  7.  
  8.  
  9. public Integer getId() { 
  10. return id; 
  11.     } 
  12.  
  13.  
  14. public void setId(Integer id) { 
  15. this.id = id; 
  16.     } 
  17.  
  18.  
  19. public String getUserName() { 
  20. return userName; 
  21.     } 
  22.  
  23.  
  24. public void setUserName(String userName) { 
  25. this.userName = userName; 
  26.     } 
  27.  
  28.  
  29. public String getPassword() { 
  30. return password
  31.     } 
  32.  
  33.  
  34. public void setPassword(String password) { 
  35. this.password = password
  36.     } 
  37.  
  38.  
  39. public Integer getSex() { 
  40. return sex; 
  41.     } 
  42.  
  43.  
  44. public void setSex(Integer sex) { 
  45. this.sex = sex; 
  46.     } 
  47.  
  48.  
  49. public Date getLastLoginTime() { 
  50. return lastLoginTime; 
  51.     } 
  52.  
  53.  
  54. public void setLastLoginTime(Date lastLoginTime) { 
  55. this.lastLoginTime = lastLoginTime; 
  56.     } 
  57.  
  58.  
  59. @Override 
  60.     public String toString() { 
  61. return "UserDO{" + 
  62. "id=" + id + 
  63. ", userName='" + userName + '\'' + 
  64. ", password='" + password + '\'' + 
  65. ", sex=" + sex + 
  66. ", lastLoginTime=" + lastLoginTime + 
  67. '}'
  68.     } 

定義實(shí)體類(lèi) HobbyDO.java

  1. public class HobbyDO { 
  2. private Integer id; 
  3. private String hobbyName; 
  4. private Integer userId; 
  5.  
  6.  
  7. public Integer getId() { 
  8. return id; 
  9.     } 
  10.  
  11.  
  12. public void setId(Integer id) { 
  13. this.id = id; 
  14.     } 
  15.  
  16.  
  17. public String getHobbyName() { 
  18. return hobbyName; 
  19.     } 
  20.  
  21.  
  22. public void setHobbyName(String hobbyName) { 
  23. this.hobbyName = hobbyName; 
  24.     } 
  25.  
  26.  
  27. public Integer getUserId() { 
  28. return userId; 
  29.     } 
  30.  
  31.  
  32. public void setUserId(Integer userId) { 
  33. this.userId = userId; 
  34.     } 
  35.  
  36.  
  37. @Override 
  38.     public String toString() { 
  39. return "HobbyDO{" + 
  40. "id=" + id + 
  41. ", hobbyName='" + hobbyName + '\'' + 
  42. ", userId=" + userId + 
  43. '}'
  44.     } 

c.定義model類(lèi)

定義類(lèi) HobbyVO.java 用來(lái)演示一對(duì)一

  1. public class HobbyVo extends HobbyDO { 
  2. private UserDO user ; 
  3.  
  4.  
  5. public UserDO getUser() { 
  6. return user
  7.     } 
  8.  
  9.  
  10. public void setUser(UserDO user) { 
  11. this.user = user
  12.     } 
  13. 定義類(lèi) UserVO.java 用來(lái)演示1對(duì)多 
  14. public class UserVO extends UserDO { 
  15. private Listlist; 
  16.  
  17.  
  18. public ListgetList() { 
  19. return list; 
  20.     } 
  21.  
  22.  
  23. public void setList(Listlist) { 
  24. this.list = list; 
  25.     } 

d.定義mapper類(lèi)文件

定義UserInfoMapper.java文件

  1. package my.springboot.mybatis.dao; 
  2.  
  3.  
  4. import java.util.List; 
  5. import java.util.Map; 
  6.  
  7.  
  8. import my.springboot.mybatis.entity.HobbyDO; 
  9. import my.springboot.mybatis.entity.UserDO; 
  10. import my.springboot.mybatis.model.UserVO; 
  11. import org.apache.ibatis.annotations.Mapper; 
  12.  
  13.  
  14. @Mapper 
  15. public interface UserInfoMapper { 
  16.     UserDO get(Integer id); 
  17.     List getUserVOMap(Integer id); 
  18.     List getHobbyByUserId(Integer userId); 

定義HobbyMapper.java文件

  1. package my.springboot.mybatis.dao; 
  2.  
  3.  
  4. import my.springboot.mybatis.entity.HobbyDO; 
  5. import my.springboot.mybatis.entity.UserDO; 
  6. import my.springboot.mybatis.model.HobbyVo; 
  7. import org.apache.ibatis.annotations.Mapper; 
  8.  
  9.  
  10. import java.util.List; 
  11. import java.util.Map; 
  12.  
  13.  
  14. @Mapper 
  15. public interface HobbyMapper { 
  16.     List getHobbyByUserId(Integer userId); 
  17.     List getHobbyVOMap(); 

e.定義service服務(wù)

定義IUserInfoService.java

  1. package my.springboot.mybatis.service; 
  2.  
  3.  
  4. import my.springboot.mybatis.entity.UserDO; 
  5. import my.springboot.mybatis.model.HobbyVo; 
  6. import my.springboot.mybatis.model.UserVO; 
  7.  
  8.  
  9. import java.util.List; 
  10.  
  11.  
  12. public interface IUserInfoService {  
  13.     List getUserVOMap(Integer userId); 
  14.     List getHobbyMap(); 

定義UserInfoService.java

  1. package my.springboot.mybatis.service.impl; 
  2. import my.springboot.mybatis.dao.HobbyMapper; 
  3. import my.springboot.mybatis.dao.UserInfoMapper; 
  4. import my.springboot.mybatis.entity.UserDO; 
  5. import my.springboot.mybatis.model.HobbyVo; 
  6. import my.springboot.mybatis.model.UserVO; 
  7. import my.springboot.mybatis.service.IUserInfoService; 
  8. import org.springframework.beans.factory.annotation.Autowired; 
  9. import org.springframework.stereotype.Service; 
  10. import java.util.List; 
  11. @Service 
  12. public class UserInfoService implements IUserInfoService { 
  13. @Autowired 
  14.     private UserInfoMapper mapper; 
  15. @Autowired 
  16.     private HobbyMapper hobbyMapper; 
  17. @Override 
  18.     public  List getUserVOMap(Integer id) 
  19.     { 
  20. return this.mapper.getUserVOMap(id); 
  21.     } 
  22.  
  23.  
  24. @Override 
  25.     public ListgetHobbyMap() { 
  26. return hobbyMapper.getHobbyVOMap(); 
  27.     } 
  28.  
  29.  

f.定義測(cè)試控制器

HomeController.java

  1. package my.springboot.mybatis.controller; 
  2.  
  3.  
  4.  
  5.  
  6. import my.springboot.mybatis.entity.UserDO; 
  7. import my.springboot.mybatis.model.HobbyVo; 
  8. import my.springboot.mybatis.model.UserVO; 
  9. import my.springboot.mybatis.service.IUserInfoService; 
  10. import org.springframework.beans.factory.annotation.Autowired; 
  11. import org.springframework.stereotype.Controller; 
  12. import org.springframework.web.bind.annotation.RequestMapping; 
  13. import org.springframework.web.bind.annotation.ResponseBody; 
  14. import javax.jws.soap.SOAPBinding; 
  15. import java.util.Date
  16. import java.util.List; 
  17. @Controller 
  18. public class HomeController { 
  19. @Autowired 
  20.     private IUserInfoService userInfoService; 
  21. @RequestMapping("index") //注解映射請(qǐng)求路徑 
  22.     @ResponseBody //可以將java對(duì)象轉(zhuǎn)為json格式的數(shù)據(jù) 
  23.     public String index() 
  24.     { 
  25.         List vo=userInfoService.getUserVOMap(1); 
  26.         List list=userInfoService.getHobbyMap(); 
  27.         return "Hello World !"
  28.     } 

g.定義xml文件

定義HobbyMapper.xml文件

  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="my.springboot.mybatis.dao.HobbyMapper"
  4. <select id="getHobbyByUserId" resultType="my.springboot.mybatis.entity.HobbyDO" parameterType="integer"
  5.        select  * from t_hobby where userId= #{id} 
  6. </select
  7. <resultMap id="hobbyVOMap" type="my.springboot.mybatis.model.HobbyVo"
  8. <id property="id" column="id"/> 
  9. <association property="user" column="userId" javaType="my.springboot.mybatis.entity.HobbyDO" 
  10.                      select="my.springboot.mybatis.dao.UserInfoMapper.get"
  11. </association> 
  12. </resultMap> 
  13. <select id="getHobbyVOMap" resultMap="hobbyVOMap" parameterType="integer"
  14.        select  * from t_hobby 
  15. </select
  16. </mapper> 

定義UserInfoMapper.xml

  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="my.springboot.mybatis.dao.UserInfoMapper"
  4. <select id="get" resultType="my.springboot.mybatis.entity.UserDO"
  5.    select `id`,`user_name`,`password`,`last_login_time`,`sex` from t_user where id = #{value} 
  6. </select
  7. <!--跨xml文件寫(xiě)法 my.springboot.mybatis.dao.HobbyMapper.getHobbyByUserId--> 
  8.     <resultMap id="userVOMap" type="my.springboot.mybatis.model.UserVO"
  9. <id property="id" column="id"/> 
  10. <collection property="list" column="id" ofType="my.springboot.mybatis.entity.HobbyDO" select="my.springboot.mybatis.dao.HobbyMapper.getHobbyByUserId"
  11. </collection> 
  12. </resultMap> 
  13. <select id="getUserVOMap" resultMap="userVOMap" parameterType="integer"
  14.        select  * from t_user 
  15. </select
  16. <select id="getHobbyByUserId" resultType="my.springboot.mybatis.entity.HobbyDO" parameterType="integer"
  17.        select  * from t_hobby where userId= #{id} 
  18. </select
  19.  
  20. </mapper> 

訪問(wèn)地址:http://localhost:8090/index項(xiàng)目結(jié)構(gòu):

3、總結(jié)

resultMap用途主要有一下兩點(diǎn):

1、數(shù)據(jù)庫(kù)字段和Java類(lèi)屬性映射

2、實(shí)現(xiàn)復(fù)雜的model類(lèi)的查詢

model中包含實(shí)體類(lèi)使用關(guān)鍵字:association

  1. <select id="getHobbyByUserId" resultType="my.springboot.mybatis.entity.HobbyDO" parameterType="integer"
  2.        select  * from t_hobby where userId= #{id} 
  3. </select
  4. <resultMap id="hobbyVOMap" type="my.springboot.mybatis.model.HobbyVo"
  5. <id property="id" column="id"/> 
  6. <association property="user" column="userId" javaType="my.springboot.mybatis.entity.HobbyDO" 
  7.                      select="my.springboot.mybatis.dao.UserInfoMapper.get"
  8. <!-- 說(shuō)明:如果調(diào)用的方法不在當(dāng)前xml里面,需要指明完整的mapper路徑 my.springboot.mybatis.dao.UserInfoMapper.get -->           </association> 
  9. </resultMap> 
  10. <select id="getHobbyVOMap" resultMap="hobbyVOMap" parameterType="integer"
  11.        select  * from t_hobby 
  12. </select

model中包含集合使用:collection 關(guān)鍵代碼

  1. <resultMap id="userVOMap" type="my.springboot.mybatis.model.UserVO"
  2. <id property="id" column="id"/> 
  3. <collection property="list" column="id" ofType="my.springboot.mybatis.entity.HobbyDO" select="my.springboot.mybatis.dao.HobbyMapper.getHobbyByUserId"
  4. </collection> 
  5. </resultMap> 
  6. <select id="getUserVOMap" resultMap="userVOMap" parameterType="integer"
  7.    select  * from t_user 
  8. </select
  9. <select id="getHobbyByUserId" resultType="my.springboot.mybatis.entity.HobbyDO" parameterType="integer"
  10.    select  * from t_hobby where userId= #{id} 
  11. </select

注意:實(shí)際的查詢過(guò)程當(dāng)中,并不是必須要保證數(shù)據(jù)庫(kù)字段名稱(chēng)和實(shí)體的屬性名稱(chēng)保持一致,如果查詢語(yǔ)句查詢字段指定別名,也是可以正常做映射的,要會(huì)靈活使用。

 

責(zé)任編輯:姜華 來(lái)源: IT技術(shù)分享社區(qū)
相關(guān)推薦

2021-06-05 07:34:00

SpringBootMybatis用法

2024-04-19 08:23:06

2010-09-17 09:35:51

SQL中if語(yǔ)句

2023-04-06 09:24:35

MyBatis數(shù)據(jù)庫(kù)

2021-04-22 07:43:24

后端技術(shù)SpringBootdevtools

2010-05-27 15:18:47

MySQL連接

2013-11-15 16:07:26

Linux dfLinux命令

2023-12-20 07:52:49

Python高級(jí)用法生成器

2009-08-27 15:53:30

C#中using wo

2009-07-16 13:50:31

ibatisResultMap

2021-09-13 09:54:51

Linuxcrontab命令

2018-11-16 15:35:10

Spring事務(wù)Java

2010-04-26 11:37:25

Oracle merg

2010-09-15 16:19:17

IECSS hack

2021-05-26 06:22:34

SpringBootJPA后端開(kāi)發(fā)

2021-07-11 07:05:28

RedisSpringBoot用法

2009-07-22 10:03:11

iBATIS Resu

2021-09-03 06:46:34

MyBatis緩存后端

2025-02-27 09:45:47

2010-11-26 09:46:26

MySQL字符串相加
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)