新来的同事问我 怎么没有mapper.xml文件

写在前面
我们都知道,不管是原生的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不胜感激 !

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>