对于MybatisPlus,最好的解释就来自于官网:Mybatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生,清晰明了,就是为了方便来的,说通俗点,就是懒,一切技术的发展都是为了更简单高效,为了减少常见的增删改查代码的代码量,MP帮我们在底层封装了大量的基础sql语句,它能够根据我们的数据库表,提供我们需要的常见方法接口,这里写了一个demo进行学习。
1.新建一个Springboot项目,导入依赖
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </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的依赖--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.3.2</version> </dependency> <!-- 引入数据源连接池德鲁伊Druid--> <!-- https://mvnrepository.com/artifact/com.alibaba/druid --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.20</version> </dependency>
</dependencies>
|
2.设计一个简单的数据库user表
3.编写yml配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13
| spring: datasource: username: root password: root url: jdbc:mysql://localhost:3306/mybatis-plus?characterEncoding=UTF-8&serverTimezone=UTC type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.cj.jdbc.Driver
logging: level: root: info cn: zl: debug
|
4.编写pojo实体类,实体类中可以写许多的属性
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.*; import lombok.experimental.Accessors; import java.util.Date;
@Data @AllArgsConstructor @NoArgsConstructor @ToString @Accessors(chain = true) @TableName("user") public class User { @TableId(value = "id",type = IdType.AUTO) private Integer id; @TableField(value = "name") private String name; private Integer age; private Date bir; @TableField(exist = false) private String aaa; }
|
5.编写mapper接口,只需要继承BaseMapper即可
1 2 3 4 5 6
| import cn.zl.pojo.User; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface UserMapper extends BaseMapper<User> { }
|
6.编写测试方法,Mybatis-Plus拥有大量的条件构造器,这里只是测试了一部分,更多详情请查看Mybatis-Plus官网
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
| import cn.zl.pojo.User; import cn.zl.mapper.UserMapper; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest;
import java.util.Date; import java.util.List;
@SpringBootTest class MybatisPlusApplicationTests { @Autowired private UserMapper userMapper;
@Test void testFindAll() { List<User> users = userMapper.selectList(null); users.forEach(user -> System.out.println("user= "+user)); for (User user : users) { System.out.println(user); } }
@Test public void testFindById(){ User user=userMapper.selectById(1); System.out.println("user= "+user); }
@Test public void testFind(){ QueryWrapper<User> queryWrapper = new QueryWrapper<>(); queryWrapper.lt("age",19); List<User> users=userMapper.selectList(queryWrapper); users.forEach(user -> System.out.println(user)); }
@Test public void testFindLike(){ QueryWrapper<User> queryWrapper = new QueryWrapper<>(); queryWrapper.likeLeft("name","d"); List<User> users = userMapper.selectList(queryWrapper); users.forEach(user -> System.out.println("user= "+user)); }
@Test public void testSave(){ User entity=new User(); entity.setName("Who").setAge(20).setBir(new Date()); userMapper.insert(entity); }
@Test public void testDeleteById(){ userMapper.deleteById(5); }
@Test public void testDelete(){ QueryWrapper<User> queryWrapper=new QueryWrapper<>(); queryWrapper.gt("age",18); userMapper.delete(queryWrapper); } }
|
总结:
越使用越感觉到Mybatis-Plus功能的强大,代码生成器、分页插件、Sequence主键等等,很多功能我都还未使用到,它还支持很多的插件扩展,更多详情请查看Mybatis-Plus官网