栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

新来的同事问我 怎么没有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=“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 findUserList(@Param("userId") Integer userId)        
复制代码

这样就可以省略as 去指定属性名称。由注解去指定。
OK。今天关于MyBatis 增删改查的注解介绍就到这里。。。 我们下期再见

最后
如果你觉得此文对你有一丁点帮助,点个赞。或者可以加入我的开发交流群:1025263163相互学习,我们会有专业的技术答疑解惑

如果你觉得这篇文章对你有点用的话,麻烦请给我们的开源项目点点star:https://gitee.com/ZhongBangKeJi/crmeb_java不胜感激 !

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/666632.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号