mybatis进阶--输入映射和输出映射
我们知道,mapper.xml是我们配置操作数据库的sql语句的地方。其中每个sql语句对应着一个方法,每个方法都有自己的输入输出参数类型。那么这些类型都是怎么配置的呢?今天我们来一起学习下。
输入映射
简单类型
简单输入类型,比较简单。在传入参数的时候,直接将参数类型配置到parameterType中,代码如下:
<select id="findUserById" parameterType="int" resultType="cn.itcast.pojo.User">
SELECT * FROM user where id=#{id}
</select>
其中的sql语句内的占位符或者拼接符中的内容可以随意书写,没有实际意义。不过建议最好见名知意。以便于阅读。
pojo对象
如果传入的是一个对象的话,那么情况就稍有不同了。除了传入类型需要是对象的类型(可以直接写类的全路径,也可以通过在sqlConfig.xml中配置别名的方式,配置类的别名)。还需要注意的是在sql语句的占位符上也需要将我们的内容对应我们的对象的属性值。代码如下:
<select id="findUserByUserName" parameterType="cn.itcast.pojo.User" resultType="cn.itcast.pojo.User">
select * from user where username like'%${username}%'
</select>
这里的username必须对应User类中的属性。也就是说,在User类中必须有username的属性。而且我们在传入参数的时候,需要将user对象的username赋值。用于被mybatis框架解析。
在sqlConfig.xml中配置别名的方法:
<!-- 自定义别名 -->
<typeAliases>
<!-- 给单个pojo起别名: type:pojo的全路径名称, alias:别名 -->
<!-- <typeAlias type="cn.itcast.pojo.User" alias="user"/> --> <!-- 使用包扫描的方式将整个包下面的pojo起别名
别名就是类名, 不区分大小写, 建议按照java的命名规则来写
-->
<package name="cn.itcast.pojo"/>
</typeAliases>
pojo包装对象
如果传入对象是一个包含有另外一个对象的对象,也就是说传入对象是一个包装对象的时候,我们该怎么办呢?其实也差不多,就是将占位符或者连接符中的值改为对象.属性名具体代码如下:
首先是pojo对象的代码,我们可以看出,整个user对象都作为了queryVo对象的一个属性值了,其字段名称为user:
package cn.itcast.pojo;
public class QueryVo {
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
然后是我们的映射文件,其中的${user.userneme}中,user和我们的QueryVo类中的user属性名称一致,而username对应的是User类中的username字段:
<select id="findUserByVo" parameterType="cn.itcast.pojo.QueryVo" resultType="cn.itcast.pojo.User">
select * from user where username like'%${user.username}%' and sex =#{user.sex}
</select>
输出映射
输出映射的配置和输入映射基本一致。首先是简单类型,mybatis中只有一种情况可以返回简单类型,那就是我们的sql语句返回值只有一条的时候。可以返回简单类型。
还有就是我们的pojo类型。我们的mybatis可以将返回的数据,封装成为一个pojo对象,但是,pojo的对象属性必须和我们的返回值的字段名一致。才可以封装进去。如果不一致仍然想封装,那么,就需要指定其对应关系。具体代码及注释如下:
<!-- 这里的userListResultMap对应的是resultMap的唯一标示符 -->
<select id="findUserByVo" parameterType="cn.itcast.pojo.QueryVo" resultMap="userListResultMap">
select * from user where username like'%${user.username}%' and sex =#{user.sex}
</select>
<!-- 这里的cn.itcast.pojo.User代表的是User类也就是最终生成对象的类型;userListResultMap是这个resultMap的唯一标示符 -->
<resultMap type="cn.itcast.pojo.User" id="userListResultMap">
<!-- 这里的id_是从数据库中查出的数据字段名称是主键;而id是我们的User对象中的属性 -->
<id column="id_" property="id"/>
<!-- 这里的result指的是其他字段 -->
<result column="userneme_" property="username"/>
</resultMap>
mybatis进阶--输入映射和输出映射的更多相关文章
- 【mybatis深度历险系列】mybatis中的输入映射和输出映射
在前面的博文中,小编介绍了mybatis的框架原理以及入门程序,还有mybatis中开发到的两种方法,原始开发dao的方法和mapper代理方法,今天博文,我们来继续学习mybatis中的相关知识,随 ...
- Mybatis学习总结(四)——输入映射和输出映射
在前面几篇文章的例子中也可以看到mybatis中输入映射和输出映射的身影,但是没有系统的总结一下,这篇博客主要对这两个东东做一个总结.我们知道mybatis中输入映射和输出映射可以是基本数据类型.ha ...
- MyBatis入门(二)—— 输入映射和输出映射、动态sql、关联查询
一.输入映射和输出映射 1. parameterType(输入类型) 1.1 传递简单类型 <select id="getUserById" parameterType=&q ...
- 【MyBatis学习06】输入映射和输出映射
在前面几篇博文的例子中也可以看到mybatis中输入映射和输出映射的身影,但是没有系统的总结一下,这篇博客主要对这两个东东做一个总结.我们知道mybatis中输入映射和输出映射可以是基本数据类型.ha ...
- (七)mybatis 的输入映射与输出映射
目录 前言 输入映射 - - 传递 pojo 包装类型 (复杂查询 ) 输出映射 - - resultType 输出映射 - - resultMap 前言 通过 paramterType 指定输入参数 ...
- mybatis进阶--mapper输入映射和输出映射
我们知道,mapper.xml是我们配置操作数据库的sql语句的地方.其中每个sql语句对应着一个方法,每个方法都有自己的输入输出参数类型.那么这些类型都是怎么配置的呢?今天我们来一起学习下. 输入映 ...
- mybatis入门基础(四)----输入映射和输出映射
一:输入映射 通过parameterType指定输入参数的类型,类型可以是简单类型.hashmap.pojo的包装类型. 1.1.传递pojo的包装对象 1.1.1.需求描述 完成用户信息的综合查询, ...
- Spring+SpringMVC+MyBatis深入学习及搭建(四)——MyBatis输入映射与输出映射
转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6878529.html 前面有讲到Spring+SpringMVC+MyBatis深入学习及搭建(三)——My ...
- mybatis基础系列(二)——基础语法、别名、输入映射、输出映射
增删改查 mapper根节点及其子节点 mybatis框架需要读取映射文件创建会话工厂,映射文件是以<mapper>作为根节点,在根节点中支持9个元素,分别为insert.update.d ...
随机推荐
- python错题整理
1.列表list去重 l1 = [1,1,2,3,5,5,4,4,4,5,6] set1 = set(l1) # print(set1) # set是集合 l2 = list(set1) # 将集合转 ...
- MD5 算法
MD5 Message Digest Algorithm MD5(中文名为消息摘要算法第 五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护.该算法的文件号为RFC 1321(R. ...
- js 继承的方式
//定义object的继承方法 Object.extend = function(destination, source) { for(property in source) { destinatio ...
- 解题7(FindFirstOnlyOne)
题目描述 找出字符串中第一个只出现一次的字符 输入描述: 输入一个非空字符串 输出描述: 输出第一个只出现一次的字符,如果不存在输出-1 示例1 输入 asdfasdfo 输出 o 代码如下: pac ...
- 今天设置apache二级域名ssl证书后出现问题
用集成环境 phpwamp重启服务失败,但是重启电脑后apache就启动成功,也不知道哪里原因,待以后解决.
- python网络爬虫《爬取get请求的页面数据》
一.urllib库 urllib是python自带的一个用于爬虫的库,其主要作用就是可以通过代码模拟浏览器发送请求.其常被用到的子模块在python3中的为urllib.request和urllib. ...
- 优化-最小化损失函数的三种主要方法:梯度下降(BGD)、随机梯度下降(SGD)、mini-batch SGD
优化函数 损失函数 BGD 我们平时说的梯度现将也叫做最速梯度下降,也叫做批量梯度下降(Batch Gradient Descent). 对目标(损失)函数求导 沿导数相反方向移动参数 在梯度下降中, ...
- 二叉树,B树,B+树,红黑树 简介
什么是二叉树? 在计算机科学中,二叉树是每个节点最多有两个子树的树结构.通常子树被称作“左子树”和“右子树”,左子树和右子树同时也是二叉树.二叉树的子树有左右之分,并且次序不能任意颠倒.二叉树是递归定 ...
- LinearLayout 线性布局
android:orientation 设置布局管理器内组件的排列方式,可设置为 horizontal (水平排列).vertical (垂直排列) android:gravity 设置布局管理器内组 ...
- Cisco ASR1002-X告警处理
客户反馈其机房的ASR100X告警,拍照如下图: 处理步骤: 查看日志未发现异常 查看CPU/内存/风扇未发现异常 3.清除告警#clear facility alarm依旧告警 4.shutdown ...