zoukankan      html  css  js  c++  java
  • mybatis的一对一

    1、配置文件

    db.properties

    db.driver=com.mysql.jdbc.Driver
    db.url=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf8
    db.username=root
    db.password=123456

    SqlMapConfig.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 
     7     <!-- 加载java的配置文件 -->
     8     <properties resource="config/db.properties"/>
     9     
    10     <!-- 配置mybatis的环境信息,与spring整合,该信息由spring来管理 -->
    11     <environments default="development">
    12         <environment id="development">
    13             <!-- 配置JDBC事务控制,由mybatis进行管理 -->
    14             <transactionManager type="JDBC"></transactionManager>
    15             <!-- 配置数据源,采用mybatis连接池 -->
    16             <dataSource type="POOLED">
    17                 <property name="driver" value="${db.driver}" />
    18                 <property name="url" value="${db.url}" />
    19                 <property name="username" value="${db.username}" />
    20                 <property name="password" value="${db.password}" />
    21             </dataSource>
    22         </environment>
    23     </environments>
    24 
    25     <!-- 加载映射文件 -->
    26     <mappers>
    27         <mapper resource="com/xiaostudy/oneTOone/mapper.xml" />
    28     </mappers>
    29     
    30 </configuration>

    mapper.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 <mapper namespace="com.xiaostudy.oneTOone.Mapper">
     6 
     7     <!-- ========================================================================================== -->
     8     <!-- 一对一映射之resultType,这种方法,数据库的字段要跟domain类的属性一致 -->
     9     <select id="findStudent" resultType="com.xiaostudy.oneTOone.Student" parameterType="int">
    10         select * from t_student where sid=#{sid}
    11     </select>
    12     <!-- ========================================================================================== -->
    13     
    14    <!-- ========================================================================================== -->
    15    <!-- 一对一之resultMap,这种方法,数据库字段和domain类的属性可以不一致 -->
    16     <select id="findOrdersAndStudentRstMap" resultMap="OrdersAndStudentRstMap" >
    17         select * from t_student s where s.sid=#{sid}
    18     </select>
    19     
    20     <!-- OrdersAndUserRstMap -->
    21     <resultMap type="com.xiaostudy.oneTOone.Student" id="OrdersAndStudentRstMap">
    22         <id column="sid" property="sid" />
    23         <result column="sname" property="sname" />
    24     </resultMap>
    25     <!-- ========================================================================================== -->
    26     
    27     <!-- ========================================================================================== -->
    28     <!-- 一对一之resultMap2 -->
    29     <select id="findOrdersAndSTRstMap" resultMap="OrdersAndSTRstMap">
    30         select * from t_student where sid=#{sid}
    31     </select>
    32 
    33     <resultMap type="com.xiaostudy.oneTOone.Student" id="OrdersAndSTRstMap">
    34         <id column="sid" property="sid"/>
    35         <result column="sname" property="sname"/>
    36         <association property="teacher" javaType="com.xiaostudy.oneTOone.Teacher">
    37             <id column="tid" property="tid"></id>
    38             <result column="tname" property="tname"/>
    39         </association>
    40     </resultMap>
    41    <!-- ========================================================================================== -->
    42     
    43     <!-- ========================================================================================== -->
    44     <!-- 一对一之resultMap3 -->
    45     <select id="findOrdersAndTeacher" resultMap="OrdersAndTeacher">
    46         select * from t_student s, t_teacher t where t.tid=s.sid and tid=#{tid}
    47     </select>
    48 
    49     <resultMap type="com.xiaostudy.oneTOone.Teacher" id="OrdersAndTeacher">
    50         <id column="tid" property="tid"/>
    51         <result column="tname" property="tname"/>
    52         <association property="student" javaType="com.xiaostudy.oneTOone.Student">
    53             <id column="sid" property="sid"></id>
    54             <result column="sname" property="sname"/>
    55         </association>
    56     </resultMap>
    57    <!-- ========================================================================================== -->
    58     
    59 </mapper>

    2、domain类之Student.java

     1 package com.xiaostudy.oneTOone;
     2 
     3 public class Student {
     4     private int sid;
     5     private String sname;
     6     private Teacher teacher;
     7 
     8     public int getSid() {
     9         return sid;
    10     }
    11 
    12     public void setSid(int sid) {
    13         this.sid = sid;
    14     }
    15 
    16     public String getSname() {
    17         return sname;
    18     }
    19 
    20     public void setSname(String sname) {
    21         this.sname = sname;
    22     }
    23 
    24     public Teacher getTeacher() {
    25         return teacher;
    26     }
    27 
    28     public void setTeacher(Teacher teacher) {
    29         this.teacher = teacher;
    30     }
    31 
    32     @Override
    33     public String toString() {
    34         return "Student [sid=" + sid + ", sname=" + sname + ", teacher=" + teacher + "]";
    35     }
    36 
    37 }

    Teacher.java

     1 package com.xiaostudy.oneTOone;
     2 
     3 public class Teacher {
     4     private int tid;
     5     private String tname;
     6     private Student student;
     7 
     8     public int getTid() {
     9         return tid;
    10     }
    11 
    12     public void setTid(int tid) {
    13         this.tid = tid;
    14     }
    15 
    16     public String getTname() {
    17         return tname;
    18     }
    19 
    20     public void setTname(String tname) {
    21         this.tname = tname;
    22     }
    23 
    24     public Student getStudent() {
    25         return student;
    26     }
    27 
    28     public void setStudent(Student student) {
    29         this.student = student;
    30     }
    31 
    32     @Override
    33     public String toString() {
    34         return "Teacher [tid=" + tid + ", tname=" + tname + ", student=" + student + "]";
    35     }
    36 
    37 }

    3、代理类Mapper.java

     1 package com.xiaostudy.oneTOone;
     2 
     3 import java.util.List;
     4 
     5 public interface Mapper {
     6     // 一对一之resultType
     7     public Student findStudent(int id);
     8 
     9     // 一对一之resultMap
    10     public List<Student> findOrdersAndStudentRstMap(Student student);
    11 
    12     // 一对一之resultMap2
    13     public List<Student> findOrdersAndSTRstMap(Student student);
    14     
    15     // 一对一之resultMap3
    16     public List<Teacher> findOrdersAndTeacher(int tid);
    17 
    18 }

    4、测试类

     1 package com.xiaostudy.oneTOone;
     2 
     3 import java.io.IOException;
     4 import java.io.InputStream;
     5 import java.util.List;
     6 
     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 
    12 /**
    13  * @desc 测试类
    14  * @author xiaostudy
    15  *
    16  */
    17 public class MybatisTest {
    18 
    19     public static void main(String[] args) throws IOException {
    20         String resource = "config/SqlMapConfig.xml";
    21         InputStream inputStream = Resources.getResourceAsStream(resource);
    22 
    23         // 创建SqlSessionFactory
    24         SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    25 
    26         // 创建SqlSession
    27         SqlSession sqlSession = sqlSessionFactory.openSession();
    28 
    29         // 获取一个代理dao实现
    30         Mapper mapper = sqlSession.getMapper(Mapper.class);
    31         
    32         Student student = new Student();
    33         student.setSid(4);
    34         Teacher teacher = new Teacher();
    35         teacher.setTid(3);
    36 
    37         //一对一之resultType
    38 //        student = mapper.findStudent(2);
    39         //一对一之resultMap
    40 //        List<Student> list = mapper.findOrdersAndStudentRstMap(student);
    41         //一对一之resultMap2
    42 //        List<Student> list = mapper.findOrdersAndSTRstMap(student);
    43         //一对一之resultMap3
    44         List<Teacher> list = mapper.findOrdersAndTeacher(3);
    45 
    46         System.out.println(list);
    47 //        System.out.println(student);
    48 
    49         sqlSession.close();
    50 
    51     }
    52     
    53 }

    5、数据库

    t_student表

    t_teacher表


  • 相关阅读:
    递归函数写法
    海量数据问题总结
    文本分类项目总结
    梯度提升树-负梯度和残差的理解
    正则化方法L1 L2
    c++-虚函数与多态
    数据结构-并查集
    剑指offer 面试63题
    剑指offer 面试62题
    剑指offer 面试60题
  • 原文地址:https://www.cnblogs.com/xiaostudy/p/9588940.html
Copyright © 2011-2022 走看看