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表