一、创建JavaProject
二、导入相关jar包
三、编写配置文件mybatis-comfig.xml
- 在src目录下新建一个mybatis-comfig.xml文件
- 编写数据库配置文件db.properties
driver=com.mysql.jdbc.Driver url=jdbc\:mysql\://localhost\:3306/test?characterEncoding\=utf8 username=root password=123456
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-- 读取配置文件db.properties中的数据库连接参数 --> <properties resource="db.properties"/> <!-- 配置实体类的别名 --> <typeAliases> <!-- <typeAlias type="com.zscs.model.Company" alias="company"/> --> <package name="com.zscs.model"/> </typeAliases> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <dataSource type="POOLED" > <property name="driver" value="${driver}" /> <property name="url" value="${url}" /> <property name="username" value="${username}" /> <property name="password" value="${password}" /> </dataSource> </environment> </environments> <mappers> <mapper resource="com/zscs/model/ClassesMapper.xml"/> <mapper resource="com/zscs/model/TeacherMapper.xml"/> </mappers> </configuration>
四、编写数据表对应的实体类Teacher,Classes
package com.zscs.model;
public class Teacher {
private Integer tId;
private String tName;
public Integer gettId() {
return tId;
}
public void settId(Integer tId) {
this.tId = tId;
}
public String gettName() {
return tName;
}
public void settName(String tName) {
this.tName = tName == null ? null : tName.trim();
}
}
package com.zscs.model;
public class Classes {
private Integer cId;
private String cName;
private Integer teacherId;
private Teacher teacher;
public Teacher getTeacher() {
return teacher;
}
public void setTeacher(Teacher teacher) {
this.teacher = teacher;
}
public Integer getcId() {
return cId;
}
public void setcId(Integer cId) {
this.cId = cId;
}
public String getcName() {
return cName;
}
public void setcName(String cName) {
this.cName = cName == null ? null : cName.trim();
}
public Integer getTeacherId() {
return teacherId;
}
public void setTeacherId(Integer teacherId) {
this.teacherId = teacherId;
}
}
五、编写上述实体类对应的映射文件TeacherMapper.xml,ClassesMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.zscs.model.TeacherMapper" >
<resultMap id="BaseResultMap" type="com.zscs.model.Teacher" >
<id column="t_id" property="tId" jdbcType="INTEGER" />
<result column="t_name" property="tName" jdbcType="VARCHAR" />
</resultMap>
<select id="getTeacher" parameterType="int" resultType="Teacher" resultMap="BaseResultMap">
select * from teacher where t_id=#{id}
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.zscs.model.ClassesMapper" >
<resultMap id="BaseResultMap" type="Classes" >
<id column="c_id" property="cId" jdbcType="INTEGER" />
<result column="c_name" property="cName" jdbcType="VARCHAR" />
<result column="teacher_id" property="teacherId" jdbcType="INTEGER" />
</resultMap>
<!-- 方法一:一对一表关联查询 ,只要查询一次-->
<resultMap type="Classes" id="getClassesMap">
<id column="c_id" property="cId" jdbcType="INTEGER" />
<result column="c_name" property="cName" jdbcType="VARCHAR" />
<association property="teacher" javaType="Teacher">
<id property="tId" column="t_id"/>
<result property="tName" column="t_name"/>
</association>
</resultMap>
<select id="getClasses" parameterType="int" resultMap="getClassesMap">
SELECT * FROM class c,teacher t WHERE c.teacher_id=t.t_id AND c.c_id=#{id}
</select>
<!-- 方法二:一对一表嵌套查询 ,需要查询两次-->
<select id="getTeacher" parameterType="int" resultType="Teacher">
select t_id tId,t_name tName from teacher t where t.t_id=#{id}
</select>
<resultMap type="Classes" id="getClassesMap2">
<id column="c_id" property="cId" jdbcType="INTEGER" />
<result column="c_name" property="cName" jdbcType="VARCHAR" />
<association property="teacher" select="getTeacher" column="teacher_id">
</association>
</resultMap>
<select id="getClasses2" parameterType="int" resultMap="getClassesMap2">
select * from class where c_id=#{id}
</select>
</mapper>
package com.zscs.test;
import java.io.InputStream;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import com.zscs.model.Classes;
import com.zscs.util.MyBatisUtil;
public class MyTest {
@Test
public void testJJ(){
InputStream is=MyBatisUtil.class.getClassLoader().getResourceAsStream("conf.xml");
SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(is);
SqlSession session = factory.openSession(true);
String statement="com.zscs.model.ClassesMapper.getClasses2";
Classes c=session.selectOne(statement, 2);
System.out.println(c.getTeacher().gettName());
session.close();
}
}