MaBatis(5)输入/输出映射
本次全部学习内容:MyBatisLearning
public class UserCustomer extends User{
}
在UserView.java中:
//在这里包装所需要的查询条件
//用户综合查询查询条件
private UserCustomer userCustomer;
public UserCustomer getUserCustomer() {
return userCustomer;
}
public void setUserCustomer(UserCustomer userCustomer) {
this.userCustomer = userCustomer;
}
//综合查询
public List<User> findBySelect(UserView userView) throws Exception;
在UserMapper.xml文件中实现查询的代码:
<!-- 综合查询 -->
<select id="findBySelect" parameterType="com.MrChengs.po.UserView" resultType="com.MrChengs.po.UserCustomer" >
select * from user where user.id=#{userCustomer.id} and user.username like '%${userCustomer.username}%'
</select>
//综合查询
@Test
public void testfindBySelect() throws Exception{
SqlSession sqlSession = getSqlSessionFactory().openSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); UserView userView = new UserView(); UserCustomer userCustomer = new UserCustomer();
userCustomer.setId(16);
userCustomer.setUsername("小明"); userView.setUserCustomer(userCustomer); List<User> user = mapper.findBySelect(userView);
for(User u : user){
System.out.println(u);
}
sqlSession.close();
}
查询成功:
DEBUG [main] - ==> Preparing: select * from user where user.id=? and user.username like '%小明%'
DEBUG [main] - ==> Parameters: 16(Integer)
DEBUG [main] - <== Total: 1
User [id=16, username=张小明, birthday=null, sex=1, address=河南郑州]
生成的动态代理对象中是根据mapper方法的返回值类型确定是调用selectOne(返回单个对象调用)还是selectList (返回集合对象调用 ).
//擦寻用户信息总数
public int findUserCount(UserView userView) throws Exception;
在UserMapper.xml文件中:
<!-- 输出映射查询用户信息总数 -->
<select id="findUserCount" parameterType="com.MrChengs.po.UserView" resultType="int">
select count(*) From user where sex=#{userCustomer.sex} and user.username like '%${userCustomer.username}%'
</select>
//查询用户信息总数
@Test
public void testfindUserCount() throws Exception{
SqlSession sqlSession = getSqlSessionFactory().openSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); UserView userView = new UserView(); UserCustomer userCustomer = new UserCustomer();
userCustomer.setSex(1);
userCustomer.setUsername("小明"); userView.setUserCustomer(userCustomer); int count = mapper.findUserCount(userView);
System.out.println(count);
sqlSession.close();
}
结果:
DEBUG [main] - Opening JDBC Connection
DEBUG [main] - Created connection 963522361.
DEBUG [main] - Setting autocommit to false on JDBC Connection [com.mysql.jdbc.JDBC4Connection@396e2f39]
DEBUG [main] - ==> Preparing: select count(*) From user where sex=? and user.username like '%小明%'
DEBUG [main] - ==> Parameters: 1(Integer)
DEBUG [main] - <== Total: 1
3
DEBUG [main] - Resetting autocommit to true on JDBC Connection [com.mysql.jdbc.JDBC4Connection@396e2f39]
//测试resultMap
public User findByMap(int id) throws Exception;
在UserMapper.xml中:
<!-- 简单测试resultMap的使用 -->
<!-- type:resultMap最终映射的java 对象类型,可以使用别名/全类名 -->
<!-- id:使当前resultMap的唯一标识 --> <resultMap type="com.MrChengs.po.User" id="ByMap"> <!-- id标识查询结果的唯一标识 -->
<!-- column:查询出来的列名 -->
<!-- property:type指定类型的pojo类型的映射属性,最终resultMap对cloumn和property做出一对一的映射 -->
<id column="_id" property="id"/> <!-- result:对普通列名的映射 -->
<!-- column:查询出来的列名 -->
<!-- property:和type的类型一一映射 -->
<result column="_username" property="username"/>
</resultMap>
<select id="findByMap" parameterType="int" resultMap="ByMap">
select id _id,username _username from user where id=#{id}
</select>
//测试resultMap
@Test
public void testfindByMap() throws Exception{
SqlSession sqlSession = getSqlSessionFactory().openSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); User user = mapper.findByMap(1);
System.out.println(user); sqlSession.close();
}
DEBUG [main] - Opening JDBC Connection
DEBUG [main] - Created connection 2050835901.
DEBUG [main] - Setting autocommit to false on JDBC Connection [com.mysql.jdbc.JDBC4Connection@7a3d45bd]
DEBUG [main] - ==> Preparing: select id _id,username _username from user where id=?
DEBUG [main] - ==> Parameters: 1(Integer)
DEBUG [main] - <== Total: 1
User [id=1, username=王五, birthday=null, sex=0, address=null]
MaBatis(5)输入/输出映射的更多相关文章
- mybatis入门基础(四)----输入映射和输出映射
一:输入映射 通过parameterType指定输入参数的类型,类型可以是简单类型.hashmap.pojo的包装类型. 1.1.传递pojo的包装对象 1.1.1.需求描述 完成用户信息的综合查询, ...
- 【Mybatis架构】输入、输出映射
前言综述: 其实在我们分析Mybatis的查询缓存或者是一些简介的时候,我们就不难看到有关于Mybatis输入输出映射的东西,比如说: 但是一直没有想起来系统的来总结一下这方面的相关知识,偶然看到 ...
- Spring+SpringMVC+MyBatis深入学习及搭建(四)——MyBatis输入映射与输出映射
转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6878529.html 前面有讲到Spring+SpringMVC+MyBatis深入学习及搭建(三)——My ...
- 【mybatis深度历险系列】mybatis中的输入映射和输出映射
在前面的博文中,小编介绍了mybatis的框架原理以及入门程序,还有mybatis中开发到的两种方法,原始开发dao的方法和mapper代理方法,今天博文,我们来继续学习mybatis中的相关知识,随 ...
- JAVAEE——Mybatis第二天:输入和输出映射、动态sql、关联查询、Mybatis整合spring、Mybatis逆向工程
1. 学习计划 1.输入映射和输出映射 a) 输入参数映射 b) 返回值映射 2.动态sql a) If标签 b) Where标签 c) Sql片段 d) Foreach标签 3.关联查询 a) 一对 ...
- mybatis基础系列(二)——基础语法、别名、输入映射、输出映射
增删改查 mapper根节点及其子节点 mybatis框架需要读取映射文件创建会话工厂,映射文件是以<mapper>作为根节点,在根节点中支持9个元素,分别为insert.update.d ...
- Mybatis学习总结(四)——输入映射和输出映射
在前面几篇文章的例子中也可以看到mybatis中输入映射和输出映射的身影,但是没有系统的总结一下,这篇博客主要对这两个东东做一个总结.我们知道mybatis中输入映射和输出映射可以是基本数据类型.ha ...
- mybatis进阶--输入映射和输出映射
我们知道,mapper.xml是我们配置操作数据库的sql语句的地方.其中每个sql语句对应着一个方法,每个方法都有自己的输入输出参数类型.那么这些类型都是怎么配置的呢?今天我们来一起学习下. 输入映 ...
- mybatis进阶--mapper输入映射和输出映射
我们知道,mapper.xml是我们配置操作数据库的sql语句的地方.其中每个sql语句对应着一个方法,每个方法都有自己的输入输出参数类型.那么这些类型都是怎么配置的呢?今天我们来一起学习下. 输入映 ...
随机推荐
- 测试域名ping延迟脚本
#!/bin/bash if [ $# -lt 1 ]thenecho "Usage:avg file1"exit 1fiecho "================== ...
- [android] 两种异步方式
使用AsyncTask开启子线程获取服务器数据,更新界面UI /** * 异步任务 * * @author taoshihan * */ public class HttpAsyncTask exte ...
- LDAP概念了解
LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP.LDAP支持TCP/IP,这对访问Internet是必须的. L ...
- TCP基础知识(三)重传、流量控制、拥塞控制
TCP详解(3):重传.流量控制.拥塞控制…… 数据传输 在TCP的数据传送状态,很多重要的机制保证了TCP的可靠性和强壮性.它们包括:使用序号,对收到的TCP报文段进行排序以及检测重复的数据:使用校 ...
- SQL Join 语句
SQL Join 语句 SQL 中每一种连接操作都包括一个连接类型和连接条件. 连接类型 决定了如何处理连接条件不匹配的记录. 连接类型 返回结果 inner join 只包含左右表中满足连接条件的记 ...
- 移动前端开发之viewport,devicePixelRatio的深入理解
移动前端开发之viewport的深入理解 在移动设备上进行网页的重构或开发,首先得搞明白的就是移动设备上的viewport了,只有明白了viewport的概念以及弄清楚了跟viewport有关的met ...
- csharp: Converting chinese character to Unicode
Function chinese2unicode(Str) Dim Str_one:Str_one = "" Dim Str_unicode:Str_unicode = " ...
- 洛谷P1081 开车旅行(倍增)
题意 题目链接 Sol 咕了一年的题解.. 并不算是很难,只是代码有点毒瘤 \(f[i][j]\)表示从\(i\)号节点出发走了\(2^j\)轮后总的距离 \(da[i][j]\)同理表示\(a\)的 ...
- JQuery总结摘要
一 概述 1.JQuery是什么? JQuery是一个JavaScript库,简化了JS操作,扩展了JS功能. 2.分离原则 JQuery遵循导入与使用分离的原则,即使用一个<script> ...
- JavaScript的进阶之路(三)引用类型之Object类型和Array类型
引用类型 Object类型 function a(num){ if(num>3){ a(--num); } console.log(num); } a(5); //如何创建对象的实例 var o ...