实现MybatisPlus的简单使用:
数据库准备部分:
//创建名为mybatisPlus的数据库 create database mybatisPlus; //使用该数据库 use mybatisPlus; //创建user表 CREATE TABLE user( id bigint(20) NOT NULL COMMENT '主键ID' , name varchar(30) DEFAULT NULL COMMENT '姓名', age int(11) DEFAULT NULL COMMENT '年龄', email varchar(50) DEFAULT NULL COMMENT '邮箱' , PRIMARY KEY (id) )ENGINE=InnODB DEFAULT CHARSET=utf8; //向user表中加入信息 INSERT INTO user (id,name,age, email) VALUES(1,"Jone",18,"testl@baomidou.com") , (2,"Jack",20,"test2@baomidou.com"), (3,"Tom",28,"test3@baomidou .com") , (4,"sandy",21,"test4@baomidou.com") , (5,"Bi1lie",24,"test 5@baomidou .com") ;
查询user表中的数据:
select * from user;
如下所示:
Java部分:
第一步:创建springboot工程
我们使用Spring Initailizr快速开发一个项目
第二步:导入所需的依赖
<dependencies> <!-- springboot项目启动器--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <!--springboot测试类启动器 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency> <!--数据库驱动 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.31</version> </dependency> <!--mybatisPlus启动器 --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.2</version> </dependency> <!--lombok插件---用于简化实体类开发 --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> </dependencies>
第三步:创建对应的实体类
package com.example.mybatisplus.pojo; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @Data @NoArgsConstructor @AllArgsConstructor public class User { private Long id; private String name; private Integer age; private String email; }
第四步:创建mapper接口并扫描
package com.example.mybatisplus.Mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.example.mybatisplus.pojo.User; public interface UserMapper extends BaseMapper<User> { }
第五步:创建启动类
package com.example.mybatisplus; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication //这里为你的Mapper接口所放的包的全类名 @MapperScan("com.example.mybatisplus.Mapper") public class MybatisPlusApplication { public static void main(String[] args) { SpringApplication.run(MybatisPlusApplication.class, args); } }
第六步:创建配置文件
spring: #配置数据源信息 datasource: #配置数据源类型 type: com.zaxxer.hikari.HikariDataSource #配置连接数据库的各个信息 driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/mybatisPlus?Timezone=GMT%2B8characterEncoding=utf-8&userSSL=false hikari: username: root password: XXX
第七步:创建测试类
package com.example.mybatisplus.Test; import com.example.mybatisplus.Mapper.UserMapper; import com.example.mybatisplus.pojo.User; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import java.util.List; @SpringBootTest public class MybatisPlusTest { @Autowired private UserMapper userMapper; @Test public void test(){ List<User> userList=userMapper.selectList(null); System.out.println(userList); } }
输出如下所示:
加入日志功能:
在application.yaml配置文件中加入如下代码
mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
再次运行输出如下所示:
我们通过日志信息可以看到mybatisPlus创建了SQL语句,表名为user,user表来源于我们的user实体类,而user表中的字段来源于我们user实体类中的属性名,根本原因来自于mybatisPlus的框架结构,如下所示:
右边很清楚的表达了Mybatis创建SQL语句的过程
BaseMapper添加功能:
//添加功能 @Test public void insertUser(){ User user=new User(); user.setName("张三"); user.setAge(28); user.setEmail("zhangsan@guigu.com"); //insert方法的参数为实体类 int result= userMapper.insert(user); System.out.println(result); //获取插入的数据的id System.out.println(user.getId()); }
输出如下所示:
数据库中查询如下所示:
BaseMapper删除功能:
@Test //删除功能---根据id删除 public void deleteUser() { //由于我们在数据库表中设置的为bigint,它已经超过了整形的范围,因此,我们需要设置为L int result=userMapper.deleteById(1718589558745993217L); System.out.println(result); }
输出如下所示:
@Test //删除功能---根据map集合中的条件进行删除 public void deleteUser() { Map<String,Object> stringObjectMap=new HashMap<>(); stringObjectMap.put("name","Jone"); stringObjectMap.put("age",18); int result=userMapper.deleteByMap(stringObjectMap); System.out.println(result); }
输出如下所示:
@Test //删除功能---根据list集合批量删除 public void deleteUser() { List<Long> longList=new ArrayList<>(); longList.add(1L); longList.add(2L); longList.add(3L); int result=userMapper.deleteBatchIds(longList); System.out.println(result); }
输出如下所示:
BaseMapper修改功能:
@Test //修改功能---根据id进行修改 public void updateUser() { User user=new User(); //将id为4的用户信息的名字和年龄进行修改 user.setId(4L); user.setName("李四"); user.setAge(20); int result=userMapper.updateById(user); System.out.println(result); }
输出如下所示:
修改前:
修改后:
BaseMapper查询功能:
//查询功能---根据id查询 @Test public void selectList(){ User user=userMapper.selectById(1L); System.out.println(user); }
输出如下所示:
//查询功能---根据批量id进行查询 @Test public void selectList(){ List<Long> longList=new ArrayList<>(); longList.add(1L); longList.add(2L); longList.add(3L); longList.add(4L); List<User> userList=userMapper.selectBatchIds(longList); System.out.println(userList); }
输出如下所示:
//查询功能---根据map集合中的条件进行查询 @Test public void selectList(){ Map<String , Object> stringObjectMap=new HashMap<>(); stringObjectMap.put("name","李萍"); stringObjectMap.put("age",18); List<User> userList=userMapper.selectByMap(stringObjectMap); System.out.println(userList); }
输出如下所示:
在MybatisPlus环境下使用Mybatis的功能:
第一步:在Mapper接口中编写对应的方法
public interface UserMapper extends BaseMapper<User> { Map<String,Object> getUserMap(Long id); }
第二步:创建User类对应的UserMapper映射文件
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "https://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.example.mybatisplus.Mapper.UserMapper"> <select id="getUserMap" resultType="map"> select * from user where id=#{id} </select> </mapper>
注意:UserMapper映射文件默认放置resources的mapper目录下
原因如下所示:
第三步:编写测试方法
//查询功能---根据id查询 @Test public void selectList(){ Map<String,Object> UserMap= userMapper.getUserMap(5L); System.out.println(UserMap); }
输出如下所示:
那么则说明MybatisPlus并不会影响Mybatis的使用,它是在Mybatis的基础上做了增强
通用Service接口:
MybatisPlus通用的Service接口是一个基于MybatisPlus框架的通用Service接口,它提供了一系列通用的数据库操作方法,可以方便地进行数据库的增删改查操作。
UserService:
package com.example.mybatisplus.Service; import com.baomidou.mybatisplus.extension.service.IService; import com.example.mybatisplus.pojo.User; public interface UserService extends IService<User> { }
UserServiceImpl:
package com.example.mybatisplus.Service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.example.mybatisplus.Mapper.UserMapper; import com.example.mybatisplus.Service.UserService; import com.example.mybatisplus.pojo.User; import org.springframework.stereotype.Service; @Service public class UserServiceImpl extends ServiceImpl<UserMapper,User> implements UserService { }
通用Service之查询总记录数:
package com.example.mybatisplus.Test; import com.example.mybatisplus.Service.UserService; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest public class MybatisPlusServiceTest { @Autowired private UserService userService; //查询总记录条数 @Test public void getCount(){ Long count = (long) userService.count(); System.out.println("总记录数:"+count); } }
通用Service之批量添加功能:
@Test public void testInsertMore(){ List<User> list=new ArrayList<>(); for(int i=1;i<=10;i++){ User user=new User(); user.setName("yyqx"+i); user.setAge(20+i); list.add(user); } boolean b=userService.saveBatch(list); System.out.println(b); }
输出如下所示: