MyBatis从入门到放弃二:传参
前言
我们在mapper.xml写sql,如果都是一个参数,则直接配置parameterType,那实际业务开发过程中多个参数如何处理呢?
从MyBatis API中发现selectOne和selectLit方法重载第一个传statement,第二个传Object。那么我们则用Map来传多个参数。
准备工作
开发环境、pom.xml、mapper.xml、log4j.properties同上文。
mapper.xml SQL实现
<select id="queryUserByAddress" resultType="com.autohome.model.User">
select * from t_userinfo where name=#{name,javaType=String,jdbcType=VARCHAR} and address=#{address}
</select>
单元测试
创建Map传参,map的key值和mapper sql参数名称相对应。
@Test
public void queryUserByNameAddress(){
SqlSession sqlSession=null;
try{
sqlSession=sqlSessionFactory.openSession();
Map<String,Object> map =new HashMap<String,Object>();
map.put("name","kobe");
map.put("address","usa");
User user = sqlSession.selectOne("com.autohome.mapper.User.queryUserByAddress",map);
System.out.println("id:"+user.getId()+",name:"+user.getName()+","+user.getAddress());
}catch(Exception e){
e.printStackTrace();
}finally {
sqlSession.close();
}
}
使用RowBounds实现分页
在看mybatis API时发现了rowbounds参数,可以用来实现分页,不过他并不是直接在sql中实现,只是在查询结果集的基础上实现数据分页,小数量可用,大数据量则不推荐,也权当是做个demo
@Test
public void queryPagedUsers(){ SqlSession sqlSession=null; try { sqlSession=sqlSessionFactory.openSession();
RowBounds row=new RowBounds(10, 10);
List<User> list = sqlSession.selectList("com.autohome.mapper.User.queryUsers",null,row);
System.out.println("size:"+list.size());
for (User user:list){
System.out.println("id:"+user.getId()+",name:"+user.getName()+","+user.getAddress());
}
} catch (Exception e) {
e.printStackTrace();
}finally {
sqlSession.close();
}
}
附DEBUG截图

总结
起初学习java时总是不知从何学起,总算是在跌跌撞撞中入了门,我自己总结为学习java没什么捷径可言,唯能做的就是敲demo 看文档、敲demo 看文档、敲demo 看文档。
MyBatis从入门到放弃二:传参的更多相关文章
- MyBatis基础入门《十二》删除数据 - @Param参数
MyBatis基础入门<十二>删除数据 - @Param参数 描述: 删除数据,这里使用了@Param这个注解,其实在代码中,不使用这个注解也可以的.只是为了学习这个@Param注解,为此 ...
- MyBatis从入门到精通(二):MyBatis XML方式的基本用法之Select
最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 1. 明确需求 书中提到的需求是一个基 ...
- hive从入门到放弃(二)——DDL数据定义
前一篇文章,介绍了什么是 hive,以及 hive 的架构.数据类型,没看的可以点击阅读:hive从入门到放弃(一)--初识hive 今天讲一下 hive 的 DDL 数据定义 创建数据库 CREAT ...
- MyBatis从入门到放弃六:延迟加载、一级缓存、二级缓存
前言 使用ORM框架我们更多的是使用其查询功能,那么查询海量数据则又离不开性能,那么这篇中我们就看下mybatis高级应用之延迟加载.一级缓存.二级缓存.使用时需要注意延迟加载必须使用resultMa ...
- Go语言从入门到放弃(二) 优势/关键字
本来这里是写数据类型的,但是规划了一下还是要一步步来,那么本篇就先介绍一下Go语言的 优势/关键字 吧 本章转载 <The Way to Go>一书 Go语言起源和发展 Go 语 言 起 ...
- Mybatis中使用 #{} 和 ${} 向sql传参时的区别
今天在工作时,使用MyBatis中向sql传递两个参数时,一直显示SQL语法错误,仔细检查,才发现传入的参数被加上了引号,导致传入的参数(要传入的参数是表名)附近出现语法错误. 错误写法: } a } ...
- MyBatis从入门到放弃一:从SqlSession实现增删改查
前言 开博客这是第一次写系列文章,从内心上讲是有点担心自己写不好,写不全,毕竟是作为java/mybatis学习的过程想把学习的路线和遇到的问题都总结下来,也让知识点在脑海里能形成一个体系. 开发环境 ...
- MyBatis从入门到放弃四:一对多关联查询
前言 上篇学习了一对一关联查询,这篇我们学习一对多关联查询.一对多关联查询关键点则依然是配置resultMap,在resultMap中配置collection属性,别忽略了ofType属性. 搭建开发 ...
- MyBatis从入门到放弃七:二级缓存原理分析
前言 说起mybatis的一级缓存和二级缓存我特意问了几个身边的朋友他们平时会不会用,结果没有一个人平时业务场景中用. 好吧,那我暂且用来学习源码吧.一级缓存我个人认为也确实有些鸡肋,mybatis默 ...
随机推荐
- 深入C#的String类
- Windows查看服务
开始→运行(Windows+R快捷键也能调出运行)→输入:services.msc→确定
- python基本数据类型之整型和浮点型
python基本数据类型之数字与浮点型 在python3中,整数的数据类型为int,而浮点数的数据类型为float.python2中整数可以是int和long(长整型)两种类型,python3只保留了 ...
- Postgres通用翻页函数
CREATE OR REPLACE FUNCTION fun_turnpage( PageSize INT, PageIndex INT, FldSort VARCHAR, StrCondition ...
- vue keep-alive解决关闭标签动态缓存问题
直接上代码: <keep-alive :include='topNavMentNames'> <router-view ></router-view> </k ...
- 用Python进行有进度条的π计算
1.tqdm是一个强大的终端进度条工具,我利用pip获取tqdm函数库. 2编写代码 2.1进行π的计算 from random import random from math import sqrt ...
- springmvc与fastjson的整合,注解@RequestBody的使用
项目内容用的是jetty框架,传输数据格式是json格式,有一天我心血来潮,把项目又搭建了一次,完了,卡在了数据传输的格式上,明明原来框架直接用fastjson,但是我用就是不对,总是报fastjso ...
- Ubuntu 16.04 python和OpenCV安装
Ubuntu 16.04 python和OpenCV安装:最进在做深度学习和计算机视觉的有关内容,因此要在python中用到opencv.我的电脑装的是Ubuntu 16.04,python 2.7和 ...
- django rest framework serializers解读
serializers是什么?官网是这样的"Serializers allow complex data such as querysets and model instances to b ...
- javaweb目录结构简介
以上图说明: bbs目录代表一个web应用 bbs目录下的html,jsp文件可以直接被浏览器访问 WEB-INF目录下的资源是不能直接被浏览器访问的 web.xml文件是web程序的主要配置文件 所 ...