MyBatis的级联查询(association 进行分布查询)
来源:互联网 发布:php如何加密源码软件 编辑:程序博客网 时间:2024/06/01 10:19
MyBatis的级联查询(分布查询)
<!-- 使用 association 进行分布查询 1 先按照员工id查询员工信息 2 根据查询员工信息中的d_id的值去部门表查出部门信息 3 部门设置到员工中 -->
EmployeeMapperPlus.xml
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.cn.mybatis.dao.EmployeeMapperPlus"><!-- 使用 association 进行分布查询 1 先按照员工id查询员工信息 2 根据查询员工信息中的d_id的值去部门表查出部门信息 3 部门设置到员工中 --><resultMap type="com.cn.zhu.bean.Employee" id="MyEmpByStep"><id column="id" property="id"/><result column="last_name" property="lastName"/><result column="email" property="email"/><result column="gender" property="gender"/><!-- association 定义管理对象的封装规则 select: 表明当前属性是调用select 指定的方法 colum: 指定将哪一列的值传给这个方法 流程 : 使用select 指定的方法(传入column指定的这列参数的值)查出对象 并封装给property 指定的属性 --><association property="dept" select="com.cn.mybatis.dao.DepartmentMapper.getDeptById" column="d_id"> </association></resultMap><!-- public Employee getEmpByIdStep(Integer id); --><select id="getEmpByIdStep" resultMap="MyEmpByStep"> select * from tbl_employee where id=#{id} </select> <!-- 分布好处 Employee==>Dept 我们每次查询Employee对象的时候,都将一起查询出来。 部门信息在我们使用的时候再去查询 分段查询的基础之上加上两个配置 --> </mapper>
DepartmentMapper.xml
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.cn.mybatis.dao.DepartmentMapper"><!-- public Department getDeptById(Integer id); --><select id="getDeptById" resultType="com.cn.zhu.bean.Department">select id,dept_namedepartmentName from tbl_dept where id=#{id} </select> </mapper>
DepartmentMapper.java
package com.cn.mybatis.dao;import java.util.List;import java.util.Map;import org.apache.ibatis.annotations.MapKey;import org.apache.ibatis.annotations.Param;import com.cn.zhu.bean.Department;import com.cn.zhu.bean.Employee;public interface DepartmentMapper {public Department getDeptById(Integer id);public Department getDeptByIdPlus(Integer id);public Department getDeptByIdStep(Integer id);public List<Employee> getEmpsByDeptId(Integer deptId); }Department.java
package com.cn.zhu.bean;import java.util.List;public class Department {private Integer id;private String departmentName;private List<Employee> emps;public List<Employee> getEmps() {return emps;}public void setEmps(List<Employee> emps) {this.emps = emps;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getDepartmentName() {return departmentName;}public void setDepartmentName(String departmentName) {this.departmentName = departmentName;}@Overridepublic String toString() {return "Department [departmentName=" + departmentName + ", id=" + id+ "]";}}
EmployeeMapperPlus.java
package com.cn.mybatis.dao;import java.util.List;import java.util.Map;import org.apache.ibatis.annotations.MapKey;import org.apache.ibatis.annotations.Param;import com.cn.zhu.bean.Employee;public interface EmployeeMapperPlus {public Employee getEmpById(Integer id);public Employee getEmpAndDept(Integer id);public Employee getEmpByIdStep(Integer id); }在config.xml加上
mybatis-config.xml
<mappers><mapper resource="mybatis/mapper/EmployeeMapperPlus.xml" /><mapper resource="mybatis/mapper/DepartmentMapper.xml" /></mappers>
MyBatisTest.java
package com.cn.zhu.mybatis.test;import java.io.IOException;import java.io.InputStream;import java.util.HashMap;import java.util.List;import java.util.Map;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import org.junit.Test;import com.cn.mybatis.dao.CopyOfEmployeeMapperAnnotation;import com.cn.mybatis.dao.DepartmentMapper;import com.cn.mybatis.dao.EmployeeMapper;import com.cn.mybatis.dao.EmployeeMapperPlus;import com.cn.zhu.bean.Department;import com.cn.zhu.bean.Employee;/** * 1 接口式编程 * 原生 dao ====> DaoImpI * mybatis Mapper====>xxMapper.xml * * 2 Sql Session 代表 和数据库的一次回话,用完必须关闭 * 3 SqlSession 和 connection 一样她都是非线程安全。 * @author Administrator * */public class MyBatisTest {public SqlSessionFactory getSqlSessionFactory() throws IOException{String resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);return new SqlSessionFactoryBuilder().build(inputStream);}/** * 1. 根据xml配置文件(全局配置文件)创建一个sqlsessionFactory对象 * 有数据源一些运行环境信息 * 2 sql映射文件: 配置了每一个sql,以及sql的封装规则等 * 3 将sql映射文件注册在全局配置文件中 * 4 写代码 * 1 根据全局配置文件得到sqlSessionFactory * 2 使用sqlsession工厂,获取到sqlsession对象使用池来执行增删改查 * 一个sqlsession就是代表和数据库的一次回话。用完也要关闭 * @throws IOException *//*@Testpublic void test() throws IOException{ *//** * 2 获取sqlsession实例,能直接执行已经映射的sql语句 *//*SqlSession openSession=getSqlSessionFactory().openSession();try{Employee employee=openSession.selectOne("com.cn.mybatis.EmployeeMapper.selectEmp", 1);System.out.println(employee);}finally{openSession.close();}}*/@Testpublic void test05() throws IOException{SqlSessionFactory sqlsessionFactory=getSqlSessionFactory();// 1 获取到的sqlsession不会自动提交数据SqlSession openSession=sqlsessionFactory.openSession();try{EmployeeMapperPlus mapper=openSession.getMapper(EmployeeMapperPlus.class); //级联查询 Employee empAndDept=mapper.getEmpAndDept(1); System.out.println(empAndDept); System.out.println(empAndDept.getDept());// 分布查询Employee employee=mapper.getEmpByIdStep(1);System.out.println(employee);System.out.println(employee.getDept());}finally{openSession.commit();}}}
测试结果
接下来会写mybatis对集合的遍历查询
阅读全文
0 0
- MyBatis的级联查询(association 进行分布查询)
- Mybatis中使用Association元素进行一对一级联查询
- MyBatis 的级联查询
- mybatis 学习记录(4.1)—— 级联查询(无 association 和 collection)
- mybatis 学习记录(4.2)—— 级联查询(有 association 和 collection)
- mybatis用association指定外键结合select实现级联属性查询
- mybatis 级联查询
- mybatis特性--- 级联查询
- mybatis级联查询
- Mybatis级联查询
- mybatis级联查询
- mybatis级联查询
- MyBatis 级联查询
- mybatis级联查询
- 关于MyBatis关联查询 (association)映射为空的问题
- MyBatis的级联查询(两种方式)
- mybatis级联查询的新写法
- MyBatis的collection集合的分布查询
- Gradle命令和配置
- 事务
- 1、计算机基础和linux发行版
- 替换空格:
- 设置mongoDB dos窗口数据库命令格式
- MyBatis的级联查询(association 进行分布查询)
- textarea高度自适应增高;chrome下clientHeight,offsetHeight和scrollHeight
- 租了一个月的腾讯云服务, 玩ubuntu爽爽哒
- MPI_Send和MPI_Recv(初识1)
- JDBC学习06-DBUtils下载和使用
- Python(四)
- Android 多语言支持
- uva116
- vue 路由组件