0
点赞
收藏
分享

微信扫一扫

MyBatis框架之Dao代理(二)

陬者 2022-03-30 阅读 75


多个参数-使用对象

使用java 对象传递参数, java 的属性值就是 sql 需要的参数值。 每一个属性就是一个参数。

语法格式: #{ property,javaType=java 中数据类型名,jdbcType=数据类型名称 }

javaType, jdbcType 的类型MyBatis 可以检测出来,一般不需要设置。常用格式 #{ property }

MyBatis框架之Dao代理(二)_java

创建保存参数值的对象 QueryParam

MyBatis框架之Dao代理(二)_后端_02

接口方法:

List< Student > selectMultiObject(QueryParam queryParam);

mapper 文件:

MyBatis框架之Dao代理(二)_测试方法_03

测试方法:

MyBatis框架之Dao代理(二)_sql_04

多个参数-按位置

参数位置从 0 开始, 引用参数语法 #{ arg 位置 } , 第一个参数是#{arg0}, 第二个是#{arg1}

注意:mybatis-3.3 版本和之前的版本使用#{0},#{1}方式, 从mybatis3.4 开始使用#{arg0}方式。

接口方法:

List< Student> selectByNameAndAge(String name,int age);

mapper 文件

MyBatis框架之Dao代理(二)_sql_05

测试方法:

MyBatis框架之Dao代理(二)_java_06

多个参数-使用 Map

Map 集合可以存储多个值,使用 Map 向mapper 文件一次传入多个参数。Map 集合使用String 的key,

Object 类型的值存储参数。 mapper 文件使用 # { key } 引用参数值。

例如:

Map<String,Object> data = new HashMap<String,Object>(); 

          data.put(“myname”,”李力”);

          data.put(“myage”,20);

接口方法:

​List< Student> selectMultiMap(Map<String,Object> map);​

mapper 文件:

MyBatis框架之Dao代理(二)_测试方法_07         ​测试方法:

MyBatis框架之Dao代理(二)_测试方法_08

和$

#:占位符,告诉mybatis 使用实际的参数值代替。

并使用PrepareStatement 对象执行sql 语句, #{…}代替 sql 语句的“?”。

这样做更安全,更迅速,通常也是首选做法,

mapper 文件

MyBatis框架之Dao代理(二)_sql_09

转为 MyBatis 的执行是:

​String sql=” select id,name,email,age from student where id=?”; PreparedStatement ps = conn.prepareStatement(sql); ps.setInt(1,1005);​

解释:

where id=? 就 是 where id=#{studentId} ps.setInt(1,1005) , 1005 会替换掉 #{studentId}

字符串替换,告诉mybatis使用 字符串替换,告诉mybatis 使用字符串替换,告诉mybatis使用包 含的“字符串”替换所在位置。使用Statement 把sql 语句和${}的内容连接起来。主要用在替换表名,列名,不同列排序等操作。

**例 1: **

分别使用 id , email 列查询 Student 

接口方法:

Student findById(int id);

Student findByEmail(String email);

mapper 文件:

MyBatis框架之Dao代理(二)_sql_10

测试方法:

MyBatis框架之Dao代理(二)_java_11

例 2:通用方法,使用不同列作为查询条件

接口方法:

Student findByDiffField(@Param("col") String colunName,@Param("cval") 

Object value);

mapper 文件:

MyBatis框架之Dao代理(二)_后端_12

测试方法:

MyBatis框架之Dao代理(二)_java_13

举报

相关推荐

0 条评论