Java – MybatisPlus – 基础整合教程
简介
本教程通过快速入门的方式对三种整合MybatisPlus方式进行整理。
引入依赖
<!-- mybatis-plus插件依赖 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>3.1.1</version>
</dependency>
<!-- MySql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<!-- 连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.11</version>
</dependency>
<!--简化bean代码的工具包-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
<version>1.18.4</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.4</version>
</dependency>
Mybatis整合MybatisPlus
MybatisPlus 提供了替代 Mybatis 创建SqlSession的方法 【MybatisSqlSessionFactoryBuilder】
通过【MybatisSqlSessionFactoryBuilder】将会使用MybatisPlus创建【sqlSessionFactory】
public void testUserList() throws Exception {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
//这里使用的是MP中的MybatisSqlSessionFactoryBuilder
SqlSessionFactory sqlSessionFactory = new MybatisSqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
// 可以调用BaseMapper中定义的方法
List<User> list = userMapper.selectList(null);
for (User user : list) {
System.out.println(user);
}
}
由【MybatisSqlSessionFactoryBuilder】所生成的【SqlSessionFactory】给我们附带了非常多的通用查询方法,通过Mapper接口继承【BaseMapper<T>】类后,除了可以使用我们自己定义的Mapper接口方法外,还可以通过【getMapper】后调用【selectList】之类的由MybatisPlus提供的内置方法。
public interface UserMapper extends BaseMapper<User> { }
Spring整合MybatisPlus
Spring 整合主要在于IOC的管理上,MybatisPlus 提供了专用于Spring IOC 管理的Bean类【MybatisSqlSessionFactoryBean】
引入Spring依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.24</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.3.24</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.3.24</version>
</dependency>
Spring.xml IOC管理
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 扫描resource目录下的所有properties配置文件 -->
<context:property-placeholder location="classpath:*.properties"/>
<!-- 定义数据源 -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
destroy-method="close">
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
<property name="driverClassName" value="${jdbc.driver}"/>
<property name="maxActive" value="10"/>
<property name="minIdle" value="5"/>
</bean>
<!--这里使用MP提供的sqlSessionFactory,完成了Spring与MP的整合-->
<bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
</bean>
<!--扫描mapper接口,使用的依然是Mybatis原生的扫描器-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="cn.itcast.mp.simple.mapper"/>
</bean>
</beans>
重点:
1.因为使用Spring 对 MybatisPlus 进行管理,而MybatisPlus提供的内置查询方法并没有指定查询表名,因此,MybatisPlus 默认以【mp.pojo实体类名】作为默认要查询的表,如Pojo:User类,那么在不设置指定表名的情况下,默认的查询表名为【mp.user】。
2.如要指定查询的表名,可以在POJO实体类上加上注解【@TableName("表名") 】
@TableName("tb_user")
public class User { ... }
自动装配Mapper接口
// 自动装配 Mapper 接口,
// 因为在Mybatis.xml配置文件中增加了 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">,所以支持自动装配
@Autowired
private UserMapper userMapper;
@Test
public void testSelectList(){
List<User> users = this.userMapper.selectList(null);
for (User user : users) {
System.out.println(user);
}
}
SpringBoot整合MybatisPlus
共有 0 条评论