使用MyBatis(嵌套查询,嵌套结果)

1.创建2张表,建立主外键关系


2.建立实体类

[html]  view plain  copy
  1. package com.yw.test06;  
  2.   
  3.   
  4. public class Class  
  5. {  
  6.     private int id;  
  7.     private String name;  
  8.       
  9.       
  10.     public int getId()  
  11.     {  
  12.         return id;  
  13.     }  
  14.     public void setId(int id)  
  15.     {  
  16.         this.id = id;  
  17.     }  
  18.     public String getName()  
  19.     {  
  20.         return name;  
  21.     }  
  22.     public void setName(String name)  
  23.     {  
  24.         this.name = name;  
  25.     }  
  26.     @Override  
  27.     public String toString()  
  28.     {  
  29.         return "Class [id=" + id + "name=" + name + "]";  
  30.     }  
  31.       
  32.       
  33. }  

[html]  view plain  copy
  1. package com.yw.test06;  
  2.   
  3. public class Student  
  4. {  
  5.     private int id;  
  6.     private String name;  
  7.     private int age;  
  8.     private Class c;  
  9.       
  10.     public int getId()  
  11.     {  
  12.         return id;  
  13.     }  
  14.     public void setId(int id)  
  15.     {  
  16.         this.id = id;  
  17.     }  
  18.     public String getName()  
  19.     {  
  20.         return name;  
  21.     }  
  22.     public void setName(String name)  
  23.     {  
  24.         this.name = name;  
  25.     }  
  26.     public int getAge()  
  27.     {  
  28.         return age;  
  29.     }  
  30.     public void setAge(int age)  
  31.     {  
  32.         this.age = age;  
  33.     }  
  34.     public Class getC()  
  35.     {  
  36.         return c;  
  37.     }  
  38.     public void setC(Class c)  
  39.     {  
  40.         this.c = c;  
  41.     }  
  42.     @Override  
  43.     public String toString()  
  44.     {  
  45.         return "Student [id=" + id + "name=" + name + "age=" + age + "c=" + c + "]";  
  46.     }  
  47.   
  48.       
  49.       
  50. }  

3.修改配置文件

[html]  view plain  copy
  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.     <properties resource="config.properties">  
  7.     </properties>  
  8.     <typeAliases>  
  9.         <!-- <typeAlias type="com.yw.test06.StudentMapper" alias="Student" />  
  10.         <typeAlias type="com.yw.test06.ClassMapper" alias="Class" /> -->  
  11.         <package name="com.yw.test06"/>  
  12.     </typeAliases>  
  13.     <environments default="development">  
  14.         <environment id="development">  
  15.             <transactionManager type="JDBC" />  
  16.             <dataSource type="POOLED">  
  17.                 <property name="driver" value="${driver}" />  
  18.                 <property name="url" value="${url}" />  
  19.                 <property name="username" value="${username}" />  
  20.                 <property name="password" value="${password}" />  
  21.             </dataSource>  
  22.         </environment>  
  23.     </environments>  
  24.     <mappers>  
  25.         <!-- <mapper resource="org/mybatis/example/BlogMapper.xml"/> -->  
  26.         <mapper resource="com/yw/test06/StudentMapper.xml" />  
  27.     </mappers>  
  28.   
  29. </configuration>  

4.建立映射文件

1)嵌套查询

[html]  view plain  copy
  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="com.yw.test07.StudentMapper">  
  7.   
  8.     <select id="selectStudent" resultMap="studentResult">  
  9.         SELECT * FROM student s  
  10.         WHERE s.ID = #{id}  
  11.     </select>  
  12.     <resultMap type="Student" id="studentResult">  
  13.         <association property="c" column="c_id" javaType="Class"  
  14.             select="selectClass" />  
  15.     </resultMap>  
  16.   
  17.     <select id="selectClass" resultType="Class">  
  18.         SELECT * FROM class WHERE ID= #{id}  
  19.     </select>  
  20.   
  21. </mapper>  

2)嵌套结果
[html]  view plain  copy
  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="com.yw.test06.StudentMapper">  
  7.   
  8.       
  9.     <resultMap id="studentResult" type="com.yw.test06.Student">  
  10.         <id property="id" column="id"/>  
  11.         <result property="name"  column="name"/>  
  12.         <result property="age"  column="age"/>  
  13.   
  14.         <association property="c" resultMap="classResult"  
  15.             javaType="Class"></association>  
  16.   
  17.     </resultMap>  
  18.     <resultMap type="com.yw.test06.Class" id="classResult">  
  19.         <id property="id" column="id"/>  
  20.         <result property="name" column="name"/>  
  21.     </resultMap>  
  22.    
  23.     <select id="selectStudent" resultMap="studentResult">   
  24.         SELECT s.id,c.id,s.name,s.age,c.name from student s  left join class c on c.id=s.c_id where s.id=#{id}  
  25.     </select>  
  26.   
  27.   
  28.   
  29. </mapper>  

5.创建测试类

[html]  view plain  copy
  1. package com.yw.test06;  
  2.   
  3. import java.io.IOException;  
  4. import java.io.InputStream;  
  5.   
  6. import org.apache.ibatis.io.Resources;  
  7. import org.apache.ibatis.session.SqlSession;  
  8. import org.apache.ibatis.session.SqlSessionFactory;  
  9. import org.apache.ibatis.session.SqlSessionFactoryBuilder;  
  10.   
  11. public class Test01  
  12. {  
  13.     public static void main(String[] args) throws IOException  
  14.     {  
  15.           
  16.         String resource = "com/yw/test06/mybatis-config.xml";  
  17.         InputStream inputStream = Resources.getResourceAsStream(resource);  
  18.         SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);  
  19.           
  20.         SqlSession session = sqlSessionFactory.openSession(false);  
  21.         try {  
  22.           Student user = (Student) session.selectOne("com.yw.test06.StudentMapper.selectStudent", 1);  
  23.           System.out.println(user);           
  24.               
  25.         } finally {  
  26.           session.close();  
  27.         }  
  28.     }  
  29. }  

猜你喜欢

转载自blog.csdn.net/suchahaerkang/article/details/80262626