前言:注解的方式在某些查询的时候还是比较方便的
mybatis注解配置
- mapUnderscoreToCamelCase 配置
- @Select 注解
- @Insert 注解
- @Delete 注解 和 @Update 注解
- @Provider 注解
mapUnderscoreToCamelCase 配置
别名设置,mapUnderscoreToCamelCase 配置 配置可以将 带下划线 sql 字段转化为带驼峰结构的 java 属性设置
具体配置如下
//在mybatis-plus中
mybatis-plus:configuration:map-underscore-to-camel-case: true
//在mybatis中:
mybatis:configuration:map-underscore-to-camel-case: true
此设置相当于 xml 中的 result sql 字段于 java 实体类属性的关系映射
也可以在注解中使用 result 进行关系映射,如果使用result 则放在xml 使用,注解可以使用一些短sql,简单查询,删除,短sql更新等操作不适合长sql操作
@Select 注解
@Select ({ ” select id, role name roleName, enabled,
create_by createBy,
create time createTime ”
” from sys_role ”,
” where id= #{id } ” })
SysRole selectByid(Long id) ;
也可以写成下面这种形式。
@Select ({ ” select id, role name roleName , enabled,
create by createBy,
create time createTime
from sys_role
where id = #{id } ” })
SysRole selectByid(Long id) ;
如果没有配置 别名,使用result
@Results({
@Result(property = ” i d ”, column = ” id”, id = true) ,
@Result(property = ” roleName ”, column =”role name ”),
@Result(property =”enabled”, column = ” enabled”),
@Result(property = ” createBy”, column = ” create_by”),
@Result(property = ” createTime”, column = " create_time ”)
} )
@Select (”s elect id,role name , enabled, create by , create time
from sys_role where id = #{id )”)
SysRole selectByid2(Long id);
@Insert 注解
不需要返回主键
@Insert ({”insert into sys role (id, role name, enabled, create by, create time )”,
” values(#{id}, #{roleName}, #{enabled}, #{createBy } ,”,
”#{ createTime , jdbcType=TIMESTAMP })”})
int insert(SysRole sysRole);
返回自增主键
@Insert ({”insert into sys_role (role_name, enabled, create_by, create_ time )”,
” values(#{roleName}, #{enabled}, #{createBy },”,
”#{ createTime, jdbcType=TIMESTAMP })”})
@Options(useGeneratedKeys =true, keyProperty =”id”)
int insert2(SysRole sysRole);
和上面的 insert 方法相比, insert2 方法中的 SQL 中少了 id 列,注解多了
@Options ,我们在这个注解中设置了 useGeneratedKeys keyProperty 属性,用法和
XML 相同, 当需要配置多个列时,这个注解也提供了 ke yColumn 属性,可以像 ML 那样
配置使用。
@Delete 注解 和 @Update 注解
@Update {{ ” update sys role ”,
})
”set role name = #{roleName },”,
” enabled = #{enabled },”,
” create by = #{createBy },”,
” create time = #{createTime, jdbcType=TIMESTAMP }”,
” where id = #{id }”
int updateByid{SysRole sysRole); @Delete {” delete from sys role where id = #{id }”)
int deleteByid{Long id);
@Provider 注解
除了上面 种注解可以使用简单的 SQL 外, MyBatis 还提供了 Provider 注解,分别
@SelectProvider 、@ InsertProvider 、@ Update Provider 和@ DeleteProvider
们同样可以实现查询、插入、更新、删除操作。
下面通过@ SelectProvider 用法来了解 Provider 注解方式的基本用法
public class PrivilegeProv der { public String selectByid(final Long id) { return new SQL{) { SELECT (”id, privilege name, privilege url”); FROM (”sys privilege”); WHERE (” id= #{id }”); } . toString () ;
}
public String selectByid(final Long id) {
return ” select id, privilege name, privilege url ”+
” from sys_privilege where id = #{id }”;
}
本文大量引用这本书的实例,有问题可以阅读原文