查询订单关联查询用户:

使用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. SQL Server修改表结构,不允许保存更改。

    当修改表结构时,sql server会弹出对话框,显示以下内容: 不允许保存更改.您所做的更改要求删除并重新创建以下表.您对无法重新创建的表进行了更改或者启用了“阻止保存要求重新创建表的更改”选项. ...

  2. C# Winform软件多语言(汉语、英语。。。)界面的切换,低耦合

    Winform软件多语言切换,个人见解,降低软件对语言展示的耦合度. 1.设计图(自己瞎画的呵呵) 2.做的小demo,界面如下 3.下面是代码展示部分 1)Form1代码展示 namespace W ...

  3. Windbg 脚本命令简介 一

    Windbg  脚本命令简介 一 Windbg command r: registers的简写,可以显示或修改寄存器的值.浮点寄存器的值.定义别名变量. 可以显示当前线程下的寄存器值. The r c ...

  4. IDEA创建Maven项目和子模块

    一.新建Project a. 新建项目,点击Create New Project b. 选择使用maven来新建项目 选择新建Maven模块(对IDEA来说是项目) 如果Project SDK那里没有 ...

  5. Springboot事务使用与回滚

    Springboot中事务的使用: 1.启动类加上@EnableTransactionManagement注解,开启事务支持(其实默认是开启的). 2.在使用事务的public(只有public支持事 ...

  6. 移动端Hybird的网络层优化策略

    一.前端代码策略:域名切换(多域名部署),解决DNS缓存及域名劫持 二.客户端策略 客户端在空闲时ping cdn节点域名列表中的域名,测量延时.丢包等数据.如果延迟 > xxx,丢包 > ...

  7. ionic2生命周期

    生命周期: ionViewDidLoad(){ console.log("1.0 ionViewDidLoad 当页面加载的时候触发,仅在页面创建的时候触发一次,如果被缓存了,那么下次再打开 ...

  8. 05_dubbo_aop

    [对这行代码进行源码分析] ExtensionLoader<Protocol> loader = ExtensionLoader.getExtensionLoader(Protocol.c ...

  9. Mysql存储Emoji表情[为何utf8不能存储以及如何使Mysql能够存储Emoji表情]

    https://segmentfault.com/a/1190000008533577

  10. git中忽略文件权限或文件拥有者的改变

    在发布项目到线上时,很多时候需要修改文件的权限,如果是使用git版本管理软件来发布的话,那么下次更新线上文件的时候就会提示文件冲突.明明文件没有修改,为什么会冲突呢?原来git把文件权限也算作文件差异 ...