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. window.location对象详解

    window.location.href(当前URL) 结果如下: http://www.myurl.com:8866/test?id=123&username=xxx window.loca ...

  2. Python:基础知识

    python是一种解释型.面向对象的.带有动态语义的高级程序语言. 一.下载安装 官网下载地址:https://www.python.org/downloads 下载后执行安装文件,按照默认安装顺序安 ...

  3. 非const引用不能指向临时变量

    没找到具体原因,MSDN看到下面这句,VC是从2008才有这一限制的,感觉就是从语法上对临时变量增加了限定,因为一般说来修改一个临时变量是毫无意义的,通过增加限定,强调临时变量只读语义.虽然实际上修改 ...

  4. 【本地服务器】利用openssl生成证书

    (一)下载openssl软件,解压,进入bin目录 下载地址 (二)1.在当前bin目录,按住shift键右击,选择"在此处打开命令窗口" 2.打开cmd命令窗口之后,在窗口中输入 ...

  5. mount状态下表空间情报试验

    SQL> shutdown immediate;Database closed.Database dismounted.ORACLE instance shut down.SQL> sta ...

  6. MFC如何为程序添加标题

    1.在CMainFrame类中找到函数PreCreateWindow,在该函数中添加 cs.style &=~FWS_ADDTOTITLE;//去掉窗口的 自动标题 属性. 这句很重要不然的话 ...

  7. mfc CProgressCtrl

    CProgressCtrl常用属性 CProgressCtrl类常用成员函数 CProgressCtrl代码示例 一.CProgressCtrl控件属性 当我们在处理大程序时,常常需要耗很长时间(比如 ...

  8. Hadoop日记系列目录

    下面是Hadoop日记系列的目录,由于目前时间不是很充裕,以后的更新的速度会变慢,会按照一星期发布一期的原则进行,希望能和大家相互学习.交流. 目录安排 1>  Hadoop日记Day1---H ...

  9. 利用Python统计微信联系人男女比例以及简单的地区分布

    寒暄的话不多说,直接进入主题. 运行效果图: [准备环境] Python版本:v3.5及其以上 开发工具:随意,此处使用Pycharm [依赖包] 1.itchat (CMD运行:pip instal ...

  10. suggest braces around empty body in an 'if' statement

    出现这种错误是要求加大括号