您现在的位置是:首页 > 后台技术 > MyBatisMyBatis
MyBatis注解方式的基本用法(第三章)(图文)
第十三双眼睛2020-04-18【MyBatis】人已围观
简介注解就是将sql语句直接写在接口上,这种方式的优点是,对于需求比较简单的系统,效率较高,缺点是,当sql有变化时,都需要重新编译,一般情况下不建议使用注解的方式。
在mybatis中,最基本的就是@Select,@Insert,@Update,@Delete.
@Select注解
在接口中如下:
@Select({"select * from sys_user where id = #{id}"})
User getUser3(Integer id);
使用注解就是在接口方法基础上添加需要的注解,并写上相应的sql语句,@Select,@Insert,@Update,@Delete这四个基本注解的参数可以是字符串数组,也可以是字符串类型。
使用注解同样需要考虑表字段和java属性的映射关系,第一种是使用别名的方式来实现,第二种是使用下划线转驼峰的配置方式来实现,第三种是使用定义resultMap的方式来实现。
使用下划线转驼峰命名的方式来实现。
这种方式只需要在配置文件中开启即可,不需要手动指定别名,mybatis会自动按照下划线转别名的方式自动映射。
使用resultMap方式
xml中的resultMap元素有一个对应的java注解@Results,使用这个注解来实现属性映射,新增一个getUser4方法
这里的@Result注解对应着xml文件中的result标签。id=true就对应<id>元素。
使用Results注解的时候,在3.3.0以及之前的版本中,都需要写一遍,但是到了3.3.1以后,@Results注解增加一个id属性,设置了id属性以后,就可以通过id属性引用一个@Results配置了。示例代码如下:
如何引用这个@Results呢,示例如下:
使用@ResultMap注解即可,注解的参数就是上面代码中设置的id的值,当配合着使用xml时,也可以是xml文件中<resultMap>元素的id.
@Insert注解
@Insert注解本身是很简单的,但是如果需要返回主键的值,会变得稍微麻烦一点
不需要返回主键的时候,比较简单,代码如下:
需要返回自增主键的时候,示例如下:
和上面的相比,多个options注解,在这个注解中设置了useGeneratedKeys和keyProperty属性,用法和xml相同。当需要配置多个列的时候,这个注解提供了keyColumn属性,可以像xml中一样使用。
返回非自增主键时代码如下:
道理和xml一样,before为false时功能等同于order=after,before=true时功能等同于order=false.不同的数据库,order的配置不同。
@Update注解和@Delete注解
在接口中新增updateById方法和deleteById方法,如下:
Provider注解
除了上面4种注解可以使用简单的sql外,mybatis还提供了4种provider注解,分别是@SelectProvider,@InsertProvider@UpdateProvider@DeleteProvider
同样可以实现增删改查。
下面通过@SelectProvider注解来介绍使用方法
创建UserProvider类,添加selectById方法,代码如下:
接口中的代码如下:
@SelectProvider(type=UserProvider.class,method="selectById")
User selectById(Integer id);
最常用的注解基本介绍完毕,由于MyBatis的注解方式不是主流,所以一般不用。如果项目中用到,自己查询即可。
@Select注解
在接口中如下:
@Select({"select * from sys_user where id = #{id}"})
User getUser3(Integer id);
使用注解就是在接口方法基础上添加需要的注解,并写上相应的sql语句,@Select,@Insert,@Update,@Delete这四个基本注解的参数可以是字符串数组,也可以是字符串类型。
使用注解同样需要考虑表字段和java属性的映射关系,第一种是使用别名的方式来实现,第二种是使用下划线转驼峰的配置方式来实现,第三种是使用定义resultMap的方式来实现。
使用下划线转驼峰命名的方式来实现。
这种方式只需要在配置文件中开启即可,不需要手动指定别名,mybatis会自动按照下划线转别名的方式自动映射。
使用resultMap方式
xml中的resultMap元素有一个对应的java注解@Results,使用这个注解来实现属性映射,新增一个getUser4方法
@Results({ @Result(property="id", column="id", id=true), @Result(property="userName",column="user_name"), }) @Select({"select * from sys_user where id = #{id}"}) User getUser4(Integer id); |
使用Results注解的时候,在3.3.0以及之前的版本中,都需要写一遍,但是到了3.3.1以后,@Results注解增加一个id属性,设置了id属性以后,就可以通过id属性引用一个@Results配置了。示例代码如下:
@Results(id="userResultMap",value={ @Result(property="id", column="id", id=true), @Result(property="userName",column="user_name"), }) @Select({"select * from sys_user where id = #{id}"}) User getUser4(Integer id); |
@ResultMap("userResultMap") @Select({"select * from sys_user "}) List<User> getAll(); |
@Insert注解
@Insert注解本身是很简单的,但是如果需要返回主键的值,会变得稍微麻烦一点
不需要返回主键的时候,比较简单,代码如下:
@Insert("insert into sys_user(id,user_name,password) values(#{id},#{userName},#{password})") int insertUser(User user); |
@Insert("insert into sys_user(user_name,password) values(#{userName},#{password})") @Options(useGeneratedKeys=true,keyProperty="id") int insertUser2(User user); |
返回非自增主键时代码如下:
@Insert("insert into sys_user(user_name,password) values(#{userName},#{password})") @SelectKey(statement="select last_insert_id()",keyProperty="id",resultType=Long.class,before=false) int insertUser3(User user); |
@Update注解和@Delete注解
在接口中新增updateById方法和deleteById方法,如下:
@Update("update sys_user set user_name='张三' where id =#{id}") int updateById(Integer id); |
@Delete("delete from sys_user where id =#{id}") int deleteById(Integer id); |
Provider注解
除了上面4种注解可以使用简单的sql外,mybatis还提供了4种provider注解,分别是@SelectProvider,@InsertProvider@UpdateProvider@DeleteProvider
同样可以实现增删改查。
下面通过@SelectProvider注解来介绍使用方法
创建UserProvider类,添加selectById方法,代码如下:
package com.xjava.mybatis.provider; import org.apache.ibatis.jdbc.SQL; import com.xjava.mybatis.entity.User; public class UserProvider { public String selectById(final Integer id){ return new SQL(){ { SELECT("id,user_name,password"); FROM("sys_user"); WHERE("id = #{id}"); } }.toString(); } } |
@SelectProvider(type=UserProvider.class,method="selectById")
User selectById(Integer id);
最常用的注解基本介绍完毕,由于MyBatis的注解方式不是主流,所以一般不用。如果项目中用到,自己查询即可。
Tags:
很赞哦! ()
相关文章
随机图文
MyBatis注解方式的基本用法(第三章)(图文)
注解就是将sql语句直接写在接口上,这种方式的优点是,对于需求比较简单的系统,效率较高,缺点是,当sql有变化时,都需要重新编译,一般情况下不建议使用注解的方式。MyBatis代码生成器(第五章)(图文)
在学习第二章的时候,我们写了很多的单表的增删改查,基本上每个表都有这些方法,而且这些方法都比较类似。当数据库表的字段比较少的时候,写起来还能接受,一旦字段很多时,写起来就比较麻烦。MyBatis团队为我们提供了一个很强大的代码生成器,MyBatisGenerator,后文中会使用缩写MBG来代替。MBG通过丰富的配置可以生成不同类型的代码,代码包含了数据库表对应的实体类,mapper接口类,mapperxml和Example对象,包含了全部的单表操作。MyBatisXML基本用法(第二章)(图文)
本章,我们设计了一个简单的权限控制需求,采用RBAC(基于角色的访问控制方式),这个简单的权限管理系统会贯穿本书的所有示例。本章通过完成权限管理的常见业务来学习MyBatisXML的基本用法。MyBatis缓存配置(图文)
MyBatis缓存配置