6免费建站的网站,佛山 网址开发 网站制作,百度网站建设解决方案,蘑菇街网站怎么做1、概念resultMap属于mybatis返回操作结果的一个标签#xff0c;可以用来映射select查询出来结果的集合#xff0c;主要作用是将实体类中的字段与数据库表中的字段进行关联映射。并且支持复杂的返回结果类型。2、使用场景2.1 属性映射当数据库字段和项目中的实体属性不一致时… 1、概念resultMap属于mybatis返回操作结果的一个标签可以用来映射select查询出来结果的集合主要作用是将实体类中的字段与数据库表中的字段进行关联映射。并且支持复杂的返回结果类型。2、使用场景2.1 属性映射当数据库字段和项目中的实体属性不一致时可以使resultMap进行数据库字段和实体类属性的映射关系比如 columnid jdbcTypeinteger propertyid / columnuser_name jdbcTypeVARCHAR propertyuserName /
说明如果数据库字段和实体类属性一致的情况下可以省略不写。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)) ENGINEInnoDB AUTO_INCREMENT8 DEFAULT CHARSETutf8;-- ------------------------------ 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)) ENGINEInnoDB DEFAULT CHARSETlatin1;-- ------------------------------ 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.javapublic 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.javapublic 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;Mapperpublic 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;Mapperpublic interface HobbyMapper { List getHobbyByUserId(Integer userId); List getHobbyVOMap();}
e.定义service服务定义IUserInfoService.javapackage 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.javapackage 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;Servicepublic 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.javapackage 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;Controllerpublic class HomeController {Autowired private IUserInfoService userInfoService;RequestMapping(index) //注解映射请求路径 ResponseBody //可以将java对象转为json格式的数据 public String index() { List vouserInfoService.getUserVOMap(1); List listuserInfoService.getHobbyMap(); return Hello World !; }}
g.定义xml文件定义HobbyMapper.xml文件?xml version1.0 encodingUTF-8?!DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN http://mybatis.org/dtd/mybatis-3-mapper.dtdmapper namespacemy.springboot.mybatis.dao.HobbyMapperselect idgetHobbyByUserId resultTypemy.springboot.mybatis.entity.HobbyDO parameterTypeinteger select * from t_hobby where userId #{id}/selectresultMap idhobbyVOMap typemy.springboot.mybatis.model.HobbyVoid propertyid columnid/association propertyuser columnuserId javaTypemy.springboot.mybatis.entity.HobbyDO selectmy.springboot.mybatis.dao.UserInfoMapper.get/association/resultMapselect idgetHobbyVOMap resultMaphobbyVOMap parameterTypeinteger select * from t_hobby/select/mapper
定义UserInfoMapper.xml ?xml version1.0 encodingUTF-8?!DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN http://mybatis.org/dtd/mybatis-3-mapper.dtdmapper namespacemy.springboot.mybatis.dao.UserInfoMapperselect idget resultTypemy.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 iduserVOMap typemy.springboot.mybatis.model.UserVOid propertyid columnid/collection propertylist columnid ofTypemy.springboot.mybatis.entity.HobbyDO selectmy.springboot.mybatis.dao.HobbyMapper.getHobbyByUserId/collection/resultMapselect idgetUserVOMap resultMapuserVOMap parameterTypeinteger select * from t_user/selectselect idgetHobbyByUserId resultTypemy.springboot.mybatis.entity.HobbyDO parameterTypeinteger select * from t_hobby where userId #{id}/select
/mapper
访问地址http://localhost:8090/index项目结构3、总结resultMap用途主要有一下两点1、数据库字段和Java类属性映射2、实现复杂的model类的查询model中包含实体类使用关键字associationselect idgetHobbyByUserId resultTypemy.springboot.mybatis.entity.HobbyDO parameterTypeintegerselect * from t_hobby where userId #{id}
/select
resultMap idhobbyVOMap typemy.springboot.mybatis.model.HobbyVo
id propertyid columnid/
association propertyuser columnuserId javaTypemy.springboot.mybatis.entity.HobbyDOselectmy.springboot.mybatis.dao.UserInfoMapper.get
!-- 说明如果调用的方法不在当前xml里面需要指明完整的mapper路径 my.springboot.mybatis.dao.UserInfoMapper.get -- /association
/resultMap
select idgetHobbyVOMap resultMaphobbyVOMap parameterTypeintegerselect * from t_hobby
/selectmodel中包含集合使用collection 关键代码resultMap iduserVOMap typemy.springboot.mybatis.model.UserVO
id propertyid columnid/
collection propertylist columnid ofTypemy.springboot.mybatis.entity.HobbyDO selectmy.springboot.mybatis.dao.HobbyMapper.getHobbyByUserId
/collection
/resultMap
select idgetUserVOMap resultMapuserVOMap parameterTypeintegerselect * from t_user
/select
select idgetHobbyByUserId resultTypemy.springboot.mybatis.entity.HobbyDO parameterTypeintegerselect * from t_hobby where userId #{id}
/select
注意实际的查询过程当中并不是必须要保证数据库字段名称和实体的属性名称保持一致如果查询语句查询字段指定别名也是可以正常做映射的要会灵活使用。IT技术分享社区个人博客网站https://programmerblog.xyz文章推荐程序员效率画流程图常用的工具程序员效率整理常用的在线笔记软件远程办公常用的远程协助软件你都知道吗51单片机程序下载、ISP及串口基础知识硬件断路器、接触器、继电器基础知识