Mybatis 实用篇(三)参数处理
Mybatis 实用篇(三)参数处理
sql 语句中的参数 parameterType 可以省略不写。
一、参数封装
1.1 单个参数处理
public interface UserMapper {
User getUser(int id);
}
sql 中 #{} 的值可以随意,mybatis 不做任何处理,eg:
<select id="getUser" parameterType="int" resultType="User">
select * from user where id=#{xxx};
</select>
1.2 多个参数处理
多个参数 mybatis 封装成 Map,默认参数的 key 为 param1, param2...,也可以使用 @Param("id") 指定 key 的值
User getUser(@Param("id") int id, String name);
sql 可以有如下写法:
<select id="getUser" resultType="User">
<!--select * from user where id=#{0} and name=#{1};-->
<!--select * from user where id=#{param1} and name=#{param2};-->
<!--select * from user where id=#{0} and name=#{param2};-->
select * from user where id=#{id} and name=#{param2};
</select>
1.3 Java Bean
User getUser(User user);
sql 可以有如下写法:
<select id="getUser" resultType="User">
select * from user where id=#{id} and name=#{name};
</select>
1.4 Map
User getUser(User user);
sql 可以有如下写法:
<select id="getUser" resultType="User">
select * from user where id=#{id} and name=#{name};
</select>
思考:
User getUser(@Param("id") int id, String name);
id ==> #{id/param1/0} name ==> #{param2/1}
User getUser(int id, @Param("user") User user);
id ==> #{id/param1/0} name ==> #{param2.name/user.name}
# Collection ==> list, Array ==> array. eg: 取出 list 中的第一个值
User getUser(List<User> users);
id ==> #{list[0]}
二、#{} 和 ${} 区别
#{} 预编译,而 ${} 仅进行字符串拼接。
实际工作中,尽量使用 #{} ,特殊场合需要使用 ${},如:
select * from ${tablename}
三、#{} 参数
mybatis 值为 null 时默认对应数据库中的 TYPES.OHTER,可以修改全局的配置:
{email, javaType=NULL}
每天用心记录一点点。内容也许不重要,但习惯很重要!
Mybatis 实用篇(三)参数处理的更多相关文章
- Mybatis 实用篇(四)返回值类型
Mybatis 实用篇(四)返回值类型 一.返回 List.Map List<User> getUsers(); <select id="getUsers" re ...
- MyBatis 实用篇(一)入门
MyBatis 实用篇(一)入门 MyBatis(http://www.mybatis.org/mybatis-3/zh/index.html) 是一款优秀的持久层框架,它支持定制化 SQL.存储过程 ...
- MyBatis 实用篇(二)配置文件
MyBatis 实用篇(二)配置文件 一.全局配置 全局配置:http://www.mybatis.org/mybatis-3/zh/configuration.html <?xml versi ...
- mybatis第二篇—参数绑定
不管我们在做数据库作业或者任务还是当时的仅靠jdbc来写一个管理系统的时候,sql语句需要一些参数,从而来实现模糊查询,精确查询,插入数据,更新数据和删除数据.这些参数,在mybatis里面,又该如何 ...
- Mybatis sql映射文件浅析 Mybatis简介(三)
简介 除了配置相关之外,另一个核心就是SQL映射,MyBatis 的真正强大也在于它的映射语句. Mybatis创建了一套规则以XML为载体映射SQL 之前提到过,各项配置信息将Mybatis应用的整 ...
- Mybatis sql映射文件浅析 Mybatis简介(三) 简介
Mybatis sql映射文件浅析 Mybatis简介(三) 简介 除了配置相关之外,另一个核心就是SQL映射,MyBatis 的真正强大也在于它的映射语句. Mybatis创建了一套规则以XML ...
- MyBatis高级篇之整合ehcache缓存框架
MyBatis高级篇之整合ehcache缓存框架 2017-09-01 0 Comments 1,671 Views 0 Times 一.前言 MyBatis为我们提供了Cache接口,也提供 ...
- Docker实用篇
Docker实用篇 0.学习目标 1.初识Docker 1.1.什么是Docker 微服务虽然具备各种各样的优势,但服务的拆分通用给部署带来了很大的麻烦. 分布式系统中,依赖的组件非常多,不同组件之间 ...
- 【基于WinForm+Access局域网共享数据库的项目总结】之篇三:Access远程连接数据库和窗体打包部署
篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库 ...
随机推荐
- @Transactional、Spring的声明式事务
传送门 一.Spring的声明式事务 需要在xml文件中配置 <!--配置事务管理器类--> <bean id="transactionManager" clas ...
- Coding(码市)教程(一):基础配置
作者:Adaaaagio 出处:http://www.cnblogs.com/zyx418 欢迎转载,希望能够帮到更多的人,转载也请保留这段申明,谢谢! 初识coding是在新入职的公司,前辈说我们用 ...
- Android SDK无法更新的问题解决办法
问题: SSL hostname in certificate didn't matchhostname in certificate didn't match: <dl-ssl.google. ...
- pthread中取消线程
取消线程:告诉一个线程关掉自己,取消操作允许线程请求终止其所在进程中的任何其他线程.不希望或不需要对一组相关的线程执行进一步操作时,可以选择执行取消操作.取消线程的一个示例是异步生成取消条件. 对于c ...
- 如何查看 ThinkPHP5.1 的升级说明
如何查看 ThinkPHP5.1 的升级说明 ThinkPHP 官方对于升级历史都有说明,这个官方做的非常不错. 在官方的手册中就有. 比如从 ThinkPHP 5.1.26 升级到 ThinkPHP ...
- python删除x天前文件及文件夹
#!/usr/bin/env python # -*- coding:utf-8 -*- import os, time, sys, shutil def delFiles(beforeSec, di ...
- python 常见问题总结
1.ModuleNotFoundError: No module named 'urllib2' 在python3.x版本中,urllib和urllib2包集合成在一个包了import urllib2 ...
- 5.Appium+真机Demo
1.连接真机后,执行代码时出现错误:A new session could not be created. (Original error: Could not extract PIDs from p ...
- [转]命令行在IIS添加虚拟目录
来自:http://www.jb51.net/softjc/29702.htmlMkwebdir -c LocalHost -w "Default Web Site" –v Com ...
- mysql-1安装和数据库的管理
1.安装 直接docker安装,客户端使用Navicat Premium. docker run -d --name csjmysql -p 3306:3306 -e MYSQL_ROOT_PASSW ...