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 ...
随机推荐
- Java Condition
在Condition中,用await()替换wait(),用signal()替换notify(),用signalAll()替换notifyAll(),传统线程的通信方式,Condition都可以实现, ...
- 【ASP.NET MVC 学习笔记】- 20 ASP.NET Web API
本文参考:http://www.cnblogs.com/willick/p/3441432.html 1.ASP.NET Web API(本文简称Web API),是基于ASP.NET平台构建REST ...
- github上传项目
前置说明: 1.github上已经创建好的repositories,没有的可以自己创建一个 2.已经安装好的git,下载源推荐https://pan.baidu.com/s/1kU5OCOB#list ...
- LeetCode 169. Majority Element (众数)
Given an array of size n, find the majority element. The majority element is the element that appear ...
- swift 之 mustache模板引擎
用法: Variable Tags {{name}} 用来渲染值name datas: let data = ["value": "test"] ------- ...
- 使用缓存Memcache存储access_token
接上篇文本,千辛万苦终于拿到了access_token. 正常情况下access_token有效期为7200秒,重复获取将导致上次获取的access_token失效.目前,获取access_token ...
- Elasticsearch 索引别名与Template
在使用elasticsearch的时候,经常会遇到需要淘汰掉历史数据的场景. 为了方便数据淘汰,并使得数据管理更加灵活,我们经常会以时间为粒度建立索引,例如: 每个月建立一个索引:monthly-20 ...
- SQL语句查询表中的所有约束
select * from sysobjects where parent_obj in(select id from sysobjects where name='表名') 或者 exec sp_h ...
- HDFS--笔记
HDFS的简介 分布式的文件系统,基于流数据模式访问和处理超大文件的分布式文件系统 Hadoop Distributed File System HDFS的优点 处理超大文件 流数据访问 运行廉价的商 ...
- ⒀bootstrap组件 选项卡 基础案例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&q ...