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数据库 ...
随机推荐
- test20181024 hao
题意 分析 考场10分 直接\(O(nm)\)模拟即可. #include<cstdlib> #include<cstdio> #include<cmath> #i ...
- 使用bit管理npm包
npm 包给共享,团队写作有好多问题需要解决,类似的解决方案有lerna yarn 使用monorepo,bit 官方有相关的比较 以下只说明如何进行简单的项目使用 网站 https://bitsrc ...
- System.Drawing.Drawing2D.LinearGradientBrush
https://msdn.microsoft.com/en-us/library/system.drawing.drawing2d.lineargradientbrush(v=vs.110).aspx ...
- vs2005 sp1 补丁的安装问题
最近做windows mobile 6.0的手机软件开发,听说用vs2005 开发的话最少得装vs2005 sp1,于是去官网上下了VS80sp1-KB926604-X86-CHS.exe 补丁 .运 ...
- Phonegap 工程项目介绍
一.工程项目的路径在www下面,www下面的文件如下图 1. index.html <!DOCTYPE html> <!-- Licensed to the Apache Softw ...
- java web jsp
一.WEB应用的目录结构 通常我们是在IDE中创建web应用程序,IDE自动为我们实现了WEB的目录结构,下面来看如何徒手创建一个WEB程序. 首先来看一下Tomcat自带的一个web应用的目录结构 ...
- 教你判断一个APP页面是原生的还是H5页面 。(还没看)
来源:https://www.25xt.com/appdesign/11851.html 刚好是周末,无意之间学堂君在收集相关资料的时候,发现有部分童鞋在问<如何判断一个APP页面是不是H5页面 ...
- umount时目标忙解决办法
标签(空格分隔): ceph ceph运维 osd 在删除osd后umount时,始终无法umonut,可以通过fuser查看设备被哪个进程占用,之后杀死进程,就可以顺利umount了. [root@ ...
- Lucene 中的Tokenizer, TokenFilter学习
lucene中的TokenStream,TokenFilter之间关系 TokenStream是一个能够在被调用后产生语汇单元序列的类,其中有两个类型:Tokenizer和TokenFilte ...
- Controlling DNS prefetching
Controlling DNS prefetching IN THIS ARTICLE Background Configuring prefetching in the browser Contro ...