一、mybatis-plus的使用步骤
1.引入mybatisplus的起步依赖
mybatisplus官方提供了starter依赖包,其中集成了mybatis和mybatisplus的所有功能,并且实现了自动装配效果。
因此我们可以用_mybatisplus的starter_直接代替mybatis的starter:
<!--mybatisplus--> <dependency> <groupid>com.baomidou</groupid> <artifactid>mybatis-plus-boot-starter</artifactid> <version>3.5.3.1</version> </dependency>
2.定义mapper(也叫dao)层的接口
用我们自定义的dao接口继承mybatisplus提供的basemapper接口:
public interface usermapper extends basemapper<user>?{ }
在该接口中,提供了许多基本的sql增删改查方法,我们无需写sql语句,直接调用这些方法即可完成对数据的增删改查;
3.mybatis-plus中常用注解
mybatisplus会通过扫描实体类,并基于反射获取实体类的属性名称,然后匹配到数据库表中相应字段。具体关系如下图:
因此,我们在定义实体类和数据库表时,应该遵循mp中一些默认的约定(规范)来确保字段名和属性名正确的匹配到。约定如下:
- 类名:蛇峰转下刘线作为表名
- 名为id的属性:作为表中的主键
- 变量名:陀峰转下刘线作为表的字段名
如果在写java代码时,我们某些代码不想符合上述三条约定的写法;也可以使用mp中的常见注解来自定义约定,如下:
4. 使用mybatis-plus时要做如下配置
(1)如果是在spring boot 工程中,要配置mapper接口所在的包:在spring boot的启动类上添加**@mapperscan
**注解,并指定mapper接口所在的包路径。
@springbootapplication @mapperscan("com.baomidou.mybatisplus.samples.quickstart.mapper") public class application { ? ? ?public static void main(string[] args) { ? ? ? ?springapplication.run(application.class, args); ? } ? }
注意:在该例子中:**“com.baomidou.mybatisplus.samples.quickstart.mapper
”**是 mybatis-plus 官方示例项目中的一个包路径,用于存放示例的 mapper 接口。在实际应用中,你应该将@mapperscan
注解中的字符串参数替换为你自己的项目中 mapper 接口所在的包路径。
(2)在spring mvc工程中使用mybatis-plus要做如下配置
①首先,在.xml配置文件中配置 mapperscan 注解:
<bean class="org.mybatis.spring.mapper.mapperscannerconfigurer"> ? ?<property name="basepackage" value="com.baomidou.mybatisplus.samples.quickstart.mapper"/> </bean>
②然后,调整 sqlsessionfactory 为 mybatis-plus 的 sqlsessionfactory
<bean id="sqlsessionfactory" class="com.baomidou.mybatisplus.extension.spring.mybatissqlsessionfactorybean"> ? ?<property name="datasource" ref="datasource"/> </bean>
③通常来说,一般的简单工程,通过以上配置即可正常使用 mybatis-plus,具体可参考以下链接:spring boot 快速启动示例 ? spring boot 快速启动示例,
spring mvc 快速启动示例 ? ?spring mvc 快速启动示例。
同时 mybatis-plus 提供了大量的个性化配置来满足不同复杂度的工程,大家可根据自己的项目按需取用,详细配置请参考链接:
使用配置https://baomidou.com/reference/
spring boot 配置
在 spring boot 项目中,可以通过 application.yml
或 application.properties
文件来配置 mybatis-plus。
yml配置文件中mybatisplus的配置项继承了mybatis.原生配置和一些自己特有的配置。例如:
mybatis-plus: type-aliases-package: com.yzx.xxx.po #别名扫描包 mapper-locations: "classpath*:/mapper/**/*,xml" #mapper.xml文件地址 configuration: map-underscore-to-camel-case: true #是否开启下划线和驼峰的映射 cache-enabled: false #是否开启二级缓存 global-config: db-config: id-type: assign_id #id为雪花算法生成 update-strategy: not_null #设置更新策略:只更新非空字段 ?
代码中globa-config下的配置表示全局其优先级小于实体类中注解的优先级。
如下图:
spring mvc 配置
在传统的 spring mvc 项目中,可以通过 xml 配置文件来配置 mybatis-plus。
<bean id="sqlsessionfactory" class="com.baomidou.mybatisplus.extension.spring.mybatissqlsessionfactorybean"> ? ?<property name="datasource" ref="datasource"/> ? ?<property name="mapperlocations" value="classpath*:mapper/**/*.xml"/> ? ?<property name="typealiasespackage" value="com.your.domain"/> ? ?<!-- 其他配置 --> </bean>
5.条件构造器 wrapper
前提:basemapper接口中自带的增删改查方法都是通过数据的id作为条件进行的;如果想要自定义查询条件则需要用到条件构造器:wrapper
wrapper类与其字类的继承关系如下:
wrapper类中提供的,用于自定义构建查询条件的一些方法:
下面,我们以最常用的querywrapper(查询条件构造器)为例,来演示如何使用条件构造器来构造我们的sql查询
**querywrapper(查询语句的条件构造器):**它拓展了select的功能,可以指定查找哪些字段:
使用方法:
- 首先,构造一个wrapper对像,并通过该对象来编写查询条件
- 然后,将刚刚创建的wrapper对象作为参数传入查询方法中
例如我们要进行一个如下的sql查询:
查询出名字中带o的,存款大于等于1000元的人的id、用户名(username)、信息(info)和收入(balance)
sql语句如下:
select id,username,info,balance from user where username like '%o%' and balance >= 1000;
用querywrapper(条件构造器)来实现上述sql语句的代码如下:
@test public void testquerywrapper(){ //1.构建查询条件 querywrapper<user> wrapper = new querywrapper<user>() .select("id","username","info","balance") .like("username","o") .ge("balance",1000); //2.查询 list<user> users = usermapper.selectlist(wrapper); }
条件构造器wrapper中的函数所对应的sql语法,具体对应表如下:
**另外:**在 mybatis-plus 中的iservice接口是对service层的一个加强,继承了iservice接口的service会自带一些方法:(感兴趣的小伙伴可以自行探索)
其中:save
()方法是一个非常重要的功能,它用于将实体对象保存到数据库中。具体地说,save
方法会根据实体对象的 id(主键)来决定是执行插入(insert)操作还是更新(update)操作。
- **插入操作:**如果传入的实体对象的 id 为空(即该对象在数据库中尚不存在),
save
方法会执行插入操作,将该对象插入到数据库中,并自动生成一个 id(如果使用了自动增长的主键策略)。 - **更新操作:**如果传入的实体对象的 id 不为空(即该对象在数据库中已经存在),
save
方法会执行更新操作,将该对象的属性更新到数据库中对应的记录上。这里需要注意的是,mybatis-plus 默认只会更新非空属性,即如果实体对象的某个属性为null
,则不会将该属性更新到数据库中(除非你进行了特殊的配置)。
到此这篇关于springboot中使用mybatis-plus详细介绍的文章就介绍到这了,更多相关springboot使用mybatis-plus内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论