查询订单关联查询用户:

使用resultType,ordersCustom可以通过继承orders获得其属性,再添加我们需要的用户字段.

使用resultMap,orders表中通过封装user对象来关联用户.

Mapper.xml映射文件

它定义了操作数据库的sql,每个sql是一个statement,映射文件是mybatis的核心文件.

2.1 parameterType(输入类型)

2.1 .1#{}与${}    #{}:表示占位符?,它可以防止sql注入,它会把SQL语句和参数发到数据库,匹配数据库表的字段是否一致.括号内最好填写实体类属性.

2.1.2  ${value}:表示拼接字符,实现sql拼接,所以无法防止sql注入.例如模糊查询时:'%${value}%',parameterType="user"括号里可写其字段名称如'%${username}%'

又例如将列名通过sql传入,对列名进行排序.order by ${columnName}.-

2.1.3 传递pojo类,使用ognl表达式解析字段的值

<!—传递pojo对象综合查询用户信息 -->

<select id="findUserByUser" parameterType="user" resultType="user">

select * from user where id=#{id} and username like '%${username}%'

</select>

2.1.4 传递pojo包装对象:定义包装对象查询条件(pojo)以类组合的方式包装起来

public class QueryVo(){  private User user;          //自定义用户扩展类   private UserCustomer usercustom;}

mapper.xml映射文件:

<select id="findUserList" parameterType="queryVo" resultType="user">

select*from user where username=#{user.username} and sex =#{user.sex}       </select>

说明:mybatis底层通过ognl从pojo获取属性值#{user.username} ,user为包装类对象的属性,queryVo是别名,即包装类对象类型.

2.1.5 传递hashmap      括号里为hashmap的key

<select id="findUserByHasmap" parameterType="hashmap" resultType="user">
select*from user where id=#{id} and username like '%${username}% </select>

2.2 resultType(输出类型)   

简单类型:int/string/float   自定义的pojo:表示单条记录所映射的pojo类型,映射要求:sql查询的列名和pojo的属性名一致

2.2.1 输出简单类型

mapper.xml

<select id="findUserCount" parameterType="queryUserVo" resulttype="int">  select count(*) from user
where username like '%${user.username}%'and sex=#{user.sex}
</select>

mapper.java-----输出pojo对象和列表sql定义的resultType是一样的.session.selectOne方法和session.selectList方法

public int findUsercount (QueryUserVo queryUserVo) throws Exception;

2.2 resultMap(还可实现延迟加载功能)

resultMap当列名和属性名不一致时,可以通过resultMap定义列名和属性名的映射关系,完成映射.还可实现(一对一/一对多)

UserMapper.xml
<select id="findUserByResultMap" parameterType="int" resultType="queryUserResultMap">
select id id_,username username_,birthday birthday_,sex sex_,address address _ from User where id=#{id}
</select>
<!-- 使用resultMap将列名和pojo的属性值作一个对应关系,完成映射
id:唯一标识 一个元素
type:最终映射的pojo类型
-->
<resultMap type="user" id="queryUserResultMap">
<!-- id标识 查询结果集中唯一标识列
column:结果集中唯 一标识 的列名
property:将唯一标识 的列所映射到的type指定的pojo的属性名
-->
<id column="id_" property="id"/>
<!-- 如果结果集有多个列组合成一个唯 一标识,定义两个id标签 -->
<!-- result表示:普通列 -->
<result column="username_" property="username"/>
<result column="birthday_" property="birthday"/>
<result column="sex_" property="sex"/>
<result column="address_" property="address"/>

<association property="user" javaType="cn.itcast.mybatis.po.User">
<!-- id:用户信息的唯一标识
result:用户信息列
property:将关联查询的列映射到user的哪个属性中
-->
<id column="user_id" property="id"/>
<result column="username" property="username"/>
<result column="address" property="address"/>

</association>

</resultMap>

userMapper.java
public User findUserByResultMap(int id) throws Exception;

Mapper.xml映射文件的更多相关文章

  1. Mybatis学习--Mapper.xml映射文件

    简介 Mapper.xml映射文件中定义了操作数据库的sql,每个sql是一个statement,映射文件是mybatis的核心. 映射文件中有很多属性,常用的就是parameterType(输入类型 ...

  2. Mybatis中的Mapper.xml映射文件sql查询接收多个参数

    ​ 我们都知道,在Mybatis中的Mapper.xml映射文件可以定制动态SQL,在dao层定义的接口中定义的参数传到xml文件中之后,在查询之前mybatis会对其进行动态解析,通常使用#{}接收 ...

  3. MyBatis - 3.Mapper XML映射文件

    SQL 映射文件有很少的几个顶级元素(按照它们应该被定义的顺序): cache – 给定命名空间的缓存配置. cache-ref – 其他命名空间缓存配置的引用. resultMap – 是最复杂也是 ...

  4. mybatis Mapper XML 映射文件

    传送门:mybatis官方文档 Mapper XML 文件详解 一. 数据查询语句 1. select <select id="selectPerson" parameter ...

  5. MyBatis学习存档(3)——mapper.xml映射文件

    MyBatis 真正的强大在于映射语句,专注于SQL,功能强大,SQL映射的配置却是相当简单 所以我们来看看映射文件的具体结构 一.xml节点结构 mapper为根节点 - namespace命名空间 ...

  6. 在mapper.xml映射文件中添加中文注释报错

    问题描述: 在写mapper.xml文件时,想给操作数据库语句添加一些中文注释,添加后运行报如下错误: 思考 可能是写了中文注释,编译器在解析xml文件时,未能成功转码,从而导致乱码.但是文件开头也采 ...

  7. SSM_CRUD新手练习(4)修改生成的mapper.xml映射文件

    我们为什么要修改呢,这是因为我们查询的时候,我们有时候需要连表查询,例如我们需要查询出员工表的信息(emp_id,emp_name...)与此同时,我们还想查询出该员工所在的部门(dept_name) ...

  8. 5.7 Liquibase:与具体数据库独立的追踪、管理和应用数据库Scheme变化的工具。-mybatis-generator将数据库表反向生成对应的实体类及基于mybatis的mapper接口和xml映射文件(类似代码生成器)

    一. liquibase 使用说明 功能概述:通过xml文件规范化维护数据库表结构及初始化数据. 1.配置不同环境下的数据库信息 (1)创建不同环境的数据库. (2)在resource/liquiba ...

  9. MyBatis 逆向工程——根据数据表自动生成model、xml映射文件、mapper接口

    MyBatis Generator(MBG)的使用 MBG可以根据数据表生成对应的model.xml映射文件.mapper接口,只是简单的生成,还需要根据需求修改. 1.下载jar包 https:// ...

随机推荐

  1. 总结—angularjs项目

    我毕业了-------有点期待生活,又点害怕生活. 总结下最近一个月做的这个项目,项目的开发形式也比较新颖,采用的是前后端分离的形式.我负责前端的管理系统开发,另一个哥们负责利用ABP创建接口,整合后 ...

  2. 【Hadoop系列】linux下 root用户免密码登录远程主机 ssh

    SSH原理:[Hadoop系列]linux SSH原理解析 操作环境: CentOS 6.5 操作对象: 用户A主机和远程主机B 正文部分:斜体加粗代表linux指令. linux下 非root用户免 ...

  3. No mapping found for HTTP request with URI异常的原因,<mvc:default-servlet-handler/>的作用

    一.最近做的一个项目有很多静态资源文件,按照平时的配置springmvc进行配置发现访问不到静态文件,并且在我配置好controller去访问结果还是404 No mapping found for ...

  4. mycat安装

    一.简介 在互联网数据大爆炸时代,对数据处理的要求越来越高,很明显单实例数据库已经不能满足需求了,这时候数据库的中间件便应运而生.中间件聚集多实例来提供更强的处理能力,并且隐藏了多实例产生的复杂性.m ...

  5. POJ 1185 炮兵阵地 经典的 状态压缩dp

    炮兵阵地 Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 16619   Accepted: 6325 Description ...

  6. Linux基础之-Bash命令优先级

    一. Bash简介 命令解释器,也就是 Bourne Again Shell,起源于shell.shell俗称壳,它是指UNIX系统下的一个命令解析器:主要用于用户和系统的交互.UNIX系统上有很多种 ...

  7. MFC中利用Opencv与C++抓取摄像头进行人脸识别(Mat)

    原文:http://blog.csdn.net/mr_curry/article/details/51098311 第一次写博客哈哈,有些小激动,还请各位大神多多包涵~ 最近的项目需要用到人脸识别,作 ...

  8. 【读书笔记】思维导图 Talk Like Ted

  9. Kettle数据抽取解决方案

    一. Kettle介绍 1. Kettle简介 ETL即数据抽取(Extract).转换(Transform).装载(Load)的过程.Kettle的中文翻译为水壶.Kettle以元数据驱动的方式提供 ...

  10. C++ 无名对象

    http://blog.sina.com.cn/s/blog_5f0e13360100bxlj.html 可以直接调用构造函数产生无名对象. 例如,下面的代码在函数fn()中,创建了一个无名对象: c ...