一、MyBatis-Plus简介
1.1 什么是mybatis-plus
MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高 效率而生。
官网一共有两个:https://mybatis.plus/ 或 https://mp.baomidou.com/ 。
2.2 mybatis-plus的作者
Mybatis-Plus是由baomidou(苞米豆)组织开发并且开源的,截止写博客时间,该组织共17人。
二、如何使用MyBatis-Plus
2.1 mybaits回顾
详细步骤以及代码可以查看这篇博客:
什么是MyBatis_涩即是Null的博客-CSDN博客
2.1.1 需要准备的代码块
2.1.2 使用
当我们完成了上面这些必要的准备工作后,那么我们就可以使用mybatis了。
例如我们要查询数据库的信息:
/**
* 查询
* @throws IOException
*/
@Test
public void test1() throws IOException {
//获得核心配置文件
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
//获得session工厂对象
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
//获得session会话对象
SqlSession sqlSession = sqlSessionFactory.openSession();
//执行操作 参数:namespace+id
List<User> userList = sqlSession.selectList("userMapper.findAll");
//打印数据
System.out.println(userList);
//释放资源
sqlSession.close();
}
这里几个API的解释:
SqlSessionFactoryBuilder :工厂构建器。通过加载mybatis的核心文件的输入流的形式构建一个SqlSessionFactory对象 。
SqlSessionFactory:工厂对象 ,用来创建sql会话。openSession( )会默认开启一个事务,但事务不会自动提交,也就意味着需要手动提 交该事务,更新操作数据才会持久化到数据库中 。如果里面传一个参数为true,那么不需要手动提交事务(更新操作中sqlSession.commit()方法就不需要写了)。
SqlSession :会话对象。执行接下来的增删改查操作。
2.2 mybatis-plus入门使用(结合springboot)
2.2.1 导入依赖
在pom.xml中先导入如下依赖:
<!-- mybatis-plus插的springboot支持 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.2</version>
</dependency>
<!-- MySql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.30</version>
</dependency>
<!-- 连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.15</version>
</dependency>
2.2.2 编写配置文件
当我们使用springboot时,可以直接使用properties文件来直接配置,而不再是xml文档。
编写application.properties :
spring.application.name = mybatisPlus
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/mybatisplus?useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true&useSSL=false
spring.datasource.username=root
spring.datasource.password=root
2.2.3 编写dao实体(或pojo)
在原生mybatis中,驼峰映射默认是关闭的,但在mybatis-plus中是默认打开的。这样我们就可以从经典数据库列名 A_COLUMN(下划线命名) 到经典 Java 属 性名 aColumn(驼峰命名) 的类似映射 。当我们不需要这样操作时,也可以在配置文件中关闭,即:
mybatis-plus.configuration.map-underscore-to-camel-case=false
这里使用User.java来存储和使用user信息:
@Data
@TableName("tb_user")
public class User {
@TableId(type = IdType.AUTO)
private Long id;
private String userName;
@TableField(select = false)
private String password;
private String name;
private Integer age;
@TableField(value = "email")
private String mail;
@TableField(exist = false)
private String address;
}
在这里,我们就可以看到mybatis-plus中给我提供了很多便捷的注解:
@TableName("tb_user"):因为在mybatis-plus中,默认找的数据库表名是“数据库名.实体名”。但是我们的数据库表名tb_user与其不一致,因此需要重新指定在数据库中的表名。
@TableId (type=IdType.AUTO):若type=IdType.AUTO则表示id自增长。
@TableField(select=false):表示查询时不返回该字段值,用来保护用户的密码信息。
@TableField(value="email"):因为mail与我们数据库中存储的email字段并不匹配(不是常规的驼峰命名),直接查询会导致查询失败。可以使用value字段重新指定。
@TableField(exist=false):假如该字段我们后期可能会插入数据库,但目前数据库还不存在该信息,那么我们就可以使用exist字段先不查询该字段以防报错。
2.2.4 继承BaseMapper
编写一个mapper去继承BaseMapper,BaseMapper是mybatis-plus团队所编写的用来直接操作数据库的接口。继承该接口后,无需编写 mapper.xml 文件,即可获得CRUD功能。
例如UserMapper.java:
public interface UserMapper extends BaseMapper<User> {
}
2.2.5 测试(springboot环境)
编写测试代码:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class MybatisPlusSpringBootTest {
@Autowired
private UserMapper userMapper;
@Test
public void testSelectList(){
List<User> users = this.userMapper.selectList(null);
for (User user: users) {
System.out.println(user);
}
}
}
运行:
上面代码的selectList即为BaseMapper接口中的一个方法,以下为mybatis-plus官方注释:
2.3 mybatis-plus的简单总结(与mybatis的区别)
到这里,我们的mybatis-plus的基本使用就是这样完成的。与mybatis的区别基本有这些:
我们可以看到,我们不需要写sqlMapper.xml,而是直接继承一个父类BaseMapper就可以直接操作数据库。当然,当mybatis-plus的功能不足以完成我们的CRUD功能时,也还是需要我们继续编写sql语句。而大多数常用情况下我们可以直接使用Mybatis-plus给我们的方法去操作数据库。
而在dao实体类中我们也可以发现,mypatis-plus也为我们提供了很多方便的注解去实现数据库的一些约束条件。
在我们后期使用一些插件时的配置,在springboot中可以直接写在Application.properties中,而不是sqlConfig.xml。
版权归原作者 涩即是Null 所有, 如有侵权,请联系我们删除。