mybatis实现一对多关系《DeptEmp》
生活随笔
收集整理的這篇文章主要介紹了
mybatis实现一对多关系《DeptEmp》
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
庫表設計
CREATE TABLE `dept` (`deptno` int(9) NOT NULL COMMENT '部門編號',`dname` varchar(50) DEFAULT NULL COMMENT '部門名稱',`loc` varchar(50) DEFAULT NULL COMMENT '部門地址',PRIMARY KEY (`deptno`))COMMENT='部門信息表';insert ?into `dept`(`deptno`,`dname`,`loc`) values(20,'RESEARCH','DALLAS'),(30,'SALES','CHICAGO');CREATE TABLE `emp` (`empno` int(4) NOT NULL COMMENT '雇員編號',`ename` varchar(10) DEFAULT NULL COMMENT '雇員名稱',`job` varchar(9) DEFAULT NULL COMMENT '雇員崗位',`sal` float(7,2) DEFAULT NULL COMMENT '雇員工資',`dno` int(2) ?COMMENT '部門編號',PRIMARY KEY (`empno`))COMMENT='雇員表';insert ?into `emp`(`empno`,`ename`,`job`,`sal`,`dno`) values(7369,'SMITH','CLERK',800.00,20),(7370,'SCOTT','MANAGER',900.00,20),(7372,'LILY','CLERK',820.00,30),(7373,'LUCY','CLERK',830.00,30);--根據部門id查詢部門信息及雇員信息select d.*,e.* from dept d,emp e where ?d.deptno=20 and d.deptno=e.dno;--根據雇員id查詢雇員及部門信息select d.*,e.* from dept d,emp e where ?e.empno=7370 and d.deptno=e.dno;pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.henu</groupId><artifactId>mybatis03_onetomanyplus</artifactId><version>1.0-SNAPSHOT</version><packaging>jar</packaging><dependencies><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.4.5</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.6</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.12</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.10</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.16.20</version></dependency></dependencies></project>bean
使用lombok進行簡化開發? ? 如果遇到問題可以前往下方網站
https://blog.csdn.net/qq_41946557/article/details/100768770
?dao
?DeptDao.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="com.henu.dao.DeptDao"><resultMap id="DeptMap" type="Dept"><id property="deptno" column="deptno"></id><result property="dname" column="dname"></result><result property="loc" column="loc"></result><collection property="emps" ofType="Emp"><id property="empno" column="empno"></id><result property="ename" column="ename"></result><result property="job" column="job"></result><result property="sal" column="sal"></result><result property="dno" column="dno"></result></collection></resultMap><!--Dept findMessageByDeptno();--><select id="findMessageByDeptno" parameterType="Integer" resultMap="DeptMap">select d.*,e.* from dept d,emp e where d.deptno=#{deptno} and d.deptno=e.dno;</select></mapper>EmpDao.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="com.henu.dao.EmpDao"><resultMap id="EmpMap" type="Emp"><id property="empno" column="empno"></id><result property="ename" column="ename"></result><result property="job" column="job"></result><result property="sal" column="sal"></result><result property="dno" column="dno"></result><!--propert依舊是在實體類中所定義的名字 javaType類型 column:Emp外鍵--><association property="dept" javaType="Dept" column="dno" ><id property="deptno" column="deptno"></id><result property="dname" column="dname"></result><result property="loc" column="loc"></result></association></resultMap><!--Emp findMessageByEmpno();--><select id="findMessageByEmpno" parameterType="Integer" resultMap="EmpMap">select d.*,e.* from dept d,emp e where e.empno=#{empno} and d.deptno=e.dno;</select></mapper>SqlMapConfig.xml中一個小細節
測試類
package com.henu.test;import com.henu.bean.Dept; import com.henu.bean.Emp; import com.henu.dao.DeptDao; import com.henu.dao.EmpDao; 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.After; import org.junit.Before; import org.junit.Test;import java.io.IOException; import java.io.InputStream; import java.util.List;/*** @author George* @description**/ public class DaoTest {InputStream is;SqlSessionFactoryBuilder builder;SqlSessionFactory factory;SqlSession sqlSession;@Beforepublic void init() throws IOException {is = Resources.getResourceAsStream("SqlMapConfig.xml");builder = new SqlSessionFactoryBuilder();factory = builder.build(is);sqlSession = factory.openSession();}@Testpublic void findMessageByDeptno(){DeptDao deptDao = sqlSession.getMapper(DeptDao.class);List<Dept> depts = deptDao.findMessageByDeptno(20);for (Dept dept : depts) {System.out.println(dept);System.out.println(dept.getEmps());}}@Testpublic void findMessageByEmpno(){EmpDao empDao = sqlSession.getMapper(EmpDao.class);Emp emp = empDao.findMessageByEmpno(7370);System.out.println(emp);}@Afterpublic void close() throws IOException {sqlSession.close();is.close();}}?
總結
以上是生活随笔為你收集整理的mybatis实现一对多关系《DeptEmp》的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用Lombok简化开发及无效解决方案
- 下一篇: mybatis----#与$区别