MyBatis注解方式基本用法
Posted Fantastic_Clouds
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBatis注解方式基本用法相关的知识,希望对你有一定的参考价值。
MyBatis除了支持XML方式以外,还支持注解方式,可将SQL语句直接写在接口上。
优点:对于需求比较简单的系统效率较高。
缺点:当SQL有变化时都需要重新编译代码。
一、@Select注解
1、基本用法
@Select({ "select id, role_name, enabled, create_by, create_time ", "from sys_role ", "where id = #{id}" }) SysRole selectById(Long id);
2、使用resultMap方式
@Results(id = "roleResultMap", value = { @Result(property = "id", 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({ "select id, role_name, enabled, create_by, create_time ", "from sys_role ", "where id = #{id}" }) SysRole selectById2(Long id);
3、复用resultMap
当多个接口返回相同的resultMap时,无需再每一个接口方法上都添加@Results注解,可通过将待复用的resultMap添加id属性,然后在其他接口方法上通过id来指向通过一个引用,即可实现复用。
@ResultMap("roleResultMap") @Select("select * from sys_role") List<SysRole> selectAll();
二、@Insert注解
1、不需要返回主键
@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);
2、返回自增主键
@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);
3、返回非自增主键
@Insert({"insert into sys_role (role_name, enabled, create_by, create_time)", "values (#{roleName}, #{enabled}, #{createBy}, #{createTime, jdbcType=TIMESTAMP})"}) @SelectKey(statement = "SELECT LAST_INSERT_ID()", keyProperty = "id", resultType = Long.class, before = false) int insert3(SysRole sysRole);
三、@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("delete from sys_role where id = #{id}") int deleteById(Long id);
以上内容整理自《MyBatis从入门到精通》
以上是关于MyBatis注解方式基本用法的主要内容,如果未能解决你的问题,请参考以下文章