MyBatisPlus快速上手
在数据库获取一些数据,而后相应到前端
ORM介绍
- ORM(Object Relational Mapping,对象关系映射)是为了解决面向对象与关系数据库存在的互不匹配现象的一种技术。
比如程序中的一些java对象希望存储到关系数据库的表中去,或者一些数据库中的数据查询出来到程序中,变成java对象,这个过程叫做映射过程。
ORM就是帮我们完成这个映射过程,既包含存储又包含读取,是一种持久化的技术 - ORM通过使用描述对象和数据库之间映射的元数据将程序中的对象自动持久化到关系数据库中。
- ORM框架的本质是简化编程中操作数据库的编码。
MyBatis-Plus介绍
- MyBatis是一款优秀的数据持久层ORM框架,被广泛地应用于应用系统。MyBatis能够非常灵活地实现动态SQL,可以使用XML或注解来配置和映射原生信息,能够轻松地将Java的POJO(Plain Ordinary Java Object,普通的Java对象)与数据库中的表和字段进行映射关联。
- MyBatis-Plus是一个MyBatis的增强工具,在MyBatis的基础上做了增强,简化了开发。
- 使用需要添加依赖,世界上也是基于MyBatis;还需要添加mysql的驱动;对应的数据连接池,使用连接池技术,一次性申请多个连接,提高数据库的连接效率
全局配置
-
配置数据库相关信息
1.当用MyBatis操作数据库的话,必须告诉其要操作什么数据库,使用的是什么驱动(driver-class指定使用什么驱动)
2.连接词
3.声明数据库位置,数据库可以在云端也可以在本地都可以;本地的话就是localhost:3306...
4.数据库账号
5.数据库密码
6.指定日志输出格式 -
添加@MapperScan
对于MyBatis来讲,他对数据库进行操作的主键被称之为mapper,是映射相关的主键;对数据库相关的操作最后都会放到mapper这个包里;所以需要声明,mapper包在哪里 -
MyBatis CRUD注解
这些注解帮我们完成增删改查
-
以后数据库相关的操作就放在mapper包中(自定义),为了让mapper包中的类生效,需要加一个注解,注解位置就在启动类中即可
-
在Mapper包下创建对数据库操作的接口,明明一般是数据表名以Mapper结尾
-
如何让Mapper中的方法生效,就需要在Mapper中增加注解,也就是@Select等等
-
然后注解里面要写SQL语句
@Select("select from * user")这个注解以及sql语句会自动去找我们在配置文件中声明的数据库中对应的名为user的数据表中的数据,并且自动将数据放到自定义的集合当中去(自定义的接收容器) -
添加@Mapper注解,声明这是一个Mapper组件
这样springboot就可以扫描到这个组件 -
接口实际上不需要我们来自己实现,也不需要在外部调用(本身就没有代码)或重写这个方法,这个接口的实现SpringBoot会自动帮我们实现接口,自动实例化UserMapper,自动管理实例
在SpringBoot中,一动态代理的方式,帮我们生成一个实现类,并且继承实现这个接口,而后在帮我们实现数据库的查询 -
查询步骤及操作
1.准备一个类,用于接收数据库数据(注意:字段名要一致)
2.准备一个接口,利用注解来表明进行哪些操作,比如@Select、@delete等等,注解的参数是sql的增删改查语句
3.准备一个控制器,在控制器中将接口的实例化放入容器
4.在启动类中扫描mapper
而后就可以获取数据库中的数据了,可以返回字符串、也可以返回JSON类型数据,返回json数据类型,就可以在页面进行渲染了
- 插入数据(与上面的查询操作是类似的)
1.在接口中定义抽象类,插入语句与sql语句一致,但是values里面的值是不能写死,里面的数据是来自于定义的抽象方法;
回去抽象方法中的参数需要特殊符号#{}来包裹属性名,不过方法的参数是具体的数据还是一个对象,要保证参数名和属性名保持一致;
注意:方法的返回值是完成插入的记录条数
- 示例:
MyBatis-Plus简化
前面提到的增删改查操作用注解的方式来定义抽象方法,而MyBatis-Plus则将这些操作进行了简化,更为方便
-
MyBatis-Plus的增删改查的前置操作:
1.接口要继承BaseMapper类,BaseMapper的泛型就是要你要进行操作的目标类
这样一来,我们不再需要定义方法,MyBatis-Plus为我们提供了增删改查的方法,只需要调用即可;当然接口时依然存在的
-
示例:
在控制器当中利用MyBatis-Plus提供的关键字进行操作
selectList()中的参数,是查询条件,要查询所有记录,条件设置为空即可
-
tips:
1.上面演示中,目标类名与表名是一致的,目的是为了让mybatis早数据库中找到对应的表;也可以不保持一致,而为了让mybatis找到目标数据表,就需要在目标类中利用@TableName注释表名
2.关于自增。就比如一个表中每条记录的id,如果前端不进行传递的话,如果数据库中声明了是自增,那么数据库中的id会有数据,而代码中是没有的,我们就无法获取id;
面对这样的问题,就有这么一个细节:- 在目标类当中,我们可以对id字段进行自增设置,利用@TableId(type = IdType.AUTO)注解的方式
3.目标类中的属性名与数据表中的字段名部分不同,可以单独做出注释,在属性上方,利用@TableField("字段名")注解
更多细节,查看官方文档
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了