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这些冷知识你知道吗?
1)jvm有很多种,其实jvm是一个标准,sun做的那个叫hotspot,作者就是后来v8的作者lars bak,其他公司也做过jvm,其中做得比较好的有bea的jrockit,其他的包括ibm的r9 ...
- NodeJs之数据库异常处理
数据库异常 NodeJs版本:4.4.4 数据库链接错误 使用nodejs处理异常最麻烦不过,这里我抛开nodejs提供的domain和一些第三方库专门处理的东西.操作数据库是我们常用的功能.通过回调 ...
- Mysql编写sql语句的小技巧
1.查询数据(保证查询性能) SELECT * 和 SELECT t.id , t.name:后者性能其实总体优于前者. 2.在查询的时候最好给表起个 别名,方便找到表中要查询的字段.执行sql的进行 ...
- tp5引入第三方类库
1.在/public/index.php中添加 define('EXTEND_PATH', '../extend/'); 2./extend/lib 中添加第三方类,类文件的名称和类名一样,命名空间为 ...
- sql的基本知识
一.什么是sql? 全称:"结构化查询语言(Structured Query Language)",是1974年由Boyce和Chamberlin提出来的,现已经成为关系数据库的 ...
- swift 上的 lazy
lazy顾名思义就是慢吞吞的,万非得一就不动. 那么一个变量也是如此,只有你第一次使用的时候才进去加载.所有又称为延迟加载,需要的时候才加载. ========= 这样做的好处: 1. 模块化,把对象 ...
- 在windows下,将mysql离线数据文件导入本地mysql数据库
1. 查看mysql路径 SELECT @@basedir AS basePath FROM DUAL 其实mysql5.6 的数据文件在 C:\ProgramData\MySQL\MySQL Ser ...
- bug:翻页
本章主要分享下,个人测试经历中遇见过的翻页bug 一.列表翻页 1.bug1:去请求翻页page=0,从0页开始算.一般来说page=0 和 page=1的数据是一模一样,所以翻第2页时会发现和第1页 ...
- Warning: Path must be a string . Received null Use --force to continue
用grunt监视文件,当文件修改时,出现'Warning: Path must be a string . Received null Use --force to continuechuxian . ...
- return flase 作用
调用return false的时候,他实际上做了三件事 event.preventDefault(); 禁止默认行为 event.stopPropagation(); 阻止冒泡 ...