Mybatis(二)参数(Parameters)传递
Mybatis参数(Parameters)传递
1、.单个参数
可以接受基本类型,对象类型,集合类型的值。这种情况MyBatis可直接使用这个参数,不需要经过任何处理。
<!-- 根据id查询数据表中的一条记录,并封装User对象 -->
<select id="selectById" resultType="com.softjx.model.User">
select t_id as id,t_username as username,t_password password from t_user where t_id=#{id};
</select> <!-- 根据id查询数据表中的一条记录,使用了parameterType限定参数的类型,参数变量名可以随意定义,不受javabean中的属性控制-->
<select id="selectById1" parameterType="java.lang.Integer" resultType="com.softjx.model.User">
select t_id as id,t_username as username,t_password password from t_user where t_id=#{id1};
</select>
2.POJO
当这些参数属于我们业务POJO时,我们直接传递POJO。
<!-- 添加用户 -->
<insert id="insertUser">
insert into t_user (t_username,t_password)
values (#{username},#{password})
</insert> <!-- 添加用户 -->
<!-- 参数可以省略,不管如何,变量名都是javabean中属性名 -->
<insert id="insertUser1" parameterType="com.softjx.model.User">
insert into t_user (t_username,t_password)
values (#{username},#{password})
</insert>
3.Map
我们也可以封装多个参数为map,直接传递。
public int insertUser2(Map<String ,Object> map); <!-- 添加用户 -->
<!-- 参数是map,变量名随意,调用时,map的key要和变量名要一致 ,参数也可以省略-->
<insert id="insertUser2" parameterType="java.util.Map">
insert into t_user (t_username,t_password)
values (#{a},#{b})
</insert> @Test
public void TestInserUser2() {
System.out.println("添加一个用户");
try {
UserMapper mapper=session.getMapper(UserMapper.class);
System.out.println(mapper);
Map<String,Object> map=new HashMap<String,Object>();
map.put("a", "lisi");
map.put("b", "222222");
int count=mapper.insertUser2(map);
session.commit();//这里一定要提交,不然数据进不去数据库中
//session.rollback();
System.out.println(count);
} finally {
session.close();
} }
4.多个参数
任意多个参数,都会被MyBatis重新包装成一个Map传入。Map的key是param1,param2,或者0,1,值就是参数的值。
//添加用户
public int insertUser3(String name,String pass);
<!-- 添加用户 -->
<!-- 带有多个参数,参数名 #{param1},#{param2},或者#{0},#{1},不能使用参数名-->
<insert id="insertUser3" parameterType="java.util.Map">
insert into t_user (t_username,t_password)
values (#{param1},#{param2})
</insert> <insert id="insertUser3" parameterType="java.util.Map">
insert into t_user (t_username,t_password)
values (#{0},#{1})
</insert>
@Test
public void TestInserUser3() {
System.out.println("添加一个用户");
try {
UserMapper mapper=session.getMapper(UserMapper.class);
System.out.println(mapper);
int count=mapper.insertUser3("aaa","bbb");
session.commit();//这里一定要提交,不然数据进不去数据库中
//session.rollback();
System.out.println(count);
} finally {
session.close();
} }
5.命名参数
为参数使用@Param起一个名字,MyBatis就会将这些参数封装进map中,key就是我们自己指定的名字。
//添加用户
public int insertUser4(@Param("name")String name,@Param("pass")String pass);
<!-- 添加用户 -->
<!-- 带有多个参数,使用@Param注解,参数名直接使用定义名, #{name},#{pass}或,#{param1},#{param2},不能用#{0},#{1}-->
<insert id="insertUser4" parameterType="java.util.Map">
insert into t_user (t_username,t_password)
values (#{name},#{pass})
</insert>
@Test
public void TestInserUser4() {
System.out.println("添加一个用户");
try {
UserMapper mapper=session.getMapper(UserMapper.class);
System.out.println(mapper);
int count=mapper.insertUser4("song","555");
session.commit();//这里一定要提交,不然数据进不去数据库中
//session.rollback();
System.out.println(count);
} finally {
session.close();
} }
Mybatis(二)参数(Parameters)传递的更多相关文章
- Mybatis基于代理Dao实现CRUD操作 及 Mybatis的参数深入
Mybatis基于代理Dao实现CRUD操作 使用要求: 1.持久层接口和持久层接口的映射配置必须在相同的包下 2.持久层映射配置中mapper标签的namespace属性取值必须是持久层接口的全限定 ...
- MyBatis(二):Select语句传递参数的集中方案
从别人说的方案中看出,传递参数方案还挺多,不如自己整理下,以便以后使用过程中有个笔记回忆录. 1.传递一个参数的用法: 配置文件 <select id="getById" r ...
- python学习笔记11(函数二): 参数的传递、变量的作用域
一.函数形参和实参的区别 形参全称是形式参数,在用def关键字定义函数时函数名后面括号里的变量称作为形式参数. 实参全称为实际参数,在调用函数时提供的值或者变量称作为实际参数. >>> ...
- mybatis中String参数的传递
mybatis中String参数的传递 Keywords selectKeywords(@Param("key") String key); 可以在mapper方法的参数钱添加 @ ...
- SpringMVC入门(二)—— 参数的传递、Controller方法返回值、json数据交互、异常处理、图片上传、拦截器
一.参数的传递 1.简单的参数传递 /* @RequestParam用法:入参名字与方法名参数名不一致时使用{ * value:传入的参数名,required:是否必填,defaultValue:默认 ...
- Mybatis多参数及实体对象传递
在使用Mybatis的时候,经常会有各种各样的参数传递,不同类型,不同个数的参数. 先上个例子: public List<LifetouchRelease> findOfficeL ...
- MyBatis 各种参数传递方式
MyBatis参数传递方式 情况一:Mapper映射器接口方法参数只有一个且为基本类型 接口方法: public List<UserEntity> selectUserByAge(int ...
- Mybaits多个参数的传递
今天介绍是多个参数传递到映射xml,进行CURD操作 一.使用参数映射的方法进行传递 1在接口写对应的方法 public interface EmployeeMapper { public Emplo ...
- mybatis之参数处理
mybatis的mapper接口需要和mapper映射文件进行关联,上一节已经展示接口方法的返回值是如何和mapper映射文件的resultType进行映射.这一节主要讲解接口方法的参数如何与映射文件 ...
- MyBatis传入参数与parameterType
参考:http://openwares.net/database/mybatis_parametertype.html Mybatis的Mapper文件中的select.insert.update.d ...
随机推荐
- javascript 之异常处理try catch finally--05
语法结构 try catch finally是ECMAScript-262 第三版提供异常处理机制的标准,语法结构如下: try{ //可能会发生的错误代码 } catch(error){ //错误处 ...
- Azure 基础:用 PowerShell 自动登录
PowerShell 是管理 Azure 的最好方式,因为我们可以使用脚本把很多的工作自动化.比如把 Azure 上的虚拟机关机,并在适当的时间把它开机,这样我们就能节省一些开支,当然我们同时也为减少 ...
- Java反射机制(Reflect)解析
一.导读 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力.这一概念的提出很快引发了计算机科学领域关于应用反射性的研究.它首先被程序语言的设计 ...
- PHP中的封装和继承
1. 封装 1.1什么是封装? 通过访问修饰符,将类中的属性和方法进行私有化处理,并提供唯一的设置和读取的 set/get方法,以实现访问控制.这个过程称为封装. 注意:是实现访问控制,而不是拒绝访问 ...
- [Bayesian] “我是bayesian我怕谁”系列 - Exact Inferences
要整理这部分内容,一开始我是拒绝的.欣赏贝叶斯的人本就不多,这部分过后恐怕就要成为“从入门到放弃”系列. 但,这部分是基础,不管是Professor Daphne Koller,还是统计学习经典,都有 ...
- 我的第一个python web开发框架(15)——公司介绍编辑功能
完成登录以后,就会进入后台管理系统的主界面,因为这个是小项目,所以导航菜单全部固化在HTML中,不能修改.一般后台还会有一个欢迎页或关键数据展示的主页面,小项目也没有多大的必要,所以登录后直接进入公司 ...
- Leetcode题解(23)
69. Sqrt(x) 题目 分析,题目实现求一个int数的平方根,最暴力的算法就是逐个遍历,从1开始到x,判断是否有一个数i,其中满足i*i<=x,并且(i+1)*(i+1)>x;这个算 ...
- HDU 5182
#include <iostream> #include <algorithm> #include <cstring> using namespace std; / ...
- How Many Answers Are Wrong
How Many Answers Are Wrong Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/ ...
- DOM遍历 - 过滤
缩写搜索元素的范围 三个最基本的过滤方法是:first(), last() 和 eq(),它们允许您基于其在一组元素中的位置来选择一个特定的元素. 其他过滤方法,比如 filter() 和 not() ...