栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

mybatis标签详解,一篇就够了

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

mybatis标签详解,一篇就够了

文章目录
  • 前言
  • 一、常用属性
  • 二、SQL定义标签
    • 1. select
    • 2. insert
    • 3. update
    • 4. delete
    • 5. resultMap
    • 6. sql
  • 三、SQL动态标签
    • 1. if
    • 2. foreach
    • 3. choose/when/otherwise
    • 4. where
    • 5. set


前言

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 的真正强大在于它的语句映射,这是它的魔力所在,使映射器的 XML 文件显得相对简单。如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉了将近 95% 的代码。MyBatis 致力于减少使用成本,让用户能更专注于 SQL 代码。

继springBoot整合myBatis完整前后端项目实例后,本文详细介绍下mybatis常用标签的使用。


一、常用属性
属性描述
id在命名空间中唯一的标识符,被用来引用这条语句
parameterType传入这条语句的参数的类全限定名或别名
resultType期望从这条语句中返回结果的类全限定名或别名,resultType 和 resultMap 之间只能同时使用一个
resultMap在命名空间中唯一的标识符,被用来引用这条语句 ,resultType 和 resultMap 之间只能同时使用一个
flushCache将其设置为 true 后,只要语句被调用,都会导致本地缓存和二级缓存被清空,默认值:对于(select语句)false ;对于( insert、update 和 delete 语句)true
useCache将其设置为 true 后,将会导致本条语句的结果被二级缓存缓存起来,默认值:对于(select语句)为 true
useGeneratedKeys(仅适用于 insert 和 update)这会令 MyBatis 使用 JDBC 的 getGeneratedKeys 方法来取出由数据库内部生成的主键(比如:像 MySQL 和 SQL Server 这样的关系型数据库管理系统的自动递增字段),默认值:false
keyProperty(仅适用于 insert 和 update)指定能够唯一识别对象的属性,MyBatis 会使用 getGeneratedKeys 的返回值或 insert 语句的 selectKey 子元素设置它的值,默认值:未设置(unset)
二、SQL定义标签 1. select

用于数据查询操作,例:


  select
  userName,
  userSex
  from user_info 
  where id=#{keyId}

将数据表字段userName、userSex映射到实体类User的user_name、user_sex
6. sql

用于定义可重用的 SQL 代码片段,以便在多个SQL语句中使用。 参数可以静态地(在加载的时候)确定下来,并且可以在不同的 include 元素中定义不同的参数值。例:


 ${alias}.userName,${alias}.userSex


  select * from user_info 
  where 1=1
  
  	and userSex=#{userSex}
  
  
  	and userName like CONCAt('%',#{userName},'%')
  

PS:此处需要注意,如果参数值为数字int型,判断是否等于某个固定值时可能会导致判断失效,例如:


  	……

可以修改为:



  	……



  	……

2. foreach

用于更新或保存数据时的批量操作,例:


insert into user_info(
userName,
userSex
)values

(
#{item.userName},
#{item.userSex}
)


insert into user_info(
userName
)values

(
#{userName}
)

update user_info
set userAge=#{userAge}
where id in

#{item}

3. choose/when/otherwise

用以实现条件的多种判断,类似与if else,例:


  select * from user_info 
  where
  
  	userSex=#{userSex}
  
  
  	and userName like CONCAt('%',#{userName},'%')
  

修改为: