前言
今天是大年初二,xdm都去哪里玩了?我在家宅了一天,没地方去的那就继续一起学习,内卷起来!
最近学习了一款很不错的mybatis增强工具,叫做mybatisplus。今天就简单介绍下它的使用。
我们以前在使用Mybatis进行项目开发的时候,最繁琐的事情就是实体类,dao接口,mapper.xml文件的编写,几乎每个表都需要对应写一套,并且大部分的工作量都在最基本的增删改查上。如果表中的字段进行了修改,那么实体类,mapper文件甚至dao接口都要进行修改。
MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。有了它我们不再需要写多余的配置文件或者方法。我用完了之后,一个感觉那就是太爽了吧!!!具体特性可以参考官网介绍:
MybatisPlus实战
首先需要创建数据库及表,语句如下: 创建user表:
CREATE TABLE USER( id BIGINT(20) NOT NULL COMMENT '主键id', name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名', age INT(11) NULL DEFAULT NULL COMMENT '年龄', email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱', PRIMARY KEY(id)); 插入数据: INSERT into USER(id,name,age,email) values(1,'卡莎',24,'kasha@lol.com'),(2,'薇恩',31,'weien@lolo.com'),(3,'盖伦',44,'gailun@lolo.com') 复制代码
接着创建一个springboot基本工程,创建教程可以参考:SpringBoot入门:使用IDEA和Eclip se构建第一个SpringBoot项目。我这里使用的工具是idea,springboot版本是2.2.1。pom 文件如下:
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.1.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.jiangxia</groupId> <artifactId>mybatisplusdemo</artifactId> <version>0.0.1-SNAPSHOT</version> <name>mybatisplusdemo</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency> <!--mybatis-plus 注意:在引入MyBatis-Plus 之后请不要再次引入 MyBatis 以及 MyBatis-Spring,以避免因版本差异导致的问题。--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.0.5</version> </dependency> <!--mysql--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <!--lombok用来简化实体类:需要下载lombok插件--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build></project> 复制代码
application.properties配置文件如下:
#mysql数据库连接: spring.datasource.driverclassname=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/mybatisplusdb?serverTimezone=GMT%2B8 spring.datasource.username=root spring.datasource.password=jiang #mybatis-plus日志配置 mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl 复制代码
这里需要根据自己的实际情况进行配置。 接着就是user的实体类:
@Datapublic class User { private Long id; private String name; private Integer age; private String email;} 复制代码
mapper接口如下:
//需要继承mybatisplus的basemapper接口,并且泛型类型是实体类 @Repositorypublic interface UserMapper extends BaseMapper<User> {} 复制代码
这里不需要写任何的方法,只需要继承mybatisplus提供的BaseMapper接口并且泛型是我们的实体就可以了。因为BaseMapper提供了很全的CRUD方法,BaseMappe源码如下:
public interface BaseMapper<T> { int insert(T var1); int deleteById(Serializable var1); int deleteByMap(@Param("cm") Map<String, Object> var1); int delete(@Param("ew") Wrapper<T> var1); int deleteBatchIds(@Param("coll") Collection<? extends Serializable> var1); int updateById(@Param("et") T var1); int update(@Param("et") T var1, @Param("ew") Wrapper<T> var2); T selectById(Serializable var1); List<T> selectBatchIds(@Param("coll") Collection<? extends Serializable> var1); List<T> selectByMap(@Param("cm") Map<String, Object> var1); T selectOne(@Param("ew") Wrapper<T> var1); Integer selectCount(@Param("ew") Wrapper<T> var1); List<T> selectList(@Param("ew") Wrapper<T> var1); List<Map<String, Object>> selectMaps(@Param("ew") Wrapper<T> var1); List<Object> selectObjs(@Param("ew") Wrapper<T> var1); IPage<T> selectPage(IPage<T> var1, @Param("ew") Wrapper<T> var2); IPage<Map<String, Object>> selectMapsPage(IPage<T> var1, @Param("ew") Wrapper<T> var2);} 复制代码
在主类上添加mapper包扫描注解: @SpringBootApplication//扫描mapper接口的包 不加这个注解的话就需要写mapper接口的实现类,否启动会报错,找不到
mapper@MapperScan("com.jiangxia.mybatisplusdemo.mapper") public class MybatisplusdemoApplication { public static void main(String[] args) { SpringApplication.run(MybatisplusdemoApplication.class, args); }} 复制代码
这里就基本可以了,接着在测试类中进行测试:
@SpringBootTestclass MybatisplusdemoApplicationTests { @Autowired //下述userMapper会红色报错,可以不理会 也能运行,解决办法:UserMapper上加@Service或者@Mapper、@Repository注解 UserMapper userMapper; @Test //查询所有数据 public void findAll(){ List<User> users = userMapper.selectList(null); System.out.println(users); }} 复制代码
run测试方法,查询所有数据,结果如下:
并且因为加入了mybatisplus提供的日志,所以控制台将底层的sql语句的执行过程也一并 打印了出来:
插入数据操作:
//插入数据 @Test public void insertUser(){ User user = new User(); user.setName("德莱文兄弟"); user.setAge(23); user.setEmail("delaiwen@lol.com"); int insertcount = userMapper.insert(user); System.out.println("插入数据的条数是:"+insertcount); } 复制代码
结果如下:
可以发现已经插入了数据,并且我们之前创建表的时候id主键并不是自增的,而且刚刚的插入语句也没有插入id,但是这里会有id的值,而且是一个10位的全局唯一的主键id,这是 因为mp有主键生成策略。可以在实体类的主键上通过@TableID配置主键生成策略:
public class User { @TableId(type = IdType.AUTO) //自动增长策略 private Long id; private String name; private Integer age; private String email; 复制代码
可以设置的主键生成策略有以下几种:
public enum IdType { AUTO(0), NONE(1), INPUT(2), ID_WORKER(3), UUID(4), ID_WORKER_STR(5); 复制代码
其中ID_WORKER和ID_WORKER_STR是mp自带的生成策略。 ID_WORKER是mp默认的生成策略。可以生成19位值,数字类型使用这种策略, 比如long类型。 ID_WORKER_STR也是生成19位值,字符串类型使用这种策略,比如string。 总结 以上就是关于mybatisplus的一些简单的介绍以及关于查找和插入的简单使用,篇幅有限后续将继续更新。更多关于mybatisplus的内容可以参考以下内容:
mybatisplus源码地址: https://gitcode.net/mirrors/baomidou/mybatis-plus?utm_source=csdn_github_accelerator 官网: https://baomidou.com/pages/24112f/ 复制代码