mybatis在springboot当中的使用

1.当使用Mybatis实现数据访问时,主要:

- 编写数据访问的抽象方法
- 配置抽象方法对应的SQL语句

关于抽象方法:

- 必须定义在某个接口中,这样的接口通常使用`Mapper`作为名称的后缀,例如`AdminMapper`
  - Mybatis框架底层将通过接口代理模式来实现
- 方法的返回值类型:如果要执行的数据操作是增、删、改类型的,统一使用`int`作为返回值类型,表示“受影响的行数”,也可以使用`void`,但是不推荐;如果要执行的是查询操作,返回值类型只需要能够装载所需的数据即可
- 方法的名称:自定义,不要重载,建议风格如下:
  - 插入数据使用`insert`作为方法名称中的前缀或关键字
  - 删除数据使用`delete`作为方法名称中的前缀或关键字
  - 更新数据使用`update`作为方法名称中的前缀或关键字
  - 查询数据时:
    - 如果是统计,使用`count`作为方法名称中的前缀或关键字
    - 如果是单个数据,使用`get`或`find`作为方法名称中的前缀或关键字
    - 如果是列表,使用`list`作为方法名称中的前缀或关键字
   - 如果操作数据时有条件,可在以上前缀或关键字右侧添加`by字段名`,例如`deleteById`
  - 方法的参数列表:取决于需要执行的SQL语句中有哪些参数,如果有多个参数,可将这些参数封装到同一个类型中,使用封装的类型作为方法的参数类型

2.建立实体类

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Admin {private Integer id;private String username;private String password;private String nickname;private String avatar;private String phone;private String email;private String description;private Integer isEnable;private String lastLoginIp;private Integer loginCount;private LocalDateTime gmtLastLogin;private LocalDateTime gmtCreate;private LocalDateTime gmtModified;
}
create table ams_admin (id bigint unsigned auto_increment,username varchar(50) default null unique comment '用户名',password char(64) default null comment '密码(密文)',nickname varchar(50) default null comment '昵称',avatar varchar(255) default null comment '头像URL',phone varchar(50) default null unique comment '手机号码',email varchar(50) default null unique comment '电子邮箱',description varchar(255) default null comment '描述',is_enable tinyint unsigned default 0 comment '是否启用,1=启用,0=未启用',last_login_ip varchar(50) default null comment '最后登录IP地址(冗余)',login_count int unsigned default 0 comment '累计登录次数(冗余)',gmt_last_login datetime default null comment '最后登录时间(冗余)',gmt_create datetime default null comment '数据创建时间',gmt_modified datetime default null comment '数据最后修改时间',primary key (id)
) comment '管理员表' charset utf8mb4;

以上是表的结构

3.接下来在接口中插入抽象方法:

public interface AdminMapper {int insert(Admin admin);int deleteById(Long id);int updatePasswordById(@Param("id") Long id, @Param("password") String password);int count();Admin getById(Long id);List<Admin> list();}

4.

所有用于Mybatis处理数据的接口都必须被Mybatis识别,有2种做法:

- 在每个接口上添加`@Mapper`注解
- 推荐:在配置类上添加`@MapperScan`注解,指定接口所在的根包

@Configuration
@MapperScan("com.fish.mapper")
public class MybatisConfig {}

注意:因为Mybatis会扫描以上配置的包,并自动生成包中各接口中的代理对象,所以,千万不要放其它接口文件!

接下来,需要配置抽象方法对应的SQL语句,这些SQL语句推荐配置在XML文件中,可以从 http://doc.canglaoshi.org/config/Mapper.xml.zip 下载到XML文件。在项目的`src/main/resources`下的自己创建一个包我的是com.fish,并将下载得到的XML文件复制到此文件夹中,重命名为`AdminMapper.xml`。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!-- 根节点必须是mapper -->
<!-- 根节点的namespace属性用于配置此XML对应哪个接口 -->
<mapper namespace="cn.tedu.mybatis.mapper.AdminMapper"><!-- 根据需要执行的SQL语句的种类选择需要配置的节点名称 --><!-- 配置SQL的节点的id属性取值为抽象方法名称 --><!-- 在节点内部配置SQL语句 --><!-- SQL语句中的参数值使用 #{} 格式的占位符表示 --><insert id="insert">insert into ams_admin (username, password, nickname, avatar, phone, email, description, is_enable, last_login_ip, login_count, gmt_last_login, gmt_create, gmt_modified) values (#{username}, #{password}, #{nickname}, #{avatar}, #{phone}, #{email}, #{description}, #{isEnable}, #{lastLoginIp}, #{loginCount}, #{gmtLastLogin}, #{gmtCreate}, #{gmtModified})</insert></mapper>

最后,还需要将`DataSource`配置给Mybatis框架,并且,为Mybatis配置这些XML文件的路径

mybatis:mapper-locations: classpath:com.fish/*.xml

接下来,在`<insert>`节点配置2个属性,分别是`useGeneratedKeys`和`keyProperty`:

<insert id="insert" useGeneratedKeys="true"  keyProperty="id">原有代码
</insert>

当配置完成后,Mybatis执行此插入数据的操作后,会将自动编号的id赋值到参数`Admin admin`的`id`属性中,以上`keyProperty`指的就是将自动编号的值放回到参数对象的哪个属性中!

5.利用springboot自带的测试进行代码的测试,验证mybatis是否被集成了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/162244.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Swift语言配合HTTP写的一个爬虫程序

下段代码使用Embassy库编写一个Swift爬虫程序来爬取jshk的内容。我会使用proxy_host为duoip&#xff0c;proxy_port为8000的爬虫IP服务器。 使用Embassy库编写一个Swift爬虫程序可以实现从网页上抓取数据的功能。下面是一个简单的步骤&#xff1a; 1、首先&#xff0c;需要在X…

RabbitMQ 消息应答与发布

目录 一、消息应答 1、自动应答&#xff08;默认&#xff09; 2、手动消息应答的方法 ​编辑 3、消息重新入队 4、手动应答案列与效果演示 二、RabbitMQ持久化 1、队列持久化 2、消息持久化 三、不公平分发&#xff08;能者多劳&#xff0c;弱者少劳&#xff09; 1、…

PHP语言、B/S手术麻醉临床信息管理系统源码

手术麻醉临床信息管理系统有着完善的临床业务功能&#xff0c;能够涵盖整个围术期的工作&#xff0c;能够采集、汇总、存储、处理、展现所有的临床诊疗资料。通过该系统的实施&#xff0c;能够规范麻醉科的工作流程&#xff0c;实现麻醉手术过程的信息数字化&#xff0c;自动生…

Blender vs 3ds Max:谁才是3D软件的未来

在不断发展的3D建模和动画领域&#xff0c;两大软件巨头Blender和3ds Max一直在争夺顶级地位。 随着技术的进步和用户需求的演变&#xff0c;一个重要问题逐渐浮出水面&#xff1a;Blender是否最终会取代3ds Max&#xff1f;本文将深入探讨二者各自的优势和劣势、当前状况&…

Flink SQL时间属性和窗口介绍

&#xff08;1&#xff09;概述 时间属性&#xff08;time attributes&#xff09;&#xff0c;其实就是每个表模式结构&#xff08;schema&#xff09;的一部分。它可以在创建表的 DDL 里直接定义为一个字段&#xff0c;也可以在 DataStream 转换成表时定义。 一旦定义了时间…

数票通批量开票小妙招,双11开票不用愁

每年双十一都是电商企业和财务“疯狂”的日子&#xff0c;随着疫情的回暖&#xff0c;消费者的消费能力蹭蹭上涨&#xff0c;商家的口袋盆满钵满&#xff0c;而财务的加班永无休止&#xff0c;批量开票成为财务人摆脱双十一加班的必备技能。 面对双十一狂欢&#xff0c;相信不少…

高校双十一快递爆仓警告,做快递代取能不能赚钱

今年双11期间的快递数量预计将超过往年。今年以来&#xff0c;快递行业竞争日益激烈&#xff0c;特别是价格战的竞争更是白热化。电商平台也针对低价展开了一系列促销活动&#xff0c;这种策略有望刺激快递单量增长。低价吸引力激发了用户的购物欲望&#xff0c;将导致高校快递…

【数据结构】树与二叉树(二):树的表示C语言:树形表示法、嵌套集合表示法、嵌套括号表示法 、凹入表示法

文章目录 5.1 树的基本概念5.1.1 树的定义5.1.2 森林的定义5.1.3 树的术语5.1.4 树的表示1&#xff0e;树形表示法2&#xff0e;嵌套集合表示法结构体创建树主函数 3&#xff0e;嵌套括号表示法结构体创建树嵌套括号表示法主函数 4&#xff0e;凹入表示法结构体创建树凹入表示法…

【Mybatis小白从0到90%精讲】15: Mybatis配置打印SQL日志

文章目录 前言配置日志实现前言 日志(Log)是每个程序都不可或缺的一部分,它可以帮助开发人员诊断和调试问题。Mybatis,作为一款备受赞誉的ORM框架,自然也提供了强大的日志功能。 它不仅提供了内置的标准实现,还支持集成各种主流的日志框架,让我们可以轻松地查看最终执行…

C-DS二叉树_另一棵树的子树

Description 给你两棵二叉树tree1和tree2,检验tree1中是否包含和tree2具有相同结构和结点值的子树。如果存在,输出true;否则,输出false。 Input 第一行输入t,表示有t个测试样例。 第二行首先输入n1,接着输入n1个整数,表示二叉树tree1。 第三行首先输入n2,接着输入n…

常见面试题-MySQL专栏(三)MVCC、BufferPool

typora-copy-images-to: imgs 了解 MVCC 吗&#xff1f; 答&#xff1a; MVCC&#xff08;Multi-Version Concurrency Control&#xff09; 是用来保证 MySQL 的事务隔离性的&#xff0c;对一行数据的读和写两个操作默认是不会通过加锁互斥来保证隔离性&#xff0c;避免了频…

2023 现阶段H5的机型适配

个人愚见 现在的主流体验&#xff0c;是大屏手机展示更多的内容&#xff0c;并不着重于放大展示&#xff0c; 所以&#xff0c;外层布局使用vw,百分比&#xff0c;flex&#xff0c;内层直接px就行 比如微信服务页面&#xff0c;大屏下展示更多数据