mybatis之一对一关联
MapperAsso.xml
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE mapper 3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 5 6 <mapper namespace="bean.User"> 7 <!--一对一关联--> 8 <select id="selectOneAssoObj" parameterType="int" resultMap="OneAssoObjRM"> 9 select * from user where id = #{id} 10 </select> 11 <resultMap type="association.AssoObj" id="OneAssoObjRM"> 12 <result property="id" column="id"/> 13 <result property="name" column="name"/> 14 <result property="age" column="age"/> 15 <association property="salary" column="name" select="selectOneSalary"/> 16 <!--一对多关联配置备注--> 17 <!--<collection property="salarys" ofType="bean.Salary" column="name" select="selectFewSalarys">--> 18 </resultMap> 19 20 <select id="selectOneSalary" parameterType="String" resultType="bean.Salary"> 21 select * from salary where name = #{name} 22 </select> 23 24 <!--id:名称; parameterType传入参数类型; resultType:返回数据类型--> 25 <select id="selectOneUser" parameterType="int" resultType="bean.User"> 26 select * from user where id = #{id} 27 </select> 28 29 <!--批量查询--> 30 <select id="selectAllUser" resultMap="userList"> 31 select * from user 32 </select> 33 <resultMap type="first.UserBean" id="userList"> 34 <result property="id" column="id"/> 35 <result property="name" column="name"/> 36 <result property="age" column="age"/> 37 </resultMap> 38 39 40 </mapper>
AssoObj.java
1 package association; 2 3 import bean.Salary; 4 5 /** 6 * 数据封装类 7 * user class with Salary object 8 * 一对一关联Javabean 9 */ 10 public class AssoObj { 11 private int id; 12 private String name; 13 private String age; 14 private Salary salary; 15 16 public AssoObj() { 17 18 } 19 20 public AssoObj(String name, String age) { 21 this.name = name; 22 this.age = age; 23 } 24 25 public AssoObj(int id, String name, String age, Salary salary) { 26 this.id = id; 27 this.name = name; 28 this.age = age; 29 this.salary = salary; 30 } 31 32 public String getName() { 33 return name; 34 } 35 36 public void setName(String name) { 37 this.name = name; 38 } 39 40 public String getAge() { 41 return age; 42 } 43 44 public void setAge(String age) { 45 this.age = age; 46 } 47 48 public int getId() { 49 return id; 50 } 51 52 public void setId(int id) { 53 this.id = id; 54 } 55 56 public Salary getSalary() { 57 return salary; 58 } 59 60 public void setSalary(Salary salary) { 61 this.salary = salary; 62 } 63 64 @Override 65 public String toString() { 66 return "AssoObj{id:" + id + "; 姓名:" + name + 67 "; 年龄:" + age + "; Salary对象:" + salary + "}"; 68 } 69 }
TestAsso.java
1 package association; 2 3 import bean.Salary; 4 import bean.User; 5 import bean.UserSalary; 6 import first.UserBean; 7 import org.apache.ibatis.io.Resources; 8 import org.apache.ibatis.session.SqlSession; 9 import org.apache.ibatis.session.SqlSessionFactory; 10 import org.apache.ibatis.session.SqlSessionFactoryBuilder; 11 import org.junit.After; 12 import org.junit.Before; 13 import org.junit.Ignore; 14 import org.junit.Test; 15 import zhujie.UserMapperInterface; 16 17 import java.io.IOException; 18 import java.io.InputStream; 19 import java.util.List; 20 21 /* 22 * 一对一关联举例 23 * 24 * */ 25 public class TestAsso { 26 String resource = "mybatis-config-assosciation.xml"; 27 SqlSessionFactory sqlSessionFactory = null; 28 SqlSession session = null; 29 30 @Before 31 public void before() { 32 // System.out.println("Before"); 33 try { 34 InputStream inputStream = Resources.getResourceAsStream(resource); 35 // 创建工厂 36 sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); 37 // 创建session对象 38 session = sqlSessionFactory.openSession(); 39 40 } catch (IOException e) { 41 e.printStackTrace(); 42 } 43 } 44 45 @After 46 public void close() { 47 session.close(); 48 // System.out.println("After"); 49 } 50 51 // 一对一关联测试用例 52 @Test 53 public void testSelectOneAssoObj() { 54 AssoObj assoObj = session.selectOne("bean.User.selectOneAssoObj", 1); 55 System.out.println("查询单个AssoObj:" + assoObj); 56 } 57 58 @Test 59 public void testSelectOneUser() { 60 User user = session.selectOne("bean.User.selectOneUser", 1); 61 System.out.println("查询单个User:" + user); 62 } 63 64 @Test 65 public void testSelectAllUser() { 66 List<User> listUser = session.selectList("bean.User.selectAllUser"); 67 System.out.println("记录个数:" + listUser.size()); 68 System.out.println(listUser); 69 } 70 71 @Test 72 public void testSelectOneSalary() { 73 Salary salary = session.selectOne("bean.User.selectOneSalary", "Tom"); 74 System.out.println("查询单个Salary:" + salary); 75 } 76 77 78 }
mybatis-config-assosciation.xml
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE configuration 3 PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-config.dtd"> 5 <configuration> 6 <!--从外部配置文件导入jdbc信息--> 7 <properties resource="jdbc.properties"></properties> 8 9 <environments default="development"> 10 <environment id="development"> 11 <transactionManager type="JDBC"/> 12 <dataSource type="POOLED"> 13 <property name="driver" value="${driver}"/> 14 <property name="url" value="${url}"/> 15 <property name="username" value="${username}"/> 16 <property name="password" value="${password}"/> 17 </dataSource> 18 </environment> 19 </environments> 20 21 <!--指定映射资源文件--> 22 <mappers> 23 <mapper resource="association/MapperAsso.xml"/> 24 25 </mappers> 26 </configuration>