写在前面 我们都知道,不管是原生的SSM工程还是现在的SpringBoot,操作数据库持久层都会利用Mybatis,Mybatis是家喻户晓的数据库操作框架。前几年 可能还有的会用hibernate,多说一句,hibernate后来穿了一层外衣,叫JPA,不过本质还是hibernate,但是整个市场占有量Mybatis地位无可撼动。 那都知道我们都会生成一套xml文件 去操作相应的表。新来的同事问我,这套工程里怎么没有呢,那怎么操作数据库呢。我笑了,,, 没有xml文件的mapper 脱离xml文件还能操作数据库吗。答案当然是肯定的,我们一起来看下,先看一下代码 UserMapper.java
/**
* 根据id查询用户信息
* @param userId
* @return
*/
@Select("select id,user_name as userName,age from t_user where id =#{userId}")
User selectUserByUserId(@Param("userId") Integer userId);
复制代码
上述代码是根据用户id查询用户信息的一个功能,首先这是个java文件,不是xml文件,用的即是
@Select注解
该注解也是Mybatis官方的注解,目的是快速提供对数据库简便、快速去操作sql。只需要在mapper中方法上加入@Select(),然后在括号中写入需要实现的sql语句即可。 那有人问了 ,这个是查询。如果是插入添加呢,没错 insert注解
@Insert
@Insert("insert into t_user (user_name, age) values(#{userName},#{age})")
int insertUser(User user);
复制代码
这是一个添加落库的一个操作,将一个对象set进去 和有xml文件的时候是一样的操作。value必须是User实体当中的实体 看到这里,同事问了,那这个插入操作能将自增id给返回来吗。有xml的时候:
<!--主要是在主键是自增的情况下使用,添加成功后可以直接使用主键值,其中keyProperty的值是对象的属性值,而不是数据库表中的字段名-->
<insert id="insertSelective" parameterType="com.xxx.dataobject.UserDo" keyProperty="id" useGeneratedKeys="true">
............
</insert>
复制代码
上面我们只需要添加 keyProperty=“id” useGeneratedKeys=“true” 便可返回自增id,那这个注解形式的怎么返回呢
@Insert("insert into t_user (user_name, age) values(#{userName},#{age})")
@Options(useGeneratedKeys = true)
int insertUser(User user);
复制代码
@Options(useGeneratedKeys = true)
添加该注解,即可返回自增id。 聪明的同事看到这里说那删除和修改就是 @Delete @Update 了呗。哈哈 这里就不赘述了。大家可以自行百度看下。跟select insert一样 注意点 这里说下 在查询的时候要特别注意。不能写select *
@Select("select * from t_user where id =#{userId}")
User selectUserByUserId(@Param("userId") Integer userId);
复制代码
得自己去匹配属性。xml的时候 也是根据字段和实体属性匹配的。这里 如果单纯写 * 框架肯定不会自动匹配到属性的。 所以得as 同事问了如果查list怎么查,一样的写法 我们一起看下
@Select("select id,user_name,age from t_user where id =#{userId}")
@Results(value = {
@Result(property = "id", column = "id", javaType = INTEGER.class, jdbcType = JdbcType.INTEGER),
@Result(property = "userName", column = "user_name", javaType = String.class, jdbcType = JdbcType.VARCHAR),
@Result(property = "age", column = "age", javaType = INTEGER.class, jdbcType = JdbcType.INTEGER)})
List<User> findUserList(@Param("userId") Integer userId)
复制代码
这样就可以省略as 去指定属性名称。由注解去指定。 OK。今天关于MyBatis 增删改查的注解介绍就到这里。。。 我们下期再见
最后 如果你觉得此文对你有一丁点帮助,点个赞。或者可以加入我的开发交流群:1025263163相互学习,我们会有专业的技术答疑解惑
如果你觉得这篇文章对你有点用的话,麻烦请给我们的开源项目点点star:https://gitee.com/ZhongBangKeJi/crmeb_java不胜感激 !
|