我是靠谱客的博主 害羞心锁,最近开发中收集的这篇文章主要介绍MyBatis设置映射关系【字段名对应关系,一对一关系,一对多关系】一:以下主要演示三点,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一:以下主要演示三点

sql配置文件和接口的绑定关系,如果不清楚,请参考另一篇文章
接口和sql配制文件绑定关系
本章重点在Sql配置文件中【以及JAVA实体类设计部门,请重点查看配置文件中resultMap设置,和JAVA实体类设计的包含关系】

  1. 字段名对应关系
  2. 一对一关系
  3. 一对多关系

二:字段名对应关系

2.1:接口方法 【接口和sql配制文件绑定关系】

路径:com.wangYuan.mappers.DeptMapper03

public interface DeptMapper03 {
// 1:参数实体类字段名和数据库字段名称不同
List<Dept02> queryAll();
}

2.2:Sql配置文件

<?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">
<!--
1:参数实体类字段名和数据库字段名称不同
-->
<mapper namespace="com.wangYuan.mappers.DeptMapper03">
<!--数据库表字段和java实体类【Dept02】对应关系:-->
<resultMap id="deptMap" type="Dept02">
<!--id : 定义主键字段与属性的映射关系-->
<id column="deptno" property="id"/>
<result column="dname" property="name" />
<!--字段一致的内容可以省略不写-->
<!--<result column="loc" property="loc" />-->
</resultMap>
<!--resultMap,表示数据库表字段和java实体类对应关系-->
<select id="queryAll" resultMap="deptMap">
select * from dept
</select>
</mapper>

2.3:实体类内容

public class Dept02 {
private int id;//实体类字段和数据库的字段不匹配,在上面配置文件中设置对应关系
private String name;
private String loc;
//...省略get ,set等方法
}

2.4:java代码测试

public class test03 {
public static void main(String[] args) throws IOException {
//获取sqlSession
SqlSession sqlSession = sessionUtils.getSqlSession();
//调用getMapper,获取接口对象
DeptMapper03 sqlMapper = sqlSession.getMapper(DeptMapper03.class);
List<Dept02> dept02s = sqlMapper.queryAll();//对应字段名
dept02s.forEach(System.out::println);
sqlSession.close();
}
}

三:一对一关系

2.1:接口方法 【接口和sql配制文件绑定关系】

路径:com.wangYuan.mappers.DeptMapper03

public interface DeptMapper03 {
//查询每一个员工信息以及员工所在的部门信息
[一对一]
List<Emp02> queryEmpDept();
}

2.2:Sql配置文件

<?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">
<!--
1:参数实体类字段名和数据库字段名称不同
-->
<mapper namespace="com.wangYuan.mappers.DeptMapper03">
<!--"~~~~~~~~~~~~~~~~~~~~~~~一对一【一个对象中包一个其他实体类】~~~~~~~~~~~~~~~~~~~~~~~~~~~~"-->
<!--自定义结果集中的字段与javabean类中属性的映射关系-->
<!--在多表查询结果的时候,每一个字段对应关系都不能省略-->
<resultMap id="EmpDept" type="Emp02">
<!--主键字段与属性的映射关系-->
<id column="empno" property="empno"></id>
<!--非主键字段与属性的映射关系-->
<result column="ename" property="ename"></result>
<result column="job" property="job"></result>
<result column="mgr" property="mgr"></result>
<result column="hiredate" property="hiredate"></result>
<result column="sal" property="sal"></result>
<result column="comm" property="comm"></result>
<result column="deptno" property="deptno"></result>
<!--association : 定义javabean类型属性与字段的映射关系-->
<association property="pddDept" javaType="Dept02">
<id property="id" column="deptno" />
<result property="name" column="dname" />
<result property="loc" column="loc" />
</association>
</resultMap>
<!--查询的Sql-->
<select id="queryEmpDept" resultMap="EmpDept">
select empno,ename,job,mgr,hiredate,sal,comm,emp.deptno,dname,loc from emp join dept on emp.deptno = dept.deptno
</select>
</mapper>

2.3:实体类内容

public class Dept02 {
private int id;//实体类字段和数据库的字段不匹配,在上面配置文件中设置对应关系
private String name;
private String loc;
//...省略get ,set等方法
}
public class Emp02 {
private int empno;
private String ename;
private double sal;
private String job;
private double comm;
private int mgr;
private Date hiredate;
private int deptno;
//属性: javabean : 员工对象所在的部门信息
private Dept02 pddDept;
//...省略get ,set等方法
}
### 2.4:java代码测试
```java
public class test03 {
public static void main(String[] args) throws IOException {
//获取sqlSession
SqlSession sqlSession = sessionUtils.getSqlSession();
//调用getMapper,获取接口对象
DeptMapper03 sqlMapper = sqlSession.getMapper(DeptMapper03.class);
List<Emp02> emps=sqlMapper.queryEmpDept();//一对一
emps.forEach(System.out::println);
sqlSession.close();
}
}

三:一对多关系

2.1:接口方法 【接口和sql配制文件绑定关系】

路径:com.wangYuan.mappers.DeptMapper03

public interface DeptMapper03 {
//查询所有部门信息以及每个部门所在的员工
【一对多】
List<Dept03> queryAllDept();
}

2.2:Sql配置文件

<?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">
<!--
1:参数实体类字段名和数据库字段名称不同
-->
<mapper namespace="com.wangYuan.mappers.DeptMapper03">
<!--"~~~~~~~~~~~~~~~~~~~~~~~一对多【一个对象中包多个其他实体类】~~~~~~~~~~~~~~~~~~~~~~~~~~~~"-->
<resultMap id="deptMap03" type="Dept03">
<!--id : 定义主键字段与属性的映射关系-->
<id column="deptno" property="id"/>
<!--id : 定义非主键字段与属性的映射关系-->
<result column="dname" property="name" />
<result column="loc" property="loc" />
<!--属性为List集合,使用collection标签定义 ofType:集合中数据的类型-->
<collection property="empList" javaType="List"
ofType="Emp03">
<id property="empno" column="empno" />
<result property="ename" column="ename" />
<result property="job" column="job" />
<result property="mgr" column="mgr" />
<result property="hiredate" column="hiredate" />
<result property="sal" column="sal" />
<result property="comm" column="comm" />
<result property="deptno" column="deptno" />
</collection>
</resultMap>
<select id="queryAllDept" resultMap="deptMap03">
select dept.deptno,dname,loc,empno,ename,job,mgr,hiredate,sal,comm from dept left join emp on emp.deptno = dept.deptno
</select>
</mapper>

2.3:实体类内容

public class Dept03 {
private int id;
private String name;
private String loc;
//属性 : List<Emp03>
private List<Emp03> empList;
//...省略get ,set等方法
}
public class Emp03 {
private int empno;
private String ename;
private double sal;
private String job;
private double comm;
private int mgr;
private Date hiredate;
private int deptno;
//...省略get ,set等方法
}
### 2.4:java代码测试
```java
public class test03 {
public static void main(String[] args) throws IOException {
//获取sqlSession
SqlSession sqlSession = sessionUtils.getSqlSession();
//调用getMapper,获取接口对象
DeptMapper03 sqlMapper = sqlSession.getMapper(DeptMapper03.class);
List<Dept03> dept03s = sqlMapper.queryAllDept();//一对多
dept03s.forEach(System.out::println);
sqlSession.close();
}
}

最后

以上就是害羞心锁为你收集整理的MyBatis设置映射关系【字段名对应关系,一对一关系,一对多关系】一:以下主要演示三点的全部内容,希望文章能够帮你解决MyBatis设置映射关系【字段名对应关系,一对一关系,一对多关系】一:以下主要演示三点所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部