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运行时内存划分与垃圾回收--以及类加载机制基础
			----JVM运行时内存划分----不同的区域存储的内容不同,职责因为不同1.方法区:被线程共享,存储被JVM加载的类的信息,常量,静态变量等2.运行时常量池:属于方法区的一部分,存放编译时期产生的字 ... 
- MongoDB备份恢复与导出导入
			说明:本文所有操作均在win7下的MongoDB3.4.4版本中进行. 一.备份与恢复 1. 备份: mongodump -h IP --port 端口 -u 用户名 -p 密码 -d数据库 -o 文 ... 
- 使用angular4和asp.net core 2 web api做个练习项目(一)
			这是一篇学习笔记. angular 5 正式版都快出了, 不过主要是性能升级. 我认为angular 4还是很适合企业的, 就像.net一样. 我用的是windows 10 安装工具: git for ... 
- 最近折腾老机器:还是 Xp 最好!
			闲来无事,折腾机器. -------------------------------------------------------------- 硬件: CPU:amd x2450 Memory:6 ... 
- js返回到上一个页面刷新与不刷新的写法
			返回上个页面刷新: <script>window.location.href=document.referer</script> 返回上个页面不刷新 <script> ... 
- 移动端车牌识别sdk开发包(可下载)
			移动端车牌识别是一项基于OCR识别的应用技术.移动端车牌识别过程主要包含五个步骤,其中包括图像采集.图像预处理.车牌定位.字符分割.字符识别.输出结果等一系列计算机算法运算, 第一步[图像采集]:此步 ... 
- 初学者最易懂的git教程在这里!
			一.git简介: Linux创建了Linux,但是Linux的发展壮大是由世界各地的热心志愿者参与编写的?那么那么多份的代码是怎么合并的呢?之前是在2002年以前,世界各地的志愿者把源代码文件通过di ... 
- 树莓派配置允许WINDOWS远程桌面 x11nvc+xrdp
			20171109 网上很多设置教程都比较老旧,于是自己整理一下顺便分享下 开启SSH后,使用PUTTY连接. 安装x11vnc sudo apt-get install x11vnc 设置密码 sud ... 
- Hibernate开发文档
			hibernate配置 映射约束文件 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3. ... 
- 【Tesseract】Tesseract 的训练流程
			在泰迪杯A题中,我刚刚接触了Tesseact,其中训练字库中遇到了较多的问题.所以在此记录一下,也当做一个笔记,省得以后忘记. 为了方便 ,将tif命名格式设为[lang].[fontname].ex ... 
