浏览代码

mybatis动态sql和高级查询和懒加载

guyanqing 2 年之前
父节点
当前提交
41812dde67
共有 37 个文件被更改,包括 1003 次插入44 次删除
  1. 41 34
      04maven/mybatis/.idea/workspace.xml
  2. 62 0
      04maven/mybatis/src/main/java/com/sf/entity/Department.java
  3. 76 0
      04maven/mybatis/src/main/java/com/sf/entity/Employee.java
  4. 49 0
      04maven/mybatis/src/main/java/com/sf/entity/TbKey.java
  5. 38 0
      04maven/mybatis/src/main/java/com/sf/entity/TbLock.java
  6. 31 0
      04maven/mybatis/src/main/java/com/sf/mapper/DepartmentMapper.java
  7. 22 0
      04maven/mybatis/src/main/java/com/sf/mapper/EmployeeMapper.java
  8. 26 0
      04maven/mybatis/src/main/java/com/sf/mapper/TbKeyMapper.java
  9. 26 0
      04maven/mybatis/src/main/java/com/sf/mapper/UserMapper.java
  10. 65 0
      04maven/mybatis/src/main/resources/DepartmentMapper.xml
  11. 35 0
      04maven/mybatis/src/main/resources/EmployeeMapper.xml
  12. 43 0
      04maven/mybatis/src/main/resources/TbKeyMapper.xml
  13. 50 0
      04maven/mybatis/src/main/resources/UserMapper.xml
  14. 1 1
      04maven/mybatis/src/main/resources/db.properties
  15. 9 4
      04maven/mybatis/src/main/resources/mybatis-config.xml
  16. 61 0
      04maven/mybatis/src/test/java/com/sf/mapper/DepartmentMapperTest.java
  17. 43 0
      04maven/mybatis/src/test/java/com/sf/mapper/EmployeeMapperTest.java
  18. 29 0
      04maven/mybatis/src/test/java/com/sf/mapper/TbKeyMapperTest.java
  19. 93 0
      04maven/mybatis/src/test/java/com/sf/mapper/UserMapper2Test.java
  20. 65 0
      04maven/mybatis/target/classes/DepartmentMapper.xml
  21. 35 0
      04maven/mybatis/target/classes/EmployeeMapper.xml
  22. 43 0
      04maven/mybatis/target/classes/TbKeyMapper.xml
  23. 50 0
      04maven/mybatis/target/classes/UserMapper.xml
  24. 二进制
      04maven/mybatis/target/classes/com/sf/entity/Department.class
  25. 二进制
      04maven/mybatis/target/classes/com/sf/entity/Employee.class
  26. 二进制
      04maven/mybatis/target/classes/com/sf/entity/TbKey.class
  27. 二进制
      04maven/mybatis/target/classes/com/sf/entity/TbLock.class
  28. 二进制
      04maven/mybatis/target/classes/com/sf/mapper/DepartmentMapper.class
  29. 二进制
      04maven/mybatis/target/classes/com/sf/mapper/EmployeeMapper.class
  30. 二进制
      04maven/mybatis/target/classes/com/sf/mapper/TbKeyMapper.class
  31. 二进制
      04maven/mybatis/target/classes/com/sf/mapper/UserMapper.class
  32. 1 1
      04maven/mybatis/target/classes/db.properties
  33. 9 4
      04maven/mybatis/target/classes/mybatis-config.xml
  34. 二进制
      04maven/mybatis/target/test-classes/com/sf/mapper/DepartmentMapperTest.class
  35. 二进制
      04maven/mybatis/target/test-classes/com/sf/mapper/EmployeeMapperTest.class
  36. 二进制
      04maven/mybatis/target/test-classes/com/sf/mapper/TbKeyMapperTest.class
  37. 二进制
      04maven/mybatis/target/test-classes/com/sf/mapper/UserMapper2Test.class

+ 41 - 34
04maven/mybatis/.idea/workspace.xml

@@ -5,23 +5,30 @@
   </component>
   <component name="ChangeListManager">
     <list default="true" id="ce9a7213-3ec1-4f41-8ade-c4d87d022933" name="Changes" comment="">
-      <change afterPath="$PROJECT_DIR$/src/main/java/com/sf/entity/Book.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/src/main/java/com/sf/mapper/BookMapper.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/src/main/java/com/sf/mapper/UserMapper2.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/src/main/resources/BookMapper.xml" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/src/main/resources/db.properties" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/src/main/resources/log4j.properties" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/src/test/java/com/sf/mapper/BookMapperTest.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/src/test/java/com/sf/mapper/UserMapper2Test.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../maven-jetty-web/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/../maven-jetty-web/.idea/workspace.xml" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/sf/entity/Department.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/sf/entity/Employee.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/sf/entity/TbKey.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/sf/entity/TbLock.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/sf/mapper/DepartmentMapper.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/sf/mapper/EmployeeMapper.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/sf/mapper/TbKeyMapper.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/resources/DepartmentMapper.xml" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/resources/EmployeeMapper.xml" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/resources/TbKeyMapper.xml" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/test/java/com/sf/mapper/DepartmentMapperTest.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/test/java/com/sf/mapper/EmployeeMapperTest.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/test/java/com/sf/mapper/TbKeyMapperTest.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/pom.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/sf/mapper/UserMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/sf/mapper/UserMapper.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/src/main/resources/UserMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/UserMapper.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/resources/db.properties" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/db.properties" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/src/main/resources/mybatis-config.xml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/mybatis-config.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/test/java/com/sf/AppTest.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/test/java/com/sf/AppTest.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/test/java/com/sf/mapper/UserMapper2Test.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/test/java/com/sf/mapper/UserMapper2Test.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/target/classes/UserMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/UserMapper.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/sf/mapper/UserMapper.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/sf/mapper/UserMapper.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/classes/db.properties" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/db.properties" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/target/classes/mybatis-config.xml" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/mybatis-config.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/target/test-classes/com/sf/AppTest.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/com/sf/AppTest.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/test-classes/com/sf/mapper/UserMapper2Test.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/com/sf/mapper/UserMapper2Test.class" afterDir="false" />
     </list>
     <option name="SHOW_DIALOG" value="false" />
     <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -77,8 +84,8 @@
       <recent name="com.sf.mapper" />
     </key>
   </component>
-  <component name="RunManager" selected="JUnit.BookMapperTest.getBookListWithIdorNameOrPrice3">
-    <configuration name="BookMapperTest.getBookInfo" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
+  <component name="RunManager" selected="JUnit.DepartmentMapperTest.getDepartmentInfoWithEmployee2">
+    <configuration name="DepartmentMapperTest.getDepartmentInfoWithEmployee" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
       <module name="mybatis" />
       <extension name="coverage">
         <pattern>
@@ -87,14 +94,14 @@
         </pattern>
       </extension>
       <option name="PACKAGE_NAME" value="com.sf.mapper" />
-      <option name="MAIN_CLASS_NAME" value="com.sf.mapper.BookMapperTest" />
-      <option name="METHOD_NAME" value="getBookInfo" />
+      <option name="MAIN_CLASS_NAME" value="com.sf.mapper.DepartmentMapperTest" />
+      <option name="METHOD_NAME" value="getDepartmentInfoWithEmployee" />
       <option name="TEST_OBJECT" value="method" />
       <method v="2">
         <option name="Make" enabled="true" />
       </method>
     </configuration>
-    <configuration name="BookMapperTest.getBookListWithIdorNameOrPrice" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
+    <configuration name="DepartmentMapperTest.getDepartmentInfoWithEmployee2" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
       <module name="mybatis" />
       <extension name="coverage">
         <pattern>
@@ -103,14 +110,14 @@
         </pattern>
       </extension>
       <option name="PACKAGE_NAME" value="com.sf.mapper" />
-      <option name="MAIN_CLASS_NAME" value="com.sf.mapper.BookMapperTest" />
-      <option name="METHOD_NAME" value="getBookListWithIdorNameOrPrice" />
+      <option name="MAIN_CLASS_NAME" value="com.sf.mapper.DepartmentMapperTest" />
+      <option name="METHOD_NAME" value="getDepartmentInfoWithEmployee2" />
       <option name="TEST_OBJECT" value="method" />
       <method v="2">
         <option name="Make" enabled="true" />
       </method>
     </configuration>
-    <configuration name="BookMapperTest.getBookListWithIdorNameOrPrice2" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
+    <configuration name="EmployeeMapperTest.getEmployeeinfo" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
       <module name="mybatis" />
       <extension name="coverage">
         <pattern>
@@ -119,14 +126,14 @@
         </pattern>
       </extension>
       <option name="PACKAGE_NAME" value="com.sf.mapper" />
-      <option name="MAIN_CLASS_NAME" value="com.sf.mapper.BookMapperTest" />
-      <option name="METHOD_NAME" value="getBookListWithIdorNameOrPrice2" />
+      <option name="MAIN_CLASS_NAME" value="com.sf.mapper.EmployeeMapperTest" />
+      <option name="METHOD_NAME" value="getEmployeeinfo" />
       <option name="TEST_OBJECT" value="method" />
       <method v="2">
         <option name="Make" enabled="true" />
       </method>
     </configuration>
-    <configuration name="BookMapperTest.getBookListWithIdorNameOrPrice3" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
+    <configuration name="EmployeeMapperTest.getEmployeeinfoWithDepartment" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
       <module name="mybatis" />
       <extension name="coverage">
         <pattern>
@@ -135,14 +142,14 @@
         </pattern>
       </extension>
       <option name="PACKAGE_NAME" value="com.sf.mapper" />
-      <option name="MAIN_CLASS_NAME" value="com.sf.mapper.BookMapperTest" />
-      <option name="METHOD_NAME" value="getBookListWithIdorNameOrPrice3" />
+      <option name="MAIN_CLASS_NAME" value="com.sf.mapper.EmployeeMapperTest" />
+      <option name="METHOD_NAME" value="getEmployeeinfoWithDepartment" />
       <option name="TEST_OBJECT" value="method" />
       <method v="2">
         <option name="Make" enabled="true" />
       </method>
     </configuration>
-    <configuration name="BookMapperTest.updateBook" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
+    <configuration name="TbKeyMapperTest.getKeyWithLock" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
       <module name="mybatis" />
       <extension name="coverage">
         <pattern>
@@ -151,8 +158,8 @@
         </pattern>
       </extension>
       <option name="PACKAGE_NAME" value="com.sf.mapper" />
-      <option name="MAIN_CLASS_NAME" value="com.sf.mapper.BookMapperTest" />
-      <option name="METHOD_NAME" value="updateBook" />
+      <option name="MAIN_CLASS_NAME" value="com.sf.mapper.TbKeyMapperTest" />
+      <option name="METHOD_NAME" value="getKeyWithLock" />
       <option name="TEST_OBJECT" value="method" />
       <method v="2">
         <option name="Make" enabled="true" />
@@ -160,11 +167,11 @@
     </configuration>
     <recent_temporary>
       <list>
-        <item itemvalue="JUnit.BookMapperTest.getBookListWithIdorNameOrPrice3" />
-        <item itemvalue="JUnit.BookMapperTest.updateBook" />
-        <item itemvalue="JUnit.BookMapperTest.getBookListWithIdorNameOrPrice2" />
-        <item itemvalue="JUnit.BookMapperTest.getBookListWithIdorNameOrPrice" />
-        <item itemvalue="JUnit.BookMapperTest.getBookInfo" />
+        <item itemvalue="JUnit.DepartmentMapperTest.getDepartmentInfoWithEmployee2" />
+        <item itemvalue="JUnit.TbKeyMapperTest.getKeyWithLock" />
+        <item itemvalue="JUnit.EmployeeMapperTest.getEmployeeinfoWithDepartment" />
+        <item itemvalue="JUnit.EmployeeMapperTest.getEmployeeinfo" />
+        <item itemvalue="JUnit.DepartmentMapperTest.getDepartmentInfoWithEmployee" />
       </list>
     </recent_temporary>
   </component>
@@ -177,7 +184,7 @@
       <option name="presentableId" value="Default" />
       <updated>1689489421847</updated>
       <workItem from="1689489423797" duration="8067000" />
-      <workItem from="1689584772400" duration="20918000" />
+      <workItem from="1689584772400" duration="38786000" />
     </task>
     <servers />
   </component>

+ 62 - 0
04maven/mybatis/src/main/java/com/sf/entity/Department.java

@@ -0,0 +1,62 @@
+package com.sf.entity;
+
+
+import java.util.List;
+
+/**
+ * 映射部门表的实体类
+ */
+public class Department {
+    /**
+     * 部门id
+     */
+    private Integer deptId;
+    /**
+     * 部门名称
+     */
+    private String deptName;
+
+    private List<Employee> employees;
+
+    public Department() {
+    }
+
+    public Department(Integer deptId, String deptName, List<Employee> employees) {
+        this.deptId = deptId;
+        this.deptName = deptName;
+        this.employees = employees;
+    }
+
+    public Integer getDeptId() {
+        return deptId;
+    }
+
+    public void setDeptId(Integer deptId) {
+        this.deptId = deptId;
+    }
+
+    public String getDeptName() {
+        return deptName;
+    }
+
+    public void setDeptName(String deptName) {
+        this.deptName = deptName;
+    }
+
+    public List<Employee> getEmployees() {
+        return employees;
+    }
+
+    public void setEmployees(List<Employee> employees) {
+        this.employees = employees;
+    }
+
+    @Override
+    public String toString() {
+        return "Department{" +
+                "deptId=" + deptId +
+                ", deptName='" + deptName + '\'' +
+                ", employees=" + employees +
+                '}';
+    }
+}

+ 76 - 0
04maven/mybatis/src/main/java/com/sf/entity/Employee.java

@@ -0,0 +1,76 @@
+package com.sf.entity;
+
+/**
+ * 映射员工表的数据库实体类
+ */
+public class Employee {
+
+    /**
+     * 员工的id
+     */
+    private Integer empId;
+    /**
+     * 员工的名称
+     */
+    private String empName;
+    /**
+     * 工资
+     */
+    private Double salary;
+    /**
+     * 部门表
+     */
+    private Department department;
+
+    public Employee() {
+    }
+
+    public Employee(Integer empId, String empName, Double salary, Department department) {
+        this.empId = empId;
+        this.empName = empName;
+        this.salary = salary;
+        this.department = department;
+    }
+
+    public Integer getEmpId() {
+        return empId;
+    }
+
+    public void setEmpId(Integer empId) {
+        this.empId = empId;
+    }
+
+    public String getEmpName() {
+        return empName;
+    }
+
+    public void setEmpName(String empName) {
+        this.empName = empName;
+    }
+
+    public Double getSalary() {
+        return salary;
+    }
+
+    public void setSalary(Double salary) {
+        this.salary = salary;
+    }
+
+    public Department getDepartment() {
+        return department;
+    }
+
+    public void setDepartment(Department department) {
+        this.department = department;
+    }
+
+    @Override
+    public String toString() {
+        return "Employee{" +
+                "empId=" + empId +
+                ", empName='" + empName + '\'' +
+                ", salary=" + salary +
+                ", department=" + department +
+                '}';
+    }
+}

+ 49 - 0
04maven/mybatis/src/main/java/com/sf/entity/TbKey.java

@@ -0,0 +1,49 @@
+package com.sf.entity;
+
+public class TbKey {
+    private Integer id;
+    private String name;
+    private TbLock tbLock;
+
+    public TbKey() {
+    }
+
+    public TbKey(Integer id, String name, TbLock tbLock) {
+        this.id = id;
+        this.name = name;
+        this.tbLock = tbLock;
+    }
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public TbLock getTbLock() {
+        return tbLock;
+    }
+
+    public void setTbLock(TbLock tbLock) {
+        this.tbLock = tbLock;
+    }
+
+    @Override
+    public String toString() {
+        return "tbKey{" +
+                "id=" + id +
+                ", name='" + name + '\'' +
+                ", tbLock=" + tbLock +
+                '}';
+    }
+}

+ 38 - 0
04maven/mybatis/src/main/java/com/sf/entity/TbLock.java

@@ -0,0 +1,38 @@
+package com.sf.entity;
+
+public class TbLock {
+    private Integer id;
+    private String name;
+
+    public TbLock() {
+    }
+
+    public TbLock(Integer id, String name) {
+        this.id = id;
+        this.name = name;
+    }
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    @Override
+    public String toString() {
+        return "TbLock{" +
+                "id=" + id +
+                ", name='" + name + '\'' +
+                '}';
+    }
+}

+ 31 - 0
04maven/mybatis/src/main/java/com/sf/mapper/DepartmentMapper.java

@@ -0,0 +1,31 @@
+package com.sf.mapper;
+
+import com.sf.entity.Department;
+import com.sf.entity.Employee;
+
+public interface DepartmentMapper {
+
+    /*
+     * 根据部门ID查询部门详情,不需要将当前部门下的员工列表查出
+     */
+
+    Department getDepartmentInfo(Integer deptId);
+
+    /*
+     * 根据部门ID查询部门详情,需要将当前部门下的员工列表查询出来(方式一 一对多关联查询 单条SQL)
+     */
+
+    Department getDepartmentInfoWithEmployee(Integer deptId);
+
+    /**
+     * 通过多条sql语句进行查询结果
+     * @param deptId
+     * @return
+     */
+    Department getDepartmentInfoWithEmployee2(Integer deptId);
+
+    /**
+     * 根据部门id  查询员工的列表
+     */
+    Employee getEmployeeInfoByDeptId(Integer deptId);
+}

+ 22 - 0
04maven/mybatis/src/main/java/com/sf/mapper/EmployeeMapper.java

@@ -0,0 +1,22 @@
+package com.sf.mapper;
+
+import com.sf.entity.Employee;
+
+public interface EmployeeMapper {
+
+    /**
+     * 根据员工的id查询出员工列表
+     */
+
+    Employee getEmployeeinfo(Integer empId);
+
+
+    /**
+     * 根据员工的id查询出员工的列表并且查询出员工所在的部门
+     */
+
+    Employee getEmployeeinfoWithDepartment(Integer empId);
+
+
+
+}

+ 26 - 0
04maven/mybatis/src/main/java/com/sf/mapper/TbKeyMapper.java

@@ -0,0 +1,26 @@
+package com.sf.mapper;
+
+import com.sf.entity.TbKey;
+import com.sf.entity.TbLock;
+
+public interface TbKeyMapper {
+
+    /**
+     * 通过钥匙的id获取钥匙的信息已经锁信息
+     */
+
+    TbKey getKeyWithLock(Integer id);
+
+    /**
+     * 方式2  多条sql
+     * @param id
+     * @return
+     */
+    TbKey getKeyWithLock2(Integer id);
+
+    /**
+     * 通过钥匙id获取锁的信息
+     */
+
+    TbLock getTbLockTbLock(Integer lockId);
+}

+ 26 - 0
04maven/mybatis/src/main/java/com/sf/mapper/UserMapper.java

@@ -1,6 +1,7 @@
 package com.sf.mapper;
 
 import com.sf.entity.User;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -36,4 +37,29 @@ public interface UserMapper {
      */
 
     User getUserInfo(Integer userId);
+
+
+    /**
+     * 批量添加用户
+     */
+    void batchAddUsers(@Param("users") List<User> users);  //根据进行查询
+    void batchAddUsers2(List<User> users);   //根据类型进行匹配
+
+    /**
+     * 批量删除
+     */
+
+    void batchDeleteByIds(@Param("ids") List<Integer> ids);
+
+    /**
+     * 批量查询(格局userId进行批量查询)
+     */
+
+    List<User> batchGetUsers(@Param("ids") List<Integer> ids);
+
+    /**
+     * 批量更新
+     */
+
+    void batchUpdateUsers(@Param("users") List<User> users);
 }

+ 65 - 0
04maven/mybatis/src/main/resources/DepartmentMapper.xml

@@ -0,0 +1,65 @@
+<?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.sf.mapper.DepartmentMapper">
+
+    <select id="getDepartmentInfo" parameterType="integer" resultType="department">
+        select * from department where dept_id = #{deptId}
+    </select>
+
+<!--    getDepartmentInfoWithEmploye方法中的  map1  对应我们<resultMap>标签中的 id属性  type 映射结果的全类名
+column:对应我们数据库中的字段   property:对应我们java对象中的属性名
+<id>:映射字段中的id属性
+<result>:映射字段中的非id属性
+collection:一对多映射标签
+ ofType="employee" :一对多的属性名的类型的全类名
+
+-->
+
+        <resultMap id="map1" type="com.sf.entity.Department">
+            <id column="dept_id" property="deptId"></id>
+            <result column="dept_name" property="deptName"></result>
+            <collection property="employees" ofType="employee">
+                <id column="emp_id" property="empId"></id>
+                <result column="emp_name" property="empName"></result>
+                <result column="salary" property="salary"></result>
+            </collection>
+        </resultMap>
+
+
+    <select id="getDepartmentInfoWithEmployee" parameterType="integer" resultMap="map1">
+        select * from department t1 , employee t2 where t1.dept_id = t2.dept_id and t1.dept_id = #{deptId}
+    </select>
+
+
+<!--
+<collection>标签中的  column="dept_id"  : 我们关联表的外键
+                     select : 是查询员工信息的接口
+ -->
+
+    <resultMap id="deptMap2" type="department">
+        <id column="dept_id" property="deptId"></id>
+        <result column="dept_name" property="deptName"></result>
+        <collection property="employees" ofType="employee" column="dept_id" select="com.sf.mapper.DepartmentMapper.getEmployeeInfoByDeptId">
+            <id column="emp_id" property="empId"></id>
+            <result column="emp_name" property="empName"></result>
+            <result column="salary" property="salary"></result>
+        </collection>
+     </resultMap>
+
+<!--    分为俩步骤:
+1.根据dept_id查询部门信息
+2.根据的dept_id查询员工的信息
+-->
+
+
+    <select id="getDepartmentInfoWithEmployee2" parameterType="integer" resultMap="deptMap2">
+        select * from department  where dept_id = #{deptId}
+    </select>
+
+    <select id="getEmployeeInfoByDeptId" parameterType="integer" resultType="employee">
+        select * from employee where dept_id  = #{deptId}
+    </select>
+
+</mapper>

+ 35 - 0
04maven/mybatis/src/main/resources/EmployeeMapper.xml

@@ -0,0 +1,35 @@
+<?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.sf.mapper.EmployeeMapper">
+
+    <select id="getEmployeeinfo" parameterType="integer" resultType="employee">
+        select * from employee where emp_id = #{empId}
+    </select>
+
+<!--
+一对多用  <collection>
+多对一用  <association>   javaType  是映射实体类的全类名
+resultMap="map2"  <====>    <resultMap id="map2">     一一对应
+ -->
+    
+    <resultMap id="map2" type="employee">
+        <id column="emp_id" property="empId"></id>
+        <result column="emp_name" property="empName"></result>
+        <result column="salary" property="salary"></result>
+        <association property="department" javaType="department">
+            <id column="dept_id" property="deptId"></id>
+            <result column="dept_name" property="deptName"></result>
+        </association>
+     </resultMap>
+    
+    <select id="getEmployeeinfoWithDepartment" parameterType="integer" resultMap="map2">
+        select *
+        from employee t1,
+             department t2
+        where t1.dept_id = t2.dept_id 
+        and t1.emp_id = #{empId};
+    </select>
+
+</mapper>

+ 43 - 0
04maven/mybatis/src/main/resources/TbKeyMapper.xml

@@ -0,0 +1,43 @@
+<?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.sf.mapper.TbKeyMapper">
+
+    <resultMap id="tbKeyMap1" type="tbKey">
+        <id column="id" property="id"></id>
+        <result column="name" property="name"></result>
+        <association property="tbLock" javaType="tbLock">
+            <id column="id" property="id"></id>
+            <result column="name" property="name"></result>
+        </association>
+    </resultMap>
+
+
+    <select id="getKeyWithLock" parameterType="integer" resultMap="tbKeyMap1">
+        select * from tb_key t1 , tb_lock t2 where t1.lock_id = t2.id and t1.id = #{id}
+    </select>
+
+
+    <resultMap id="tbKeyMap2" type="tbKey">
+        <id column="id" property="id"></id>
+        <result column="name" property="name"></result>
+        <association property="tbLock" javaType="tbLock" column="lock_id" select="com.sf.mapper.TbKeyMapper.getTbLockTbLock">
+            <id column="id" property="id"></id>
+            <result column="name" property="name"></result>
+        </association>
+    </resultMap>
+
+
+    <select id="getKeyWithLock2" parameterType="integer" resultMap="tbKeyMap2">
+        select * from tb_key where id = #{id}
+    </select>
+
+    <select id="getTbLockTbLock" parameterType="integer" resultType="tbLock">
+        select * from tb_lock where id = #{lockId}
+    </select>
+
+
+
+
+</mapper>

+ 50 - 0
04maven/mybatis/src/main/resources/UserMapper.xml

@@ -45,4 +45,54 @@ select user_id , user_name ,create_time from user
     </select>
 
 
+<!--    批量添加-->
+    <insert id="batchAddUsers" parameterType="user">
+        insert into user (user_id,user_name,create_time)  VALUES
+          <foreach collection="users" item="item" separator=",">
+             (#{item.userId},#{item.userName},#{item.createTime})
+          </foreach>
+    </insert>
+
+<!--    批量添加2  根据类型进行匹配-->
+
+    <insert id="batchAddUsers2" parameterType="user">
+        insert into user (user_id,user_name,create_time)  VALUES
+          <foreach collection="list" separator="," item="item">
+        (#{item.userId},#{item.userName},#{item.createTime})
+         </foreach>
+    </insert>
+
+<!--    批量删除-->
+        <delete id="batchDeleteByIds" parameterType="integer">
+            delete from user where user_id in
+                             <foreach collection="ids" item="item" open="(" separator="," close=")">
+                                 #{item}
+                             </foreach>
+        </delete>
+
+<!--    批量查询-->
+    <select id="batchGetUsers" parameterType="integer" resultType="user">
+        select * from user where user_id in
+                           <foreach collection="ids" item="item" open="(" separator="," close=")">
+                               #{item}
+                           </foreach>
+    </select>
+
+
+<!--    批量更新-->
+    <update id="batchUpdateUsers" parameterType="user">
+        <foreach collection="users" item="item" separator=";">
+            update user
+                <set>
+            <if test="item.userId != null">
+                user_name = #{item.userName} ,
+            </if>
+                <if test="item.createTime != null">
+                    create_time = #{item.createTime}
+                </if>
+                </set>
+        where user_id = #{item.userId}
+        </foreach>
+    </update>
+
 </mapper>

+ 1 - 1
04maven/mybatis/src/main/resources/db.properties

@@ -1,3 +1,3 @@
 jdbc_user=root
 jdbc_password=root
-jdbc_url=jdbc:mysql://127.0.0.1:3306/mybatis2?characterEncoding=utf-8
+jdbc_url=jdbc:mysql://127.0.0.1:3306/mybatis2?characterEncoding=utf-8&allowMultiQueries=true

+ 9 - 4
04maven/mybatis/src/main/resources/mybatis-config.xml

@@ -12,12 +12,16 @@ ${xxxx}:去获取外部资源文件中的属性值
     <settings>
         <!--        开启驼峰命名-->
         <setting name="mapUnderscoreToCamelCase" value="true"/>
+        <!--关闭即使加载-->
+        <setting name="aggressiveLazyLoading" value="false"/>
+        <!--        开启懒加载-->
+        <setting name="lazyLoadingEnabled" value="true"/>
+
 
     </settings>
 
     <typeAliases>
-        <typeAlias type="com.sf.entity.User" alias="user"></typeAlias>
-        <typeAlias type="com.sf.entity.Book" alias="book"></typeAlias>
+       <package name="com.sf.entity"/>
     </typeAliases>
 
 
@@ -40,7 +44,8 @@ ${xxxx}:去获取外部资源文件中的属性值
 <!--        通过注解的方式去操作数据库-->
         <mapper class="com.sf.mapper.UserMapper2"></mapper>
         <mapper resource="BookMapper.xml"></mapper>
-
-
+        <mapper resource="DepartmentMapper.xml"></mapper>
+        <mapper resource="EmployeeMapper.xml"></mapper>
+        <mapper resource="TbKeyMapper.xml"></mapper>
     </mappers>
 </configuration>

+ 61 - 0
04maven/mybatis/src/test/java/com/sf/mapper/DepartmentMapperTest.java

@@ -0,0 +1,61 @@
+package com.sf.mapper;
+
+import com.sf.entity.Department;
+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 java.io.IOException;
+import java.io.InputStream;
+
+import static org.junit.Assert.*;
+
+public class DepartmentMapperTest {
+
+    @Test
+    public void getDepartmentInfo() throws IOException {
+        InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
+        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
+        SqlSession sqlSession = sqlSessionFactory.openSession();
+        DepartmentMapper departmentMapper = sqlSession.getMapper(DepartmentMapper.class);
+        Department departmentInfo = departmentMapper.getDepartmentInfo(1000);
+        System.out.println(departmentInfo);
+        sqlSession.commit();
+        sqlSession.close();
+        inputStream.close();
+    }
+
+    /**
+     * 根据部门ID查询部门详情,需要将当前部门下的员工列表查询出来(方式一 一对多关联查询 单条SQL)
+     * @throws IOException
+     */
+
+    @Test
+    public void getDepartmentInfoWithEmployee() throws IOException {
+        InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
+        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
+        SqlSession sqlSession = sqlSessionFactory.openSession();
+        DepartmentMapper departmentMapper = sqlSession.getMapper(DepartmentMapper.class);
+        Department departmentInfo = departmentMapper.getDepartmentInfoWithEmployee(1000);
+        System.out.println(departmentInfo);
+        sqlSession.commit();
+        sqlSession.close();
+        inputStream.close();
+    }
+
+
+    @Test
+    public void getDepartmentInfoWithEmployee2() throws IOException {
+        InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
+        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
+        SqlSession sqlSession = sqlSessionFactory.openSession();
+        DepartmentMapper departmentMapper = sqlSession.getMapper(DepartmentMapper.class);
+        Department departmentInfo = departmentMapper.getDepartmentInfoWithEmployee2(1000);
+        System.out.println(departmentInfo.getDeptId());
+        sqlSession.commit();
+        sqlSession.close();
+        inputStream.close();
+    }
+}

+ 43 - 0
04maven/mybatis/src/test/java/com/sf/mapper/EmployeeMapperTest.java

@@ -0,0 +1,43 @@
+package com.sf.mapper;
+
+import com.sf.entity.Employee;
+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 java.io.IOException;
+import java.io.InputStream;
+
+import static org.junit.Assert.*;
+
+public class EmployeeMapperTest {
+
+    @Test
+    public void getEmployeeinfo() throws IOException {
+        InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
+        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
+        SqlSession sqlSession = sqlSessionFactory.openSession();
+        EmployeeMapper employeeMapper = sqlSession.getMapper(EmployeeMapper.class);
+        Employee employeeinfo = employeeMapper.getEmployeeinfo(1001);
+        System.out.println(employeeinfo);
+        sqlSession.commit();
+        sqlSession.close();
+        inputStream.close();
+    }
+
+    @Test
+    public void getEmployeeinfoWithDepartment() throws IOException {
+        InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
+        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
+        SqlSession sqlSession = sqlSessionFactory.openSession();
+        EmployeeMapper employeeMapper = sqlSession.getMapper(EmployeeMapper.class);
+        Employee employeeinfo = employeeMapper.getEmployeeinfoWithDepartment(1001);
+        System.out.println(employeeinfo);
+        sqlSession.commit();
+        sqlSession.close();
+        inputStream.close();
+
+    }
+}

+ 29 - 0
04maven/mybatis/src/test/java/com/sf/mapper/TbKeyMapperTest.java

@@ -0,0 +1,29 @@
+package com.sf.mapper;
+
+import com.sf.entity.TbKey;
+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 java.io.IOException;
+import java.io.InputStream;
+
+import static org.junit.Assert.*;
+
+public class TbKeyMapperTest {
+
+    @Test
+    public void getKeyWithLock() throws IOException {
+        InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
+        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
+        SqlSession sqlSession = sqlSessionFactory.openSession();
+        TbKeyMapper keyMapper = sqlSession.getMapper(TbKeyMapper.class);
+        TbKey keyWithLock = keyMapper.getKeyWithLock2(1003);
+        System.out.println(keyWithLock);
+        sqlSession.commit();
+        sqlSession.close();
+        inputStream.close();
+    }
+}

+ 93 - 0
04maven/mybatis/src/test/java/com/sf/mapper/UserMapper2Test.java

@@ -9,7 +9,9 @@ import org.junit.Test;
 
 import java.io.IOException;
 import java.io.InputStream;
+import java.util.ArrayList;
 import java.util.Date;
+import java.util.List;
 
 import static org.junit.Assert.*;
 
@@ -30,4 +32,95 @@ public class UserMapper2Test {
         sqlSession.close();
         inputStream.close();
     }
+
+
+    /**
+     * 测试批量添加
+     */
+    @Test
+    public void testBatchAddUsers() throws IOException {
+        InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
+        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
+        SqlSession sqlSession = sqlSessionFactory.openSession();
+        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
+//        创建user集合
+        List<User> userList = new ArrayList<>();
+//        对user进行赋值 用于测试
+        User user1 = new User(1009,"z3",new Date());
+        User user2 = new User(1010,"l4",new Date());
+        User user3 = new User(1011,"w5",new Date());
+        User user4 = new User(1012,"z6",new Date());
+//        讲user加入到集合中
+        userList.add(user1);
+        userList.add(user2);
+        userList.add(user3);
+        userList.add(user4);
+        userMapper.batchAddUsers2(userList);
+        sqlSession.commit();
+        sqlSession.close();
+        inputStream.close();
+    }
+
+    /**
+     * 批量删除
+     */
+    @Test
+    public void batchDeleteByIds() throws IOException {
+        InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
+        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
+        SqlSession sqlSession = sqlSessionFactory.openSession();
+        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
+        List<Integer> integerList = new ArrayList<>();
+        integerList.add(1009);
+        integerList.add(1010);
+        integerList.add(1011);
+        integerList.add(1012);
+        userMapper.batchDeleteByIds(integerList);
+        System.out.println(integerList);
+        sqlSession.commit();
+        sqlSession.close();
+        inputStream.close();
+    }
+
+    /**
+     * 批量查询
+     */
+    @Test
+    public void test() throws IOException {
+        InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
+        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
+        SqlSession sqlSession = sqlSessionFactory.openSession();
+        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
+        List<Integer> integerList = new ArrayList<>();
+        integerList.add(1001);
+        integerList.add(1002);
+        integerList.add(1004);
+        integerList.add(1005);
+        List<User> list = userMapper.batchGetUsers(integerList);
+        System.out.println("查询结果================>"+list);
+        System.out.println(integerList);
+        sqlSession.commit();
+        sqlSession.close();
+        inputStream.close();
+    }
+
+
+    @Test
+    public void batchUpdateUsers() throws IOException {
+        InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
+        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
+        SqlSession sqlSession = sqlSessionFactory.openSession();
+        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
+        List<User> userList = new ArrayList<>();
+        User user1 = new User(1006,"l4999999",new Date());
+        User user2 = new User(1007,"z59999999",new Date());
+        User user3 = new User(1008,"z699999",new Date());
+        userList.add(user1);
+        userList.add(user2);
+        userList.add(user3);
+        userMapper.batchUpdateUsers(userList);
+        sqlSession.commit();
+        sqlSession.close();
+        inputStream.close();
+    }
 }

+ 65 - 0
04maven/mybatis/target/classes/DepartmentMapper.xml

@@ -0,0 +1,65 @@
+<?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.sf.mapper.DepartmentMapper">
+
+    <select id="getDepartmentInfo" parameterType="integer" resultType="department">
+        select * from department where dept_id = #{deptId}
+    </select>
+
+<!--    getDepartmentInfoWithEmploye方法中的  map1  对应我们<resultMap>标签中的 id属性  type 映射结果的全类名
+column:对应我们数据库中的字段   property:对应我们java对象中的属性名
+<id>:映射字段中的id属性
+<result>:映射字段中的非id属性
+collection:一对多映射标签
+ ofType="employee" :一对多的属性名的类型的全类名
+
+-->
+
+        <resultMap id="map1" type="com.sf.entity.Department">
+            <id column="dept_id" property="deptId"></id>
+            <result column="dept_name" property="deptName"></result>
+            <collection property="employees" ofType="employee">
+                <id column="emp_id" property="empId"></id>
+                <result column="emp_name" property="empName"></result>
+                <result column="salary" property="salary"></result>
+            </collection>
+        </resultMap>
+
+
+    <select id="getDepartmentInfoWithEmployee" parameterType="integer" resultMap="map1">
+        select * from department t1 , employee t2 where t1.dept_id = t2.dept_id and t1.dept_id = #{deptId}
+    </select>
+
+
+<!--
+<collection>标签中的  column="dept_id"  : 我们关联表的外键
+                     select : 是查询员工信息的接口
+ -->
+
+    <resultMap id="deptMap2" type="department">
+        <id column="dept_id" property="deptId"></id>
+        <result column="dept_name" property="deptName"></result>
+        <collection property="employees" ofType="employee" column="dept_id" select="com.sf.mapper.DepartmentMapper.getEmployeeInfoByDeptId">
+            <id column="emp_id" property="empId"></id>
+            <result column="emp_name" property="empName"></result>
+            <result column="salary" property="salary"></result>
+        </collection>
+     </resultMap>
+
+<!--    分为俩步骤:
+1.根据dept_id查询部门信息
+2.根据的dept_id查询员工的信息
+-->
+
+
+    <select id="getDepartmentInfoWithEmployee2" parameterType="integer" resultMap="deptMap2">
+        select * from department  where dept_id = #{deptId}
+    </select>
+
+    <select id="getEmployeeInfoByDeptId" parameterType="integer" resultType="employee">
+        select * from employee where dept_id  = #{deptId}
+    </select>
+
+</mapper>

+ 35 - 0
04maven/mybatis/target/classes/EmployeeMapper.xml

@@ -0,0 +1,35 @@
+<?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.sf.mapper.EmployeeMapper">
+
+    <select id="getEmployeeinfo" parameterType="integer" resultType="employee">
+        select * from employee where emp_id = #{empId}
+    </select>
+
+<!--
+一对多用  <collection>
+多对一用  <association>   javaType  是映射实体类的全类名
+resultMap="map2"  <====>    <resultMap id="map2">     一一对应
+ -->
+    
+    <resultMap id="map2" type="employee">
+        <id column="emp_id" property="empId"></id>
+        <result column="emp_name" property="empName"></result>
+        <result column="salary" property="salary"></result>
+        <association property="department" javaType="department">
+            <id column="dept_id" property="deptId"></id>
+            <result column="dept_name" property="deptName"></result>
+        </association>
+     </resultMap>
+    
+    <select id="getEmployeeinfoWithDepartment" parameterType="integer" resultMap="map2">
+        select *
+        from employee t1,
+             department t2
+        where t1.dept_id = t2.dept_id 
+        and t1.emp_id = #{empId};
+    </select>
+
+</mapper>

+ 43 - 0
04maven/mybatis/target/classes/TbKeyMapper.xml

@@ -0,0 +1,43 @@
+<?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.sf.mapper.TbKeyMapper">
+
+    <resultMap id="tbKeyMap1" type="tbKey">
+        <id column="id" property="id"></id>
+        <result column="name" property="name"></result>
+        <association property="tbLock" javaType="tbLock">
+            <id column="id" property="id"></id>
+            <result column="name" property="name"></result>
+        </association>
+    </resultMap>
+
+
+    <select id="getKeyWithLock" parameterType="integer" resultMap="tbKeyMap1">
+        select * from tb_key t1 , tb_lock t2 where t1.lock_id = t2.id and t1.id = #{id}
+    </select>
+
+
+    <resultMap id="tbKeyMap2" type="tbKey">
+        <id column="id" property="id"></id>
+        <result column="name" property="name"></result>
+        <association property="tbLock" javaType="tbLock" column="lock_id" select="com.sf.mapper.TbKeyMapper.getTbLockTbLock">
+            <id column="id" property="id"></id>
+            <result column="name" property="name"></result>
+        </association>
+    </resultMap>
+
+
+    <select id="getKeyWithLock2" parameterType="integer" resultMap="tbKeyMap2">
+        select * from tb_key where id = #{id}
+    </select>
+
+    <select id="getTbLockTbLock" parameterType="integer" resultType="tbLock">
+        select * from tb_lock where id = #{lockId}
+    </select>
+
+
+
+
+</mapper>

+ 50 - 0
04maven/mybatis/target/classes/UserMapper.xml

@@ -45,4 +45,54 @@ select user_id , user_name ,create_time from user
     </select>
 
 
+<!--    批量添加-->
+    <insert id="batchAddUsers" parameterType="user">
+        insert into user (user_id,user_name,create_time)  VALUES
+          <foreach collection="users" item="item" separator=",">
+             (#{item.userId},#{item.userName},#{item.createTime})
+          </foreach>
+    </insert>
+
+<!--    批量添加2  根据类型进行匹配-->
+
+    <insert id="batchAddUsers2" parameterType="user">
+        insert into user (user_id,user_name,create_time)  VALUES
+          <foreach collection="list" separator="," item="item">
+        (#{item.userId},#{item.userName},#{item.createTime})
+         </foreach>
+    </insert>
+
+<!--    批量删除-->
+        <delete id="batchDeleteByIds" parameterType="integer">
+            delete from user where user_id in
+                             <foreach collection="ids" item="item" open="(" separator="," close=")">
+                                 #{item}
+                             </foreach>
+        </delete>
+
+<!--    批量查询-->
+    <select id="batchGetUsers" parameterType="integer" resultType="user">
+        select * from user where user_id in
+                           <foreach collection="ids" item="item" open="(" separator="," close=")">
+                               #{item}
+                           </foreach>
+    </select>
+
+
+<!--    批量更新-->
+    <update id="batchUpdateUsers" parameterType="user">
+        <foreach collection="users" item="item" separator=";">
+            update user
+                <set>
+            <if test="item.userId != null">
+                user_name = #{item.userName} ,
+            </if>
+                <if test="item.createTime != null">
+                    create_time = #{item.createTime}
+                </if>
+                </set>
+        where user_id = #{item.userId}
+        </foreach>
+    </update>
+
 </mapper>

二进制
04maven/mybatis/target/classes/com/sf/entity/Department.class


二进制
04maven/mybatis/target/classes/com/sf/entity/Employee.class


二进制
04maven/mybatis/target/classes/com/sf/entity/TbKey.class


二进制
04maven/mybatis/target/classes/com/sf/entity/TbLock.class


二进制
04maven/mybatis/target/classes/com/sf/mapper/DepartmentMapper.class


二进制
04maven/mybatis/target/classes/com/sf/mapper/EmployeeMapper.class


二进制
04maven/mybatis/target/classes/com/sf/mapper/TbKeyMapper.class


二进制
04maven/mybatis/target/classes/com/sf/mapper/UserMapper.class


+ 1 - 1
04maven/mybatis/target/classes/db.properties

@@ -1,3 +1,3 @@
 jdbc_user=root
 jdbc_password=root
-jdbc_url=jdbc:mysql://127.0.0.1:3306/mybatis2?characterEncoding=utf-8
+jdbc_url=jdbc:mysql://127.0.0.1:3306/mybatis2?characterEncoding=utf-8&allowMultiQueries=true

+ 9 - 4
04maven/mybatis/target/classes/mybatis-config.xml

@@ -12,12 +12,16 @@ ${xxxx}:去获取外部资源文件中的属性值
     <settings>
         <!--        开启驼峰命名-->
         <setting name="mapUnderscoreToCamelCase" value="true"/>
+        <!--关闭即使加载-->
+        <setting name="aggressiveLazyLoading" value="false"/>
+        <!--        开启懒加载-->
+        <setting name="lazyLoadingEnabled" value="true"/>
+
 
     </settings>
 
     <typeAliases>
-        <typeAlias type="com.sf.entity.User" alias="user"></typeAlias>
-        <typeAlias type="com.sf.entity.Book" alias="book"></typeAlias>
+       <package name="com.sf.entity"/>
     </typeAliases>
 
 
@@ -40,7 +44,8 @@ ${xxxx}:去获取外部资源文件中的属性值
 <!--        通过注解的方式去操作数据库-->
         <mapper class="com.sf.mapper.UserMapper2"></mapper>
         <mapper resource="BookMapper.xml"></mapper>
-
-
+        <mapper resource="DepartmentMapper.xml"></mapper>
+        <mapper resource="EmployeeMapper.xml"></mapper>
+        <mapper resource="TbKeyMapper.xml"></mapper>
     </mappers>
 </configuration>

二进制
04maven/mybatis/target/test-classes/com/sf/mapper/DepartmentMapperTest.class


二进制
04maven/mybatis/target/test-classes/com/sf/mapper/EmployeeMapperTest.class


二进制
04maven/mybatis/target/test-classes/com/sf/mapper/TbKeyMapperTest.class


二进制
04maven/mybatis/target/test-classes/com/sf/mapper/UserMapper2Test.class