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

详解Mybatis注解写法(附10余个常用例子)

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

详解Mybatis注解写法(附10余个常用例子)

【前言】

Mybatis 除了 XML 配置写法,还可以使用注解写法。

首先需要引入 Mybatis 的依赖:


  org.mybatis.spring.boot
  mybatis-spring-boot-starter
  1.3.2


  tk.mybatis
  mapper-spring-boot-starter
  1.1.3

然后在接口上打上对应 @Mapper 注解

下面是常用的 Myatis 注解写法:

【1】新增对象( 非自增 ID )

插入的时候,数据库的值字段会自动匹配对象中同名称属性的值。

@Insert(value = { "INSERT INTO user (id, name, age, remark) VALUES (#{id}, #{name}, #{age}, #{remark})" })
public void addUser(User user);

【2】新增对象( 自增 ID )

如果数据库user表的 id 是自增长,我们可以加上 @Options 注解,那么该对象在插入后,id 属性会自动获取到主键。

@Options(useGeneratedKeys=true, keyProperty="id") 其中的 id 对应数据库表中的主键字段。

@Insert(value = { "INSERT INTO user (name, age, remark) VALUES (#{name}, #{age}, #{remark})" })
@Options(useGeneratedKeys=true, keyProperty="id")
public void insertUser(User user);

【3】根据 ID 查询对象

 @Param(value = "id") 其中的 id 对应 SQL 语句中的 #{id}

@Select("SELECT * FROM user WHERe id = #{id}")
public User getUserById(@Param(value = "id") long id);

在查询对象的过程中,表字段会自动装箱给同名属性。当然,也可以写成绑定形式。

如下:@Result 注解中 property 是对象字段,column 是表字段。

@Select("SELECT * FROM user WHERe id = #{id}")
@Results({
 @Result(property="id", column="id"),
 @Result(property="name", column="name"), 
 @Result(property="age", column="age"), 
 @Result(property="remark", column="remark"), 
})
public User getUserById(@Param(value = "id") long id);

【4】大于 ( > ) 查询

在SQL 语句中,直接写作 > ,但在 xml 中,大于通常用转义 > 替代 ( xml 写法介绍详见 6.2)。

@Select("SELECT * FROM user WHERe age > #{age}")
public List getUserList(@Param(value = "age") Integer age);

【5】小于 ( < ) 查询

在SQL 语句中,直接写作 < ,但在 xml 中,小于通常用转义 < 替代  ( xml 写法介绍详见 6.2)。

@Select("SELECT * FROM user WHERe age < #{age}")
public List getUserList(@Param(value = "age") Integer age);

【6】IN 关键字查询

(6.1)带 IN 的子查询

@Select("SELECT * FROM user WHERe id IN (SELECt id FROM user WHERe name = #{name})")
public List getUserList(@Param(value = "name") String name);

(6.2)带 IN 的集合查询

List 集合,Set集合,数组 都适用。

注意:@Select({""}) 这种写法为 xml 方式写法。所有 SQL 都在 这对标签之中,标签之外是一对大括号,"}) public List getUserList(@Param(value = "ids") List ids);

在 Postgrelsql 中,如果逻辑SQL中的 IN 和 ANY 的语义相同,那么尽量用 ANY,这样会更加效率。如:

@Select("SELECT * FROM user WHERe id = ANY(#{ids}::integer[])")
public List getUserList(@Param(value = "ids") Integer[] ids);

【7】LIKE 关键字查询

@Select("SELECT * FROM user WHERe name LIKE concat('%', #{name}, '%') ")
public List getUserList(@Param(value = "name") String name);

【8】时间查询

(8.1)Date 类型:直接传入进行比较

@Select("SELECT * FROM user WHERe create_time > #{createTime}")
public List test(@Param(value = "createTime") Date createTime);

(8.2)String 类型:需要将其转化( 时间精度可以按自己需要裁取 )

Mysql :STR_TO_DATE('2008-08-08 08:08:08', '%Y-%m-%d %H:%i:%s')

Postgrelsql :to_timestamp('2008-08-08 08:08:08','yyyy-MM-dd hh24:mi:ss')

Oracle : to_date( '2008-08-08 08:08:08' , 'yyyy-MM-dd HH24:mi:ss' )

如 Mysql 写法:

@Select("SELECT * FROM user WHERe create_time > STR_TO_DATE(#{createTime}, '%Y-%m-%d %H:%i:%s')")
public List test(@Param(value = "createTime") String createTime);

【9】高级查询( 动态SQL )

 注意:【>】是大于(>)的转义,【<】 是小于(<)的转义

@Select({""})
public List getUserList(@Param(value = "name") String name, @Param(value = "age") Integer age);

【10】修改对象

@Update("UPDATE user SET name = #{name} WHERe id = #{id}")
public void update(@Param(value = "id") Long id, @Param(value = "name") String name);

【11】删除对象

@Delete("Delete FROM user WHERe id = #{id}")
public void delete(@Param(value = "id") Long id);

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/136647.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号