IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 新来的同事问我 怎么没有mapper.xml文件 -> 正文阅读

[Java知识库]新来的同事问我 怎么没有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不胜感激 !

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-12-20 17:53:01  更:2021-12-20 17:53:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 5:23:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码