赞
踩
MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高 效率而生。
官网一共有两个:https://mybatis.plus/ 或 https://mp.baomidou.com/ 。
Mybatis-Plus是由baomidou(苞米豆)组织开发并且开源的,截止写博客时间,该组织共17人。
详细步骤以及代码可以查看这篇博客:
当我们完成了上面这些必要的准备工作后,那么我们就可以使用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 :会话对象。执行接下来的增删改查操作。
在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>
当我们使用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
在原生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字段先不查询该字段以防报错。
编写一个mapper去继承BaseMapper,BaseMapper是mybatis-plus团队所编写的用来直接操作数据库的接口。继承该接口后,无需编写 mapper.xml 文件,即可获得CRUD功能。
例如UserMapper.java:
- public interface UserMapper extends BaseMapper<User> {
-
- }
编写测试代码:
- @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官方注释:
到这里,我们的mybatis-plus的基本使用就是这样完成的。与mybatis的区别基本有这些:
我们可以看到,我们不需要写sqlMapper.xml,而是直接继承一个父类BaseMapper就可以直接操作数据库。当然,当mybatis-plus的功能不足以完成我们的CRUD功能时,也还是需要我们继续编写sql语句。而大多数常用情况下我们可以直接使用Mybatis-plus给我们的方法去操作数据库。
而在dao实体类中我们也可以发现,mypatis-plus也为我们提供了很多方便的注解去实现数据库的一些约束条件。
在我们后期使用一些插件时的配置,在springboot中可以直接写在Application.properties中,而不是sqlConfig.xml。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。