您现在的位置是:亿华云 > IT科技类资讯
后端技术:Mybatis中resultMap用法示例笔记
亿华云2025-10-03 22:10:28【IT科技类资讯】5人已围观
简介1、概念resultMap属于mybatis返回操作结果的一个标签,可以用来映射select查询出来结果的集合,主要作用是将实体类中的字段与数据库表中的字段进行关联映射。并且支持复杂的返回结果类型。2
1、后端概念
resultMap属于mybatis返回操作结果的技术记一个标签,可以用来映射select查询出来结果的法示集合,主要作用是例笔将实体类中的字段与数据库表中的字段进行关联映射。并且支持复杂的后端返回结果类型。
2、技术记使用场景
2.1 属性映射
当数据库字段和项目中的亿华云计算法示实体属性不一致时,可以使resultMap进行数据库字段和实体类属性的例笔映射关系比如:
column="id" jdbcType="integer" property="id" /> column="user_name" jdbcType="VARCHAR" property="userName" />说明:如果数据库字段和实体类属性一致的情况下,可以省略不写。后端
2.2 实现Java复杂实体类用法
a.初始化脚本
DROP TABLE IF EXISTS `t_user`; CREATE TABLE `t_user` ( `id` int(11) NOT NULL AUTO_INCREMENT,技术记 `user_name` varchar(255) CHARACTER SET armscii8 DEFAULT NULL, `password` varchar(255) CHARACTER SET armscii8 DEFAULT NULL, `last_login_time` datetime DEFAULT NULL, `sex` tinyint(4) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of t_user -- ---------------------------- INSERT INTO `t_user` VALUES (1, xiaoxin, 123, 2019-07-27 16:01:21, 1); INSERT INTO `t_user` VALUES (2, jack jo, 123, 2019-07-24 16:01:37, 1); INSERT INTO `t_user` VALUES (4, landengdeng, 123, 2019-07-24 16:01:37, 1); INSERT INTO `t_user` VALUES (5, max, 123, 2019-07-24 16:01:37, 1); INSERT INTO `t_user` VALUES (6, liua11, 123456, null, 1); INSERT INTO `t_user` VALUES (7, xiaozhang, 888888, null, 1); DROP TABLE IF EXISTS `t_hobby`; CREATE TABLE `t_hobby` ( `id` int(11) NOT NULL, `hobbyName` varchar(50) CHARACTER SET utf8 DEFAULT NULL, `userId` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- ---------------------------- -- Records of t_hobby -- ---------------------------- INSERT INTO `t_hobby` VALUES (0, 音乐, 2); INSERT INTO `t_hobby` VALUES (1, 篮球, 1); INSERT INTO `t_hobby` VALUES (2, 读书, 1);b.定义实体类
定义实体 UserDO.java
public class UserDO { private Integer id; private String userName; private String password; private Integer sex; private Date lastLoginTime; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Integer getSex() { return sex; } public void setSex(Integer sex) { this.sex = sex; } public Date getLastLoginTime() { return lastLoginTime; } public void setLastLoginTime(Date lastLoginTime) { this.lastLoginTime = lastLoginTime; } @Override public String toString() { return "UserDO{ " + "id=" + id + ", userName=" + userName + \ + ", password=" + password + \ + ", sex=" + sex + ", lastLoginTime=" + lastLoginTime + }; }定义实体类 HobbyDO.java
public class HobbyDO { private Integer id; private String hobbyName; private Integer userId; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getHobbyName() { return hobbyName; } public void setHobbyName(String hobbyName) { this.hobbyName = hobbyName; } public Integer getUserId() { return userId; } public void setUserId(Integer userId) { this.userId = userId; } @Override public String toString() { return "HobbyDO{ " + "id=" + id + ", hobbyName=" + hobbyName + \ + ", userId=" + userId + }; }c.定义model类
定义类 HobbyVO.java 用来演示一对一
public class HobbyVo extends HobbyDO { private UserDO user ; public UserDO getUser() { return user; } public void setUser(UserDO user) { this.user = user; } } 定义类 UserVO.java 用来演示1对多 public class UserVO extends UserDO { private Listlist; public ListgetList() { return list; } public void setList(Listlist) { this.list = list; } }d.定义mapper类文件
定义UserInfoMapper.java文件
package my.springboot.mybatis.dao; import java.util.List; import java.util.Map; import my.springboot.mybatis.entity.HobbyDO; import my.springboot.mybatis.entity.UserDO; import my.springboot.mybatis.model.UserVO; import org.apache.ibatis.annotations.Mapper; @Mapper public interface UserInfoMapper { UserDO get(Integer id); List getUserVOMap(Integer id); List getHobbyByUserId(Integer userId); }定义HobbyMapper.java文件
package my.springboot.mybatis.dao; import my.springboot.mybatis.entity.HobbyDO; import my.springboot.mybatis.entity.UserDO; import my.springboot.mybatis.model.HobbyVo; import org.apache.ibatis.annotations.Mapper; import java.util.List; import java.util.Map; @Mapper public interface HobbyMapper { List getHobbyByUserId(Integer userId); List getHobbyVOMap(); }e.定义service服务
定义IUserInfoService.java
package my.springboot.mybatis.service; import my.springboot.mybatis.entity.UserDO; import my.springboot.mybatis.model.HobbyVo; import my.springboot.mybatis.model.UserVO; import java.util.List; public interface IUserInfoService { List getUserVOMap(Integer userId); List getHobbyMap(); }定义UserInfoService.java
package my.springboot.mybatis.service.impl; import my.springboot.mybatis.dao.HobbyMapper; import my.springboot.mybatis.dao.UserInfoMapper; import my.springboot.mybatis.entity.UserDO; import my.springboot.mybatis.model.HobbyVo; import my.springboot.mybatis.model.UserVO; import my.springboot.mybatis.service.IUserInfoService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @Service public class UserInfoService implements IUserInfoService { @Autowired private UserInfoMapper mapper; @Autowired private HobbyMapper hobbyMapper; @Override public List getUserVOMap(Integer id) { return this.mapper.getUserVOMap(id); } @Override public ListgetHobbyMap() { return hobbyMapper.getHobbyVOMap(); } }f.定义测试控制器
HomeController.java
package my.springboot.mybatis.controller; import my.springboot.mybatis.entity.UserDO; import my.springboot.mybatis.model.HobbyVo; import my.springboot.mybatis.model.UserVO; import my.springboot.mybatis.service.IUserInfoService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import javax.jws.soap.SOAPBinding; import java.util.Date; import java.util.List; @Controller public class HomeController { @Autowired private IUserInfoService userInfoService; @RequestMapping("index") //注解映射请求路径 @ResponseBody //可以将java对象转为json格式的数据 public String index() { List vo=userInfoService.getUserVOMap(1); List list=userInfoService.getHobbyMap(); return "Hello World !"; } }g.定义xml文件
定义HobbyMapper.xml文件
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="my.springboot.mybatis.dao.HobbyMapper"> <select id="getHobbyByUserId" resultType="my.springboot.mybatis.entity.HobbyDO" parameterType="integer"> select * from t_hobby where userId= #{ id} </select> <resultMap id="hobbyVOMap" type="my.springboot.mybatis.model.HobbyVo"> <id property="id" column="id"/> <association property="user" column="userId" javaType="my.springboot.mybatis.entity.HobbyDO" select="my.springboot.mybatis.dao.UserInfoMapper.get"> </association> </resultMap> <select id="getHobbyVOMap" resultMap="hobbyVOMap" parameterType="integer"> select * from t_hobby </select> </mapper>定义UserInfoMapper.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="my.springboot.mybatis.dao.UserInfoMapper"> <select id="get" resultType="my.springboot.mybatis.entity.UserDO"> select `id`,`user_name`,`password`,`last_login_time`,`sex` from t_user where id = #{ value} </select> <!--跨xml文件写法 my.springboot.mybatis.dao.HobbyMapper.getHobbyByUserId--> <resultMap id="userVOMap" type="my.springboot.mybatis.model.UserVO"> <id property="id" column="id"/> <collection property="list" column="id" ofType="my.springboot.mybatis.entity.HobbyDO" select="my.springboot.mybatis.dao.HobbyMapper.getHobbyByUserId"> </collection> </resultMap> <select id="getUserVOMap" resultMap="userVOMap" parameterType="integer"> select * from t_user </select> <select id="getHobbyByUserId" resultType="my.springboot.mybatis.entity.HobbyDO" parameterType="integer"> select * from t_hobby where userId= #{ id} </select> </mapper>访问地址:http://localhost:8090/index项目结构:
3、总结
resultMap用途主要有一下两点:
1、法示数据库字段和Java类属性映射
2、例笔实现复杂的后端model类的查询
model中包含实体类使用关键字:association
<select id="getHobbyByUserId" resultType="my.springboot.mybatis.entity.HobbyDO" parameterType="integer"> select * from t_hobby where userId= #{ id} </select> <resultMap id="hobbyVOMap" type="my.springboot.mybatis.model.HobbyVo"> <id property="id" column="id"/> <association property="user" column="userId" javaType="my.springboot.mybatis.entity.HobbyDO" select="my.springboot.mybatis.dao.UserInfoMapper.get"> <!-- 说明:如果调用的云南idc服务商方法不在当前xml里面,需要指明完整的技术记mapper路径 my.springboot.mybatis.dao.UserInfoMapper.get --> </association> </resultMap> <select id="getHobbyVOMap" resultMap="hobbyVOMap" parameterType="integer"> select * from t_hobby </select>model中包含集合使用:collection 关键代码
<resultMap id="userVOMap" type="my.springboot.mybatis.model.UserVO"> <id property="id" column="id"/> <collection property="list" column="id" ofType="my.springboot.mybatis.entity.HobbyDO" select="my.springboot.mybatis.dao.HobbyMapper.getHobbyByUserId"> </collection> </resultMap> <select id="getUserVOMap" resultMap="userVOMap" parameterType="integer"> select * from t_user </select> <select id="getHobbyByUserId" resultType="my.springboot.mybatis.entity.HobbyDO" parameterType="integer"> select * from t_hobby where userId= #{ id} </select>注意:实际的查询过程当中,并不是法示必须要保证数据库字段名称和实体的属性名称保持一致,如果查询语句查询字段指定别名,也是可以正常做映射的,要会灵活使用。网站模板
很赞哦!(1178)
相关文章
- 国际域名转移的费用和处理步骤是什么?
- .com域名是国际最广泛流行的通用域名,目前全球注册量第一的域名,公司企业注册域名的首选。国际化公司通常会注册该类域名。
- (4) 使用何种形式的域名后缀对网页搜索影响不大,但域名后缀也需要考虑方便用户记忆
- 互联网中的地址是数字的IP地址,域名解析的作用主要就是为了便于记忆。
- 如果你的潜在终端必须是这个米(域名),那么潜在终端并不多,也没有硬通货,那么你的域名应该在终端有兴趣购买时出售。否则,你可能得自己留着吃。
- 3、查看排名
- 并非一个好米任何人都会给你一个好的价格。那你该如何用以有的好米卖出最理想的价格呢?
- 第三,.cc域名域名也有很多优势资源域名,从整体注册基数也可以由此推断;
- 5、企业注册国内域名需要证件,其它情况一律不需要证件。
- 在更换域名后,并不是就万事大吉了,我们需要将旧域名做301重定向到新域名上,转移旧域名的权重到新域名上。
热门文章
站长推荐
个人域名转为公司需要什么条件?个人域名转为公司该怎么做?
投资各类域名就像到处打游击战,结果处处失败。因为这样,对任何一个中国域名市场的走势和价格都没有准确的把握,所以最好缩小范围,准确把握战场态势,埋伏。
以上的就是为大家介绍的关于域名的详解
4、待所有域名查询结束后可在右侧点击导出结果,即可以excel的文件方式将查询到的结果导出。
网站页面结构改版,仅是页面样式发生变化,不会对排名、收录有影响;只有涉及到页面URL改变,才会对网站排名、收录有影响。
在众多公司中,如果我们必须选择一家可信的公司,那当然是信得过的。
用户邮箱的静态密码可能已被钓鱼和同一密码泄露。在没有收到安全警报的情况下,用户在适当的时间内不能更改密码。在此期间,攻击者可以随意输入帐户。启用辅助身份验证后,如果攻击者无法获取移动电话动态密码,他将无法进行身份验证。这样,除非用户的电子邮件密码和手机同时被盗,否则攻击者很难破解用户的邮箱。
如果你的潜在终端必须是这个米(域名),那么潜在终端并不多,也没有硬通货,那么你的域名应该在终端有兴趣购买时出售。否则,你可能得自己留着吃。