mybatisPlus如何单独使用
泛域名ssl证书 239元1年送1个月、单域名39元1年,Sectigo(原Comodo证书)全球可信证书,强大的兼容性,高度安全性,如有问题7天内可退、可开发票
加微信VX 18718058521 备注SSL证书
【腾讯云】2核2G4M云服务器新老同享99元/年,续费同价
上次我单独使用了mybatis测试了增删改查功能,这次引用了mybaisPlus,看了半天官网没有说是单独使用mybatisPlus的,都是要结合springboot或者spring等,由于mybatis是可以进行单独使用的,所以再完成了mybatis学习之后,再引入mybatis-plus后,感觉无从下手了。
先引入mybatis-plus
<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus</artifactId> <version>3.5.1</version> </dependency>
2. sqlMapConfig.xml文件(基本保存不动,只是修改mapper映射,新建一个新的mybatis-plus的mapper)
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <settings> <!--开启二级缓存的开关--> <setting name="cacheEnabled" value="true"/> </settings> <!-- 运行环境配置 --> <!--default属性:指定使用哪一个运行环境 --> <environments default="development"> <!--id属性:唯一标识一个运行环境 --> <environment id="development"> <!-- 事务管理器配置,type="JDBC":mybatis框架默认使用jdbc事务 --> <transactionManager type="JDBC" /> <!--数据源配置,type="POOLED":mybatis框架提供的连接池 --> <dataSource type="POOLED"> <property name="driver" value="com.mysql.cj.jdbc.Driver" /> <property name="url" value="jdbc:mysql://127.0.0.1:3306/Test?serverTimezone=UTC" /> <property name="username" value="root" /> <property name="password" value="123456" /> </dataSource> </environment> </environments> <!-- 加载映射文件 --> <mappers> <!-- <mapper resource="mybatis/UserMapper.xml"/>--> <mapper resource="mybatisPlus/UserMapper.xml"></mapper> </mappers> </configuration>
3.mapper文件,直接继承mybatis-plus的mapper类(实现了基本的增删改查)
package com.test.mybatisPlus; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.test.mybatis.User; public interface UserMapper extends BaseMapper<User> { }
4.测试代码,注意MybatisSqlSessionFactoryBuilder ,替换 SqlSessionFactoryBuilder ,这样创建的sqlsession就会有mybatis-plus的一些默认方法,否则不改的话还是用的是mybatis原生的方法。
public SqlSessionFactory getSqlSessionFactory() throws IOException { // 1.加载核心配置文件 InputStream inputStream = Resources.getResourceAsStream("sqlMapConfig.xml"); // 2.读取配置文件的内容 MybatisSqlSessionFactoryBuilder builder = new MybatisSqlSessionFactoryBuilder(); SqlSessionFactory sqlSessionFactory = builder.build(inputStream); return sqlSessionFactory; } @Test public void test() throws IOException { System.out.println(("----- selectAll method test 测试查询所有用户方法 ------")); SqlSession sqlSession = this.getSqlSessionFactory().openSession(); //selectList 的参数wrapper 是条件构造器,可以先写null UserMapper userMapper = sqlSession.getMapper(UserMapper.class); List<User> userList = userMapper.selectList(null); //forEach 的参数是 Consumer类型的 语法糖 userList.forEach(System.out::println); }
5.运行错误,此时运行可能会包没有类发现的错误springframework的错误,只需要再pom文件中添加上springframework的引用就好了
至此,单独使用mybatis-plus就介绍完毕,也说明了为啥mybatis-plus官网没有直接单独使用的mybatis-plus的说明了。
为什么只改了下MybatisSqlSessionFactoryBuilder ,基本就可以实现转化到plus呢,看看源码
public class MybatisSqlSessionFactoryBuilder extends SqlSessionFactoryBuilder { public MybatisSqlSessionFactoryBuilder() { } public SqlSessionFactory build(Reader reader, String environment, Properties properties) { SqlSessionFactory var5; try { MybatisXMLConfigBuilder parser = new MybatisXMLConfigBuilder(reader, environment, properties); var5 = this.build(parser.parse()); } catch (Exception var14) { throw ExceptionFactory.wrapException("Error building SqlSession.", var14); } finally { ErrorContext.instance().reset(); try { reader.close(); } catch (IOException var13) { } } return var5; } public SqlSessionFactory build(InputStream inputStream, String environment, Properties properties) { SqlSessionFactory var5; try { MybatisXMLConfigBuilder parser = new MybatisXMLConfigBuilder(inputStream, environment, properties); var5 = this.build(parser.parse()); } catch (Exception var14) { throw ExceptionFactory.wrapException("Error building SqlSession.", var14); } finally { ErrorContext.instance().reset(); try { inputStream.close(); } catch (IOException var13) { } } return var5; } public SqlSessionFactory build(Configuration configuration) { GlobalConfig globalConfig = GlobalConfigUtils.getGlobalConfig(configuration); Object identifierGenerator; if (null == globalConfig.getIdentifierGenerator()) { identifierGenerator = new DefaultIdentifierGenerator(); globalConfig.setIdentifierGenerator((IdentifierGenerator)identifierGenerator); } else { identifierGenerator = globalConfig.getIdentifierGenerator(); } IdWorker.setIdentifierGenerator((IdentifierGenerator)identifierGenerator); if (globalConfig.isEnableSqlRunner()) { (new SqlRunnerInjector()).inject(configuration); } SqlSessionFactory sqlSessionFactory = super.build(configuration); globalConfig.setSqlSessionFactory(sqlSessionFactory); return sqlSessionFactory; } }
代码和mybatisplus没有啥区别,都是build方法创建SqlsessionFactory,点进去可以直接到mybatis源码中,说明创建的是mybais对象