Maven使用注解配置SQL映射器(@Results,@ResultMap)
工程目录:
一、@Results映射
Client.java
package client;import java.io.*;
import java.util.List;
import org.apache.ibatis.io.*;
import org.apache.ibatis.session.*;
import domain.Employee;
import domain.UserMapper;public class Client {public static void main(String args[]) throws IOException {InputStream in=null;SqlSessionFactory factory=null;SqlSession sqlSession=null;try {in = Resources.getResourceAsStream("mybatis-config.xml");}catch(IOException e) {e.printStackTrace();}try {factory = new SqlSessionFactoryBuilder().build(in);sqlSession = factory.openSession(); UserMapper userMapper=sqlSession.getMapper(UserMapper.class);List<Employee> list = userMapper.selectEmpByEmpId(1);for(Employee emp:list)System.out.println(emp.getDeptId()+" "+emp.getEmpId()+" "+emp.getName());sqlSession.commit();}catch(Exception e) {e.printStackTrace();if(sqlSession!=null) {sqlSession.rollback();}}finally {if(sqlSession!=null) {sqlSession.close();}}}
}
Department.java
package domain;public class Department {private int deptId;private String deptName;public int getDeptId() {return deptId;}public void setDeptId(int deptId) {this.deptId = deptId;}public String getDeptName() {return deptName;}public void setDeptName(String deptName) {this.deptName = deptName;}
}
Employee.java
package domain;public class Employee {private int empId;private String name;private int deptId;public int getEmpId() {return empId;}public void setEmpId(int empId) {this.empId = empId;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getDeptId() {return deptId;}public void setDeptId(int deptId) {this.deptId = deptId;}
}
domain.UserMapper.java
package domain;import java.util.List;
import org.apache.ibatis.annotations.*;public interface UserMapper {@Select("select * from employee where empId=#{empId}")@Results({@Result(id=true,column="empId",property="empId"),@Result(column="name",property="name"),@Result(column="deptId",property="deptId")})public List<Employee> selectEmpByEmpId(int empId);
}
mapper.UserMapper.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="domain.UserMapper">
</mapper>
Employee表:
查询结果:
二、@ResultMap映射,当要重复使用这个 resultMap时,可用@ResultMap注解在各个需要的接口方法上引用它
Client.java
package client;import java.io.*;
import java.util.List;
import org.apache.ibatis.io.*;
import org.apache.ibatis.session.*;
import domain.Employee;
import domain.EmpMapper;public class Client {public static void main(String args[]) throws IOException {InputStream in=null;SqlSessionFactory factory=null;SqlSession sqlSession=null;try {in = Resources.getResourceAsStream("mybatis-config.xml");}catch(IOException e) {e.printStackTrace();}try {factory = new SqlSessionFactoryBuilder().build(in);factory.getConfiguration().addMapper(EmpMapper.class);sqlSession = factory.openSession(); EmpMapper userMapper=sqlSession.getMapper(EmpMapper.class);List<Employee> list = userMapper.selectEmpByEmpId(1);for(Employee emp:list)System.out.println(emp.getDeptId()+" "+emp.getEmpId()+" "+emp.getName());sqlSession.commit();}catch(Exception e) {e.printStackTrace();if(sqlSession!=null) {sqlSession.rollback();}}finally {if(sqlSession!=null) {sqlSession.close();}}}
}
domain.EmpMapper.java
package domain;import java.util.List;
import org.apache.ibatis.annotations.*;public interface EmpMapper {@Select("select * from employee where empId=#{empId}")@ResultMap("mapper.UserMapper.empResultMap")public List<Employee> selectEmpByEmpId(int empId);
}
mapper.UserMapper.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="mapper.UserMapper"><resultMap type="domain.Employee" id="empResultMap"><id property="empId" column="empId" /><result property="name" column="name" /><result property="deptId" column="deptId" /></resultMap>
</mapper>
查询结果:
三、@ResultMap配置一对一关联查询
Client.java
package client;import java.io.*;
import java.util.List;
import org.apache.ibatis.io.*;
import org.apache.ibatis.session.*;
import domain.Employee;
import domain.EmpMapper;public class Client {public static void main(String args[]) throws IOException {InputStream in=null;SqlSessionFactory factory=null;SqlSession sqlSession=null;try {in = Resources.getResourceAsStream("mybatis-config.xml");}catch(IOException e) {e.printStackTrace();}try {factory = new SqlSessionFactoryBuilder().build(in);factory.getConfiguration().addMapper(EmpMapper.class);sqlSession = factory.openSession(); EmpMapper userMapper=sqlSession.getMapper(EmpMapper.class);List<Employee> list = userMapper.selectEmpByEmpId(1);for(Employee emp:list)System.out.println(emp.getDeptId()+" "+emp.getEmpId()+" "+emp.getName()+" "+emp.getDepts().getDeptName());sqlSession.commit();}catch(Exception e) {e.printStackTrace();if(sqlSession!=null) {sqlSession.rollback();}}finally {if(sqlSession!=null) {sqlSession.close();}}}
}
Employee.java
package domain;public class Employee {private int empId;private String name;private int deptId;private Department depts;public int getEmpId() {return empId;}public void setEmpId(int empId) {this.empId = empId;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getDeptId() {return deptId;}public void setDeptId(int deptId) {this.deptId = deptId;}public Department getDepts() {return depts;}public void setDepts(Department depts) {this.depts = depts;}
}
Department.java
package domain;public class Department {private int deptId;private String deptName;public int getDeptId() {return deptId;}public void setDeptId(int deptId) {this.deptId = deptId;}public String getDeptName() {return deptName;}public void setDeptName(String deptName) {this.deptName = deptName;}
}
EmpMapper.java(interface)
package domain;import java.util.List;
import org.apache.ibatis.annotations.*;public interface EmpMapper {@Select("select * from employee,department where empId=#{empId}")@ResultMap("mapper.UserMapper.empAndDeptResultMap")public List<Employee> selectEmpByEmpId(int empId);
}
mapper.UserMapper.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="mapper.UserMapper"><resultMap type="domain.Employee" id="empAndDeptResultMap"><id property="empId" column="empId" /><result property="name" column="name" /><result property="deptId" column="deptId" /><association property="depts" resultMap="deptResultMap"></association></resultMap><resultMap type="domain.Department" id="deptResultMap"><id property="deptId" column="deptId" /><result property="deptName" column="deptName" /></resultMap>
</mapper>
employee表:
department表:
查询结果:
四、@ResultMap配置一对多查询
Client.java
package client;import java.io.*;
import org.apache.ibatis.io.*;
import org.apache.ibatis.session.*;
import domain.Employee;
import domain.Department;
import domain.EmpMapper;public class Client {public static void main(String args[]) throws IOException {InputStream in=null;SqlSessionFactory factory=null;SqlSession sqlSession=null;try {in = Resources.getResourceAsStream("mybatis-config.xml");}catch(IOException e) {e.printStackTrace();}try {factory = new SqlSessionFactoryBuilder().build(in);factory.getConfiguration().addMapper(EmpMapper.class);sqlSession = factory.openSession(); EmpMapper userMapper=sqlSession.getMapper(EmpMapper.class);Department dept = userMapper.selectDeptBydeptId(1);for(Employee emp:dept.getEmps())System.out.println(emp.getName()+" "+dept.getDeptId()+" "+dept.getDeptName());sqlSession.commit();}catch(Exception e) {e.printStackTrace();if(sqlSession!=null) {sqlSession.rollback();}}finally {if(sqlSession!=null) {sqlSession.close();}}}
}
Department.java
package domain;import java.util.List;public class Department {private int deptId;private String deptName;private List<Employee> emps;public int getDeptId() {return deptId;}public void setDeptId(int deptId) {this.deptId = deptId;}public String getDeptName() {return deptName;}public void setDeptName(String deptName) {this.deptName = deptName;}public List<Employee> getEmps() {return emps;}public void setEmps(List<Employee> emps) {this.emps = emps;}
}
Employee.java
package domain;public class Employee {private int empId;private String name;private int deptId;public int getEmpId() {return empId;}public void setEmpId(int empId) {this.empId = empId;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getDeptId() {return deptId;}public void setDeptId(int deptId) {this.deptId = deptId;}
}
EmpMapper.java(interface)
package domain;import org.apache.ibatis.annotations.*;public interface EmpMapper {@Select("select * from department,employee where department.deptId=employee.deptId and department.deptId=#{deptId}")@ResultMap("mapper.UserMapper.deptAndEmpResultMap")public Department selectDeptBydeptId(int deptId);
}
mapper.UserMapper.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="mapper.UserMapper"><resultMap type="domain.Employee" id="empResultMap"><id property="empId" column="empId" /><result property="name" column="name" /><result property="deptId" column="deptId" /></resultMap><resultMap type="domain.Department" id="deptAndEmpResultMap"><id property="deptId" column="deptId" /><result property="deptName" column="deptName" /><collection property="emps" resultMap="empResultMap"></collection></resultMap>
</mapper>
employee表:
department表:
查询结果:
Maven使用注解配置SQL映射器(@Results,@ResultMap)相关推荐
- Maven使用注解配置SQL映射器(@Select,@Insert,@Update,@Delete)
工程目录: Client.java package client;import java.io.*; import java.util.List; import org.apache.ibatis.i ...
- Mybatis基于XML配置SQL映射器(二)
Mybatis之XML注解 之前已经讲到通过 mybatis-generator 生成mapper映射接口和相关的映射配置文件: 下面我们将详细的讲解具体内容 首先我们新建映射接口文档 sysUse ...
- Mybatis基于XML配置SQL映射器(一)
Durid和Mybatis开发环境搭建 SpringBoot搭建基于Spring+SpringMvc+Mybatis的REST服务(http://www.cnblogs.com/nbfujx/p/76 ...
- 【SpringMVC框架】注解的处理器映射器和适配器配置
下面我们来探讨注解的处理器映射器和适配器 1.注解的处理器映射器和适配器 在spring3.1之前使用org.springframework.web.servlet.mvc.annotation.De ...
- 14. 使用MyBatis注解配置SQL
14. 使用MyBatis注解配置SQL 1.MyBatis常用注解 @Insert:实现新增,代替了 @Delete:实现删除,代替了 @Update:实现更新,代替了 @Select:实现查询,代 ...
- SpringMVC - 非注解的处理器映射器和适配器
为什么80%的码农都做不了架构师?>>> 一.非注解的处理器映射器 提供的处理器有两个属性.一个是id属性,一个是name属性.分别对应两种不同的映射器. <bean i ...
- 非注解和注解的处理器映射器和适配器---SpringMVC学习笔记(三)
非注解的处理器映射器和适配器 非注解的处理器映射器 之前的入门Demo中使用的就是非注解的处理器映射器: org.springframework.web.servlet.handler.BeanNam ...
- 【SpringMVC框架】非注解的处理器映射器和适配器
非注解的处理器映射器和适配器 1.非注解的处理器映射器 之前的处理器映射器: org.springframework.web.servlet.handler.BeanNameUrlHandlerMap ...
- SpringMVC学习记录二——非注解和注解的处理器映射器和适配器
3 非注解的处理器映射器和适配器 3.1 非注解的处理器映射器 处理器映射器: org.springframework.web.servlet.handler.BeanNameUr ...
最新文章
- 如何打造企业的组织能力?战略决定组织,而组织决定成败!
- 这个AI模型用最少的训练数据学习对象之间的关系
- 多DHCP服务器的作用域 及备用DHCP服务器(一)
- Google 的 QUIC 华丽转身成为下一代网络协议: HTTP/3.0
- 其他团队对本组建议汇总
- rand函数的使用方法php,PHP array_rand()函数 使用基础教程
- boost::hof::flip用法的测试程序
- python列表按照批次分配数据(亲测)
- ORACLE TEXT FILTER PREFERENCE(一)
- php redis命令大全,redis中key相关命令详解
- 网络流-Dinic求最大流(仅做自己复习,写的很不清楚)
- 【Qt】qt库结构及示例
- 编程珠玑---第二章 啊哈!算法
- Anaconda中使用图形化界面创建虚拟环境
- c语言头文件sys wait.h,错误:sys/wait.h:没有这样的文件或目录
- 工作之RF功能开发入门
- 一个算法模型搞定千万种场景,人工智能领域出现一匹黑马
- php oa系统 缺点,PHPOA:被低估的OA自动化系统
- php的惰性加载,惰性加载
- C语言基础级——标准输入和输出
热门文章
- 互联网大厂春节礼盒鄙视链
- 从开源开发者身上学到的 5 种品质
- 开发者请注意!2020年的大前端发展趋势已出炉! | 原力计划
- 路由的二次风口,华为与迅游能抓住吗?
- 用 Go 重构 C 语言系统,这个抗住春晚红包的百度转发引擎承接了万亿流量
- 华为紧急调试鸿蒙;首个 5G 全覆盖国家诞生;Flutter 1.7 正式发布 | 极客头条
- 这本 Kindle 排名第一的 Python 3 入门书,火遍了整个编程圈!| 码书
- 动画:什么是散列表?
- “WiFi 万能钥匙”盗 9 亿用户数据,如何看待运营平台滥用隐私的问题?
- 写给科技公司项目经理的一封警告书