上一篇文章分析了数据模型,这篇文章就给出一个需求,这个需求是一对一查询,并完成这个需求。

--------------------------------------------------------------------------------------------------------------------------------------------

需求:

查询订单信息,关联查询创建订单的用户信息。

记住:用Mybatis开发的顺序就是

1.写sql语句

2.创建pojo类来完成映射

3.写Mapper.xml

4.写Mapper.java接口

---------------------------------------------------------------------------------------------------------------------------------------------------

我们知道Mybatis中mapper.xml中分为resultType和resultMap两种,这两种我们都讲:

一:先讲resultMap:

先给出案例结构:

aaarticlea/png;base64,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" alt="" />

cn.itcast.mybatis.po包下面的类(items,orderdetail,Orders,User)都是根据数据库的4张表创建的实体类。

1.我们先来分析一下怎么写sql语句:

写sql语句时要先根据需求确定查询的主表和查询的关联表:

根据“查询订单信息,关联查询创建订单的用户信息”  很明显,查询的主表是订单表,查询的关联是用户表。

关联查询使用内链接?还是外链接?由于orders表中有一个外键(user_id),通过外键关联查询用户表只能查询出一条记录,可以使用内链接。

sql如下:

SELECT

orders.*,

USER.username,

USER.sex,

USER.address

FROM

orders,

USER

WHERE orders.user_id = user.id

2.根据select(orders.*,USER.username,USER.sex,USER.address)语句 创建Pojo类

我们创建的pojo类要满足orders.*,USER.username,USER.sex,USER.address这些映射,很明显单纯依靠数据库的映射(Orders.java和User.java)不能满足,所以要新写一个类OrdersCustom.java。

如下:

package cn.itcast.mybatis.po;

import java.util.Date;

public class OrdersCustom  extends Orders{
private String username;
private String sex;
private String address;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
} }

为什么这个类要继承Orders而不是继承User.java因为根据orders.*,USER.username,USER.sex,USER.address,很明显,要映射的数据是order表中的全部数据以及user

表中的username,sex,address这些数据,直接继承Order类的话就可以少定义一些属性,只要定义username,sex,address。就可以了。

3.写Mapper.xml和Mapper.java接口(放在同一个包下面,用接口的方式去加载)

aaarticlea/png;base64,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" alt="" />

OrderMapperCustom.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">
<!-- nanmespace:命名空间。 作用就是对sql进行分类话管理,理解Sal分离 注意:使用mapper代理方式,namespace有特殊重要的作用
--> <mapper namespace="cn.itcast.mybatis.mapper.OrdersMapperCustom"> <select id="findOrdersUser" resultType="cn.itcast.mybatis.po.OrdersCustom">
SELECT ORDERS.* ,
user.`username`,
user.`sex`,
user.`address`
FROM orderS,USER
WHERE ORDERS.`user_id`=USER.`id` </select> </mapper>

OrdersMapperCustom.java代码如下:

package cn.itcast.mybatis.mapper;

import java.util.List;

import cn.itcast.mybatis.po.OrdersCustom;

public interface OrdersMapperCustom {
public List<OrdersCustom> findOrdersUser(); }

同时不要忘了在SqlMapConfig.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> <!-- properties的配置必须写在typeAliases的上面 -->
<properties resource="db.properties"></properties> <!-- 和spring整合后 environments配置将废除-->
<environments default="development">
<environment id="development">
<!-- 使用jdbc事务管理-->
<transactionManager type="JDBC" />
<!-- 数据库连接池-->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
</environments> <mappers> <!-- 用mapper接口的方式加载-->
<!--
遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致
且在一个目录中。
当着这个规范的前提是:使用mapper代理方法。 -->
<mapper class="cn.itcast.mybatis.mapper.OrdersMapperCustom"/> </mappers> </configuration>

4.编写测试代码Mybatis_mappertest.java:

package cn.itcast.mybatis.test;

import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.List; 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.Before;
import org.junit.Test; import cn.itcast.mybatis.mapper.OrdersMapperCustom;
import cn.itcast.mybatis.mapper.userMapper;
import cn.itcast.mybatis.po.User;
import cn.itcast.mybatis.po.UserCustom;
import cn.itcast.mybatis.po.UserQueryVo; public class Mybatis_mappertest { private SqlSessionFactory sqlSessionFactory;
@Before
public void setup() throws IOException
{ String resource="SqlMapConfig.xml";
InputStream inputStream= Resources.getResourceAsStream(resource);
//主要是生成SqlsessionFactory。
this.sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
}
@Test
public void testMaper()
{
SqlSession sqlSession=null; sqlSession=sqlSessionFactory.openSession();
//生成代理类
OrdersMapperCustom orderMapper=sqlSession.getMapper(OrdersMapperCustom.class); orderMapper.findOrdersUser(); } }

运行结果:一切正常。

二:再讲resultMap(重点):

resultMap映射的思想:

使用resultMap将查询结果中的订单信息映射到Orders对象中,在orders类中添加User属性,将关联查询出来的用户信息映射到orders对象中的user属性中。也就是说查出来的user信息都要映射在orders中新开的一个user属性中。

还是按照第一sql语句,第二pojo类,第三mapper.xml,mapper.java接口这种顺序来写。

1.sql语句:和之前的resulrType的sql语句一样:

SELECT

orders.*,

USER.username,

USER.sex,

USER.address

FROM

orders,

USER

WHERE orders.user_id = user.id

2.写pojo类:在原来的Orders.java中新增一个User属性:

User类:

package cn.itcast.mybatis.po;

import java.util.Date;
//对应数据库中的user表
public class User {
private int id;//对应数据库中主键
private String username;//对应数据库中用户的名称
private Date birthday;//对应数据库中的生日
private String sex;//性别
private String address;//地址
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
} }

Orders.java类:

package cn.itcast.mybatis.po;

import java.util.Date;

public class Orders {
private Integer id;
private Integer user_id;
private String number;
private Date createtime;
private String note;
//新增了一个User属性,为了保存查询得到的关联的User表的信息
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getUser_id() {
return user_id;
}
public void setUser_id(Integer user_id) {
this.user_id = user_id;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public Date getCreatetime() {
return createtime;
}
public void setCreatetime(Date createtime) {
this.createtime = createtime;
}
public String getNote() {
return note;
}
public void setNote(String note) {
this.note = note;
} }

3.写mapper.xml和mapper.java接口

OrdersMapperCustom.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">
<!-- nanmespace:命名空间。 作用就是对sql进行分类话管理,理解Sal分离 注意:使用mapper代理方式,namespace有特殊重要的作用
--> <mapper namespace="cn.itcast.mybatis.mapper.OrdersMapperCustom"> <!-- 配置映射的订单信息 -->
<!-- id:指定查询列中的唯 一标识,订单信息的中的唯 一标识,如果有多个列组成唯一标识,配置多个id
就是说id要能唯一的标识出数据库中的Order表。
column:订单信息的唯 一标识 列
property:订单信息的唯 一标识 列所映射到Orders中哪个属性 --> <resultMap type="cn.itcast.mybatis.po.Orders" id="OrdersUserResultMap">
<!-- 这一行的作用是要能唯一的识别出order表的,那么很明显是主键id -->
<id column="id" property="id"/> <!-- 以下的几行result column就是表中的字段 property就是对应到相应pojo类中的属性-->
<result column="user_id" property="user_id"/>
<result column="number" property="number"/>
<result column="createtime" property="createtime"/>
<result column="note" property="note"/> <!-- 配置映射的关联的用户信息 -->
<!-- association:用于映射关联查询单个对象的信息
property:要将关联查询的用户信息映射到Orders中哪个属性
-->
<!-- 下面的代码比较特殊,因为Order表是直接关联到user表,下面这么写的目的是把user表映射到Order类中
<association property="user"这里的user指的是orders类中的user,对应的是cn.itcast.mybatis.po.User -->
<association property="user" javaType="cn.itcast.mybatis.po.User">
<!--
<id column="user_id" property="id"/>这里的是user_id指的是order表中只有这个属性能表示唯一的user表
-->
<id column="user_id" property="id"/> <!-- 接下来的result property什么的都是为了把user表中的字段能匹配到
cn.itcast.mybatis.po.User这个类的属性中
-->
<result column="username" property="username"/>
<result column="sex" property="sex"/>
<result column="address" property="address"/>
</association> </resultMap> <select id="findOrdersUser" resultType="cn.itcast.mybatis.po.OrdersCustom">
SELECT ORDERS.* ,
user.`username`,
user.`sex`,
user.`address`
FROM orderS,USER
WHERE ORDERS.`user_id`=USER.`id` </select> <select id="findOrdersUseResultMap" resultMap="OrdersUserResultMap">
SELECT ORDERS.* ,
user.`username`,
user.`sex`,
user.`address`
FROM orderS,USER
WHERE ORDERS.`user_id`=USER.`id` </select>
</mapper>

OrdersMapperCustom.java接口

package cn.itcast.mybatis.mapper;

import java.util.List;

import cn.itcast.mybatis.po.Orders;
import cn.itcast.mybatis.po.OrdersCustom; public interface OrdersMapperCustom {
//这里的的函数名字要和OrdersMapperCustom.xml中的id一模一样
public List<OrdersCustom> findOrdersUser();
public List<Orders> findOrdersUseResultMap(); }

Junit测试代码:

package cn.itcast.mybatis.test;

import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.List; 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.Before;
import org.junit.Test; import cn.itcast.mybatis.mapper.OrdersMapperCustom;
import cn.itcast.mybatis.mapper.userMapper;
import cn.itcast.mybatis.po.Orders;
import cn.itcast.mybatis.po.User;
import cn.itcast.mybatis.po.UserCustom;
import cn.itcast.mybatis.po.UserQueryVo; public class Mybatis_mappertest { private SqlSessionFactory sqlSessionFactory;
@Before
public void setup() throws IOException
{ String resource="SqlMapConfig.xml";
InputStream inputStream= Resources.getResourceAsStream(resource);
//主要是生成SqlsessionFactory。
this.sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
}
@Test
public void testMaper()
{
SqlSession sqlSession=null; sqlSession=sqlSessionFactory.openSession();
//生成代理类
OrdersMapperCustom orderMapper=sqlSession.getMapper(OrdersMapperCustom.class);
//创建包装对象,设置查询条件
//orderMapper.findOrdersUser(); @SuppressWarnings("unused")
List<Orders>list=orderMapper.findOrdersUseResultMap(); } }

运行结果:一切正常。

resultType和resultMap实现一对一查询小结

实现一对一查询:

resultType:使用resultType实现较为简单,如果pojo中没有包括查询出来的列名,需要增加列名对应的属性,即可完成映射。

如果没有查询结果的特殊要求建议使用resultType。

resultMap:需要单独定义resultMap,实现有点麻烦,如果对查询结果有特殊的要求,使用resultMap可以完成将关联查询映射pojo的属性中。

resultMap可以实现延迟加载,resultType无法实现延迟加载。

20Mybatis_订单商品数据模型_一对一查询——resultType和resultMap两种方式以及两种方式的总结的更多相关文章

  1. 21Mybatis_订单商品数据模型_一对多查询——resultMap方式

    这篇文章延续订单商品数据模型,这张讲述的是一对多的查询.(用resultMap) 给出几张表的内容: User表:

  2. 22Mybatis_订单商品数据模型_多对多查询以及对多对多查询的总结

    之前讲了一对一,一对多查询,这篇文章讲的是多对多. 先给出需求:查询用户及用户购买商品信息. 我们由之前的文章知道,这个需求是多对多的. 还是那个终止我们的mybatis所做的不管是之前的一对一还是一 ...

  3. mybatis由浅入深day02_课程复习_1订单商品数据模型分析

    mybatis第二天  高级映射 查询缓存 和spring整合 课程复习: mybatis是什么? mybatis是一个持久层框架,mybatis是一个不完全的ORM框架.sql语句需要程序员自己去编 ...

  4. 19Mybatis_订单商品数据模型分析

    这篇文章是对订单商品数据模型进行分析(会给出分析思路),有四张表.这篇文章是后续文章的基础,因为后续的文章要针对这个数据模型(四张表)进行一对一,一对多,多对多进行查询. 我们以后会碰到各种各样的数据 ...

  5. mybatis0202 一对一查询 resultType实现

    一对一查询 查询订单信息和用户信息 创建po类 基础的单表的 po(数据库类)类:Items.java, Orderdetail.java, Orders.java, User.java 一对一查询映 ...

  6. 23Mybatis_根据订单商品数据模型的练习对resultMap和resulttype的总结

    resultType: 作用: 将查询结果按照sql列名pojo属性名一致性映射到pojo中. 场合: 常见一些明细记录的展示,比如用户购买商品明细,将关联查询信息全部展示在页面时,此时可直接使用re ...

  7. mybatis入门截图四(订单商品数据模型 一对一,一对多,多对多)

    --------------------------------- 一对一查询 查询订单信息,关联查询创建订单的用户信息 1.高级映射-一对一查询-使用resultType 2.高级映射-一对一查询- ...

  8. java-mybaits-00501-案例-映射分析-订单商品数据模型

    1.数据模型分析思路 1.每张表记录的数据内容          分模块对每张表记录的内容进行熟悉,相当 于你学习系统 需求(功能)的过程. 2.每张表重要的字段设置          非空字段.外键 ...

  9. 18_高级映射:一对一查询(使用resultMap)

    [简述] 数据库模型和数据等信息与上一篇博文相同. 需求也同上一篇博文. [工程截图] [User.java]POJO package cn.higgin.mybatis.po; import jav ...

随机推荐

  1. CRM 2013 Reporting Extensions for SSRS 安装及问题解决

    说明一下 Reporting Extensions for SSRS 安装过程. 安装目录在安装目录下 SrsDataConnector 下.如果是CRM 2013安装中运行,可以跳过此步. 此外在说 ...

  2. all things are difficult before they are easy

    刚开始接触一项新知识时,总是感觉很难,只要你用心钻研下去,它会慢慢变简单的.

  3. Android项目结构分析

    andriod项目目录结构如下图: 1. src目录 该目录一个普通的保存java源文件的目录,其和普通java工程中的src目录是一样的. 2. gen目录 此目录用于存放所有由ADT插件自动生成的 ...

  4. Android性能优化--Listview优化

    ListView的工作原理 首先来了解一下ListView的工作原理(可参见http://mobile.51cto.com/abased-410889.htm),如图: ListView 针对每个it ...

  5. 【读书笔记】iOS-GCD-API

    一,Dispatch Queue dispatch_async(queue, ^{ /* *想执行的任务 */ }); 其中queue分为两种: 1,Serial Dispatch Queue 等待现 ...

  6. 【读书笔记】iOS-属性列表

    一,在Cocoa中,有一类名为属性列表的对象,常简写为plist.这些列表包含Cocoa知道如何操作的一组对象.具体来讲,Cocoa如何知道将这们保存在文件中并进行加载.属性列表类包括NSArray, ...

  7. UNIX/Linux下C语言的学习路线

    一.工具篇 “公欲善其事,必先利其器”.编程是一门实践性很强的工作,在你以后的学习或工作中,你将常常会与以下工具打交道, 下面列出学习C语言编程常常用到的软件和工具. 1.操作系统    在UNIX或 ...

  8. Hibernate之Criteria的完整用法

    Criteria的完整用法 QBE (Query By Example) Criteria cri = session.createCriteria(Student.class); cri.add(E ...

  9. Effective Java 42 Use varargs judiciously

    Implementation theory The varargs facility works by first creating an array whose size is the number ...

  10. Nginx的安装与使用

    在 CentOS 7 系统上: $ sudo rpm --import http://nginx.org/keys/nginx_signing.key $ sudo rpm -ivh http://n ...