mybatis一对一关系表

一、创建JavaProject

二、导入相关jar包


三、编写配置文件mybatis-comfig.xml

  1. 在src目录下新建一个mybatis-comfig.xml文件
  2. 编写数据库配置文件db.properties
    driver=com.mysql.jdbc.Driver
    url=jdbc\:mysql\://localhost\:3306/test?characterEncoding\=utf8
    username=root
    password=123456
    

  3. <?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();
	}
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值