MapperAsso.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="bean.User">
<!--一对一关联-->
<select id="selectOneAssoObj" parameterType="int" resultMap="OneAssoObjRM">
select * from user where id = #{id}
</select>
<resultMap type="association.AssoObj" id="OneAssoObjRM">
<result property="id" column="id"/>
<result property="name" column="name"/>
<result property="age" column="age"/>
<association property="salary" column="name" select="selectOneSalary"/>
<!--一对多关联配置备注-->
<!--<collection property="salarys" ofType="bean.Salary" column="name" select="selectFewSalarys">-->
</resultMap> <select id="selectOneSalary" parameterType="String" resultType="bean.Salary">
select * from salary where name = #{name}
</select> <!--id:名称; parameterType传入参数类型; resultType:返回数据类型-->
<select id="selectOneUser" parameterType="int" resultType="bean.User">
select * from user where id = #{id}
</select> <!--批量查询-->
<select id="selectAllUser" resultMap="userList">
select * from user
</select>
<resultMap type="first.UserBean" id="userList">
<result property="id" column="id"/>
<result property="name" column="name"/>
<result property="age" column="age"/>
</resultMap> </mapper>

AssoObj.java

 package association;

 import bean.Salary;

 /**
* 数据封装类
* user class with Salary object
* 一对一关联Javabean
*/
public class AssoObj {
private int id;
private String name;
private String age;
private Salary salary; public AssoObj() { } public AssoObj(String name, String age) {
this.name = name;
this.age = age;
} public AssoObj(int id, String name, String age, Salary salary) {
this.id = id;
this.name = name;
this.age = age;
this.salary = salary;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getAge() {
return age;
} public void setAge(String age) {
this.age = age;
} public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public Salary getSalary() {
return salary;
} public void setSalary(Salary salary) {
this.salary = salary;
} @Override
public String toString() {
return "AssoObj{id:" + id + "; 姓名:" + name +
"; 年龄:" + age + "; Salary对象:" + salary + "}";
}
}

TestAsso.java

 package association;

 import bean.Salary;
import bean.User;
import bean.UserSalary;
import first.UserBean;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import zhujie.UserMapperInterface; import java.io.IOException;
import java.io.InputStream;
import java.util.List; /*
* 一对一关联举例
*
* */
public class TestAsso {
String resource = "mybatis-config-assosciation.xml";
SqlSessionFactory sqlSessionFactory = null;
SqlSession session = null; @Before
public void before() {
// System.out.println("Before");
try {
InputStream inputStream = Resources.getResourceAsStream(resource);
// 创建工厂
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 创建session对象
session = sqlSessionFactory.openSession(); } catch (IOException e) {
e.printStackTrace();
}
} @After
public void close() {
session.close();
// System.out.println("After");
} // 一对一关联测试用例
@Test
public void testSelectOneAssoObj() {
AssoObj assoObj = session.selectOne("bean.User.selectOneAssoObj", 1);
System.out.println("查询单个AssoObj:" + assoObj);
} @Test
public void testSelectOneUser() {
User user = session.selectOne("bean.User.selectOneUser", 1);
System.out.println("查询单个User:" + user);
} @Test
public void testSelectAllUser() {
List<User> listUser = session.selectList("bean.User.selectAllUser");
System.out.println("记录个数:" + listUser.size());
System.out.println(listUser);
} @Test
public void testSelectOneSalary() {
Salary salary = session.selectOne("bean.User.selectOneSalary", "Tom");
System.out.println("查询单个Salary:" + salary);
} }

mybatis-config-assosciation.xml

 <?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>
<!--从外部配置文件导入jdbc信息-->
<properties resource="jdbc.properties"></properties> <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="association/MapperAsso.xml"/> </mappers>
</configuration>

mybatis之一对一关联的更多相关文章

  1. MyBatis:一对一关联查询

    MyBatis从入门到放弃三:一对一关联查询 前言 简单来说在mybatis.xml中实现关联查询实在是有些麻烦,正是因为起框架本质是实现orm的半自动化. 那么mybatis实现一对一的关联查询则是 ...

  2. Mybatis学习——一对一关联表查询

    1.SQL语句建表 CREATE TABLE teacher( t_id ) ); CREATE TABLE class( c_id ), teacher_id INT ); ALTER TABLE ...

  3. mybatis 的一对一关联查询association

    现在项目的列表查询数据需要查一个总数count, 如果直接写在同一个sql里面,会导致查询速度很慢, 因此,想到使用关联查询,例子如下: 附上代码: 其中遇到的坑哟: 1.association中的s ...

  4. mybatis 一对一关联映射实例

    在实际项目开发中,经常存在一对一的关系,如一个人对应一张身份证信息,这就是一对一的关系.下面是一个简单的实例: 1.建表过程我就省略了,主要是一张Person表,一张IDCard表,其相关属性见步骤2 ...

  5. mybatis 一对一关联 association 返回空值

    mybatis 一对一关联 association 返回空值 最近学习spring mvc + mybatis开发,看的书是<Spring MVC+Mybatis开发 从入门到精通>,在学 ...

  6. MyBatis从入门到放弃三:一对一关联查询

    前言 简单来说在mybatis.xml中实现关联查询实在是有些麻烦,正是因为起框架本质是实现orm的半自动化. 那么mybatis实现一对一的关联查询则是使用association属性和resultM ...

  7. Mybatis学习4——一对一关联查询方法2------实体作为属性

    实体order和user采用resultMap order package pojo; import java.util.Date; public class Order { private Inte ...

  8. Mybatis学习4——一对一关联查询方法1--创建实体

    创建一个实体继承两个实体之一,另一个实体作为属性 实体1. order package pojo; import java.util.Date; public class Order { privat ...

  9. Java基础-SSM之mybatis一对一关联

    Java基础-SSM之mybatis一对一关联 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.准备测试环境(创建数据库表)  1>.创建husbands和wifes表并建 ...

随机推荐

  1. OpenCV——直方图计算、寻早最值位置和对比匹配(判断两幅图的相似程度)

  2. 广州商学院Python正方教务系统爬虫(获取个人信息成绩课表修改密码)

    使用python的requests库简单爬取,使用xpath解析内容 可以获取个人信息.个人照片.成绩单和课表 github地址:https://github.com/PythonerKK/GZCC- ...

  3. 用scp命令来通过ssh传输文件,ssh推送.py程序到CentOS7服务器端出现lost connection错误

    ssh推送.py程序到CentOS7服务器端运行出现lost connection错误 (base) F:\workspace>dir 驱动器 F 中的卷是 新加卷 卷的序列号是 C2B9-62 ...

  4. JAVA框架 Mybaits 核心配置

    一:mybaits的核心配置文件:SqlMapConfig.xml 配置文件中需要关注的属性: 二.properites属性:一般引用配置文件(properites文件)比如:数据库的配置.我们可以编 ...

  5. 树莓派学习笔记(2):常用linux命令

    转载请注明:@小五义http://www.cnblogs.com/xiaowuyi 1.ls命令:列出文件目录的常用命令,主要参数见下表. -a 列出目录下的所有文件,包括以.开头的隐含文件. -b ...

  6. ADO.NET TransactionScope使用说明(转载)

    TransactionScope是.Net Framework 2.0滞后,新增了一个名称空间.它的用途是为数据库访问提供了一个“轻量级”[区别于:SqlTransaction]的事物.使用之前必须添 ...

  7. Centos7 搭建Go语言编译环境

    1.准备工作 下载Go:https://studygolang.com/dl 2.安装Go [root@node2 local]# .linux-amd64.tar.gz -C /usr/local/ ...

  8. 虚拟机上不能使用CUDA

    虚拟机的显卡是虚拟的,不能使用CUDA(至少很难),搞了一天才晃过神来: lspci 查找目前主机的硬件配备 用 grep -i 进行大小写无关的搜索

  9. 同步IO和异步IO的区别

    首先一个IO操作其实分成了两个步骤:发起IO请求和实际的IO操作,同步IO和异步IO的区别就在于第二个步骤是否阻塞,如果实际的IO读写阻塞请求进程,那么就是同步IO,因此阻塞IO.非阻塞IO.IO服用 ...

  10. C++和python的变量对比

    <C++中的this和Python的self对比>基本都是针对函数而言的,从变量的角度看,也有相同之处. C++中,类中定义的变量一般叫做成员变量,或者说是成员属性,它只属于实例对象,只有 ...