Mybatis杂记

简介: 使用Mybatis过程中的一些问题

1.关于sql中引用使用$与使用#号的区别:

sql语句方面,使用$是直接替换值操作,而#是进行预处理,下面看个例子。

我们假设实体类Teacher有一个name属性,我们查询name=“张三”老师的信息。

SELECT * FROM  teacher where name = ${name}  等价于   SELECT * FROM  teacher where name =  "张三"

SELECT * FROM  teacher where name = #{name}  等价于   SELECT * FROM  teacher where name =  ?   当执行这条sql的时候,才会赋值name = '张三'.

我们一般使用#来获取引用值,这样避免了sql注入问题,当然在不能jdbc不能使用预处理的情况下我们就得使用$取值了,

比如公司每年的财务报表按照年份命名,我们根据年份来查询标的时候就不能使用#取值了

Select * from ${year}_account  ,这里如果使用#号取值就会报错。

2.生成UUID

select replace(uuid(),'-','');

3.批量更新

主要用到foreach标签,遍历map如下

情况一:多列不同属性

  1.    
  2.         insert ignore into tb_news  
  3.          
  4.            ${key}  
  5.          
  6.         values  
  7.          
  8.            #{params[${key}]}  
  9.          
  10.   >

情况二:同一列不同值更新

update oa_host_resources

           when id= #{key} then  #{idLevelMap[${key}]}

where

   id=#{key}

此种情况参考的是

UPDATE course

   SET name = CASE id

       WHEN 1 THEN 'name1'

       WHEN 2 THEN 'name2'

       WHEN 3 THEN 'name3'

   END,

WHERE id IN (1,2,3)

4.截取字符串并遍历

'${item}'  

目录
相关文章
|
6月前
|
SQL 缓存 Java
Java核心-MyBatis
Java核心-MyBatis
33 3
|
6月前
|
SQL Java 数据库连接
MyBatis-Plus全套笔记二
MyBatis-Plus全套笔记二
|
6月前
|
SQL Java 关系型数据库
MyBatis-Plus全套笔记三
MyBatis-Plus全套笔记三
|
6月前
|
Java 关系型数据库 数据库连接
MyBatis-Plus全套笔记一
MyBatis-Plus全套笔记一
138 1
|
SQL Java 关系型数据库
|
SQL XML Java
MyBatis笔记(一)
MyBatis笔记
173 3
|
SQL 存储 缓存
|
SQL XML Java
Mybatis基础笔记五
Mybatis基础笔记五
|
SQL Java 关系型数据库
mybatis基础笔记一
mybatis基础笔记一
下一篇
无影云桌面