1. 程式人生 > >【MyBatis】-----【MyBatis】--CURD---表級聯系【一對一】

【MyBatis】-----【MyBatis】--CURD---表級聯系【一對一】

去除 style print alt 得到 tag ack clas return

技術分享

一、核心配置文件

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 3 "http://mybatis.org/dtd/mybatis-3-config.dtd">
 4 <configuration>
 5      <!-- 最開始加載引用db.properties文件 -->
 6     <properties resource="db.properties"/>
7 <!-- 取別名 以下情況別名為類名 --> 8 <typeAliases> 9 <package name="com.myBatis.entity"/> 10 </typeAliases> 11 <!-- 12 development : 開發模式 13 work : 工作模式 14 --> 15 <environments default="development"> 16 <
environment id="development"> 17 <transactionManager type="JDBC" /> 18 <!-- 配置數據庫連接信息 --> 19 <dataSource type="POOLED"> 20 <property name="driver" value="${driver}" /> 21 <property name="url" value="${url}"
/> 22 <property name="username" value="${username}" /> 23 <property name="password" value="${password}" /> 24 </dataSource> 25 </environment> 26 </environments> 27 <!-- 引用映射文件 --> 28 <mappers > 29 <mapper resource="com/myBatis/mapper/classesMapper.xml"/> 30 </mappers> 31 </configuration>

二、實體類

  2.1Teacher

 1 package com.myBatis.entity;
 2 
 3 public class Teacher {
 4     // 定義實體類的屬性,與teacher表中的字段對應
 5     private int id; // id===>t_id
 6     private String name; // name===>t_name
 7     public int getId() {
 8         return id;
 9     }
10     public void setId(int id) {
11         this.id = id;
12     }
13     public String getName() {
14         return name;
15     }
16     public void setName(String name) {
17         this.name = name;
18     }
19     @Override
20     public String toString() {
21         return "Teacher [id=" + id + ", name=" + name + "]";
22     }
23     
24     
25 }

2.2Classes

 1 package com.myBatis.entity;
 2 
 3 public class Classes {
 4     private int id; // id===>c_id
 5     private String name; // name===>c_name
 6     /**
 7      * class表中有一個teacher_id字段,所以在Classes類中定義一個teacher屬性,
 8      * 用於維護teacher和class之間的一對一關系,通過這個teacher屬性就可以知道這個班級是由哪個老師負責的
 9      */
10     private Teacher teacher;
11     public int getId() {
12         return id;
13     }
14     public void setId(int id) {
15         this.id = id;
16     }
17     public String getName() {
18         return name;
19     }
20     public void setName(String name) {
21         this.name = name;
22     }
23     public Teacher getTeacher() {
24         return teacher;
25     }
26     public void setTeacher(Teacher teacher) {
27         this.teacher = teacher;
28     }
29     @Override
30     public String toString() {
31         return "Classes [id=" + id + ", name=" + name + ", teacher=" + teacher + "]";
32     }
33     
34 }

三、映射文件

teacherMapper.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
 3 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 4     <!-- 
 5     為這個mapper指定一個唯一的namespace,namespace的值習慣上設置成包名+sql映射文件名,
 6     這樣就能夠保證namespace的值是唯一的 
 7     -->
 8     <mapper namespace="com.myBatis.mapper.teacherMapper">
 9         <!-- 根據id查詢得到一個user對象 -->
10         <select id="getteacher" parameterType="int" resultType="Teacher">
11             select * from teacher where id=#{id}
12         </select>
13         
14     </mapper>
15     

classesMapper.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
 3 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 4     <!-- 
 5     為這個mapper指定一個唯一的namespace,namespace的值習慣上設置成包名+sql映射文件名,
 6     這樣就能夠保證namespace的值是唯一的 
 7     -->
 8     <mapper namespace="com.myBatis.mapper.classesMapper">
 9     <!-- 嵌套結果:使用嵌套結果映射來處理重復的聯合結果的子集
10              封裝聯表查詢的數據(去除重復的數據) 
11              根據id查詢得到一個user對象 -->
12         <select id="getclassess" parameterType="int" resultMap="ClassResultMap">
13              select * from classes c, teacher t where c.t_id=t.t_id and c.c_id=#{id}
14         </select>
15         <!-- 使用resultMap映射實體類和字段之間的一一對應關系 -->
16         <resultMap type="Classes" id="ClassResultMap">
17             <id property="id" column="c_id"/>
18             <result property="name" column="c_name"/>
19             <association property="teacher" javaType="Teacher">
20                 <id property="id" column="t_id"/>
21                 <result property="name" column="t_name"/>
22             </association>
23         </resultMap>
24         
25     </mapper>
26     

四、測試類

 1 package myBatisTest;
 2 import org.apache.ibatis.session.SqlSession;
 3 import org.junit.Test;
 4 
 5 import com.myBatis.entity.Classes;
 6 import com.myBatis.util.myBtaisUtil;
 7 
 8 public class TestUser {
 9     /**
10      * 
11     //修改
12     @Test
13     public void testUpdateUser() {
14         SqlSession sqlSession=myBtaisUtil.getsqlSession();
15         //先查找
16          String select = "com.myBatis.mapper.userMapper.xml.getUser";
17          EUser  user = sqlSession.selectOne(select, 7);
18          System.out.println(user);
19          //再修改
20         user.setName("改啦7777");
21         user.setAge(50);
22         String update = "com.myBatis.mapper.userMapper.xml.updateUser";
23         int i = sqlSession.update(update, user);
24          System.out.println(i);
25          EUser  user1= sqlSession.selectOne(select, 7);
26          System.out.println(user1);
27     }
28     
29 
30     //添加
31     @Test
32     public void testAddUser() {
33         SqlSession sqlSession=myBtaisUtil.getsqlSession();
34          String add = "com.myBatis.mapper.userMapper.xml.addUser";
35          EUser user = new EUser();
36         user.setName("用戶孤傲蒼狼");
37         user.setAge(20);
38         int i = sqlSession.insert(add, user);
39          System.out.println(i);
40     }
41     //刪除
42     @Test
43     public void testDeleteUser() {
44         SqlSession sqlSession=myBtaisUtil.getsqlSession();
45         String delete = "com.myBatis.mapper.userMapper.xml.deleteUser";
46         int i= sqlSession.delete(delete, 6);
47         System.out.println(i);
48     }
49      */
50     //查詢
51     @Test
52     public void testGetUser() {
53         SqlSession sqlSession=myBtaisUtil.getsqlSession();
54         String select = "com.myBatis.mapper.classesMapper.getclassess";
55         Classes classes = sqlSession.selectOne(select, 1);
56         System.out.println(classes);
57     }
58 }

參考:MyBatis學習總結(五)——實現關聯表查詢

【MyBatis】-----【MyBatis】--CURD---表級聯系【一對一】