Mybatis(四)实践须知

Mybatis 不同类型sql 语句执行结果:

Select:

  • 查询结果为空时,如果是基本类型返回值为默认的初始化值 ;类对象返回值为null;Map、List 等集合类对象返回值为new 空对象。

Update/Delete:

  • 影响结果为空时,返回值为0;影响结果不为空时,返回值为影响条数。
Mybatis xml文件中ResultMap 与 ResultType区别
  • ResultType:当使用resultType做SQL语句返回结果类型处理时,对于SQL语句查询出的字段在相应的pojo中必须有和它相同的字段对应,而resultType中的内容就是pojo在本项目中的位置
  • resultMap:当使用resultMap做SQL语句返回结果类型处理时,通常需要在mapper.xml中定义resultMap进行pojo和相应表字段的对应。
Mybatis xml文件中parameterType
  • 基本数据类型:int,string,long,Date;
  • 复杂数据类型:类和Map

基本数据类型:#{参数} 获取参数中的值
复杂数据类型:#{属性名} ,map中则是#{key}

Mybatis xml #{参数} ${参数}区别

1.#{}是预编译处理,$ {}是字符串替换。
Mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值;
Mybatis在处理$ {}时,就是把$ {}替换成变量的值。

2.使用#{}可以有效的防止SQL注入,提高系统安全性。
MyBatis排序时使用order by 动态参数时需要注意,用$而不是#

  1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。
  2. $将传入的数据直接显示生成在sql中。
  3. #方式能够很大程度防止sql注入。
  4. $方式无法防止Sql注入。
  5. $方式一般用于传入数据库对象,例如传入表名。
  6. #{}方式一般用于传入字段值。
  7. 一般能用#的就别用$。
Mybatis 动态sql中OGNL语言

mybatis 动态sql中使用的是OGNL语句,对于不同的类型取值方式不一样:

  1. 8大基本数据类型:_parameter
  2. 自定义类型:属性名
  3. 集合:数组(array) List(list) Map(_parameter)

foreach的时候最关键的也是最容易出错的就是collection属性,该属性是必须指定的,但是在不同情况下,该属性的值是不一样的,主要有一下3种情况:

如果传入的是单参数且参数类型是一个List的时候,collection属性值为list .
如果传入的是单参数且参数类型是一个array数组的时候,collection的属性值为array .
如果传入的参数是多个的时候,我们就需要把它们封装成一个Map了,当然单参数也可以封装成map,实际上如果你在传入参数的时候,在MyBatis里面也是会把它封装成一个Map的,map的key就是参数名,所以这个时候collection属性值就是传入的List或array对象在自己封装的map里面的key.

从集合中取出一种类型:
数组:array[索引]
队列:List[索引]/list[].属性名
Map: _parameter.key/key.属性名(_parameter 可省略)


                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值