写在前面
这里讲解如何在非spring项目下使用mybatis-plus,并集成mybatis-plus的特性,实现数据库的增删改查
初始化项目
项目由maven构建,并且使用junit做项目测试实验,pom配置如下
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.lhstack.mybatis</groupId>
<artifactId>mybatis-plus-test</artifactId>
<version>0.0.1</version>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<mybatis-plus.version>3.4.3</mybatis-plus.version>
<hikaricp.version>4.0.3</hikaricp.version>
<mysql.version>8.0.23</mysql.version>
<junit.version>4.13</junit.version>
<slf4j.version>1.7.31</slf4j.version>
<logback.version>1.2.3</logback.version>
</properties>
<dependencies>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-extension</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>${hikaricp.version}</version>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**</include>
</includes>
</resource>
</resources>
<testResources>
<testResource>
<directory>src/main/resources</directory>
<includes>
<include>**</include>
</includes>
</testResource>
</testResources>
</build>
</project>
项目最终结构如下

使用junit初始化数据源
编写测试代码
@Test
public void testDataSource() throws Exception {
HikariDataSource dataSource = new HikariDataSource();
dataSource.setJdbcUrl("jdbc:mysql://192.168.101.150:3306/cms?allowPublicKeyRetrieval=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8&useUnicode=true");
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUsername("root");
dataSource.setPassword("123456");
dataSource.setIdleTimeout(60000);
dataSource.setAutoCommit(true);
dataSource.setMaximumPoolSize(5);
dataSource.setMinimumIdle(1);
dataSource.setMaxLifetime(60000 * 10);
dataSource.setConnectionTestQuery("SELECT 1");
Connection connection = dataSource.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("show table status");
ResultSet resultSet = preparedStatement.executeQuery();
while(resultSet.next()){
ResultSetMetaData metaData = resultSet.getMetaData();
int columnCount = metaData.getColumnCount();
for (int i = 1; i <= columnCount; i++) {
String name = metaData.getColumnLabel(i);
String field = resultSet.getString(i);
System.out.printf("%s:%s\t",name,field);
}
System.out.println();
}
}
运行效果如下

构建mybatis-plus里面的SqlSessionFactoryBuilder对象
@Before
public void before() throws IOException {
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
MybatisConfiguration configuration = new MybatisConfiguration();
initConfiguration(configuration);
configuration.addInterceptor(initInterceptor());
configuration.setLogImpl(Slf4jImpl.class);
configuration.addMappers("com.lhstack.mybatis.mapper");
GlobalConfig globalConfig = GlobalConfigUtils.getGlobalConfig(configuration);
globalConfig.setSqlInjector(new DefaultSqlInjector());
globalConfig.setIdentifierGenerator(new DefaultIdentifierGenerator());
globalConfig.setSuperMapperClass(BaseMapper.class);
Environment environment = new Environment("1", new JdbcTransactionFactory(), initDataSource());
configuration.setEnvironment(environment);
this.registryMapperXml(configuration, "mapper");
SqlSessionFactory sqlSessionFactory = builder.build(configuration);
this.session = sqlSessionFactory.openSession();
}
private void initConfiguration(MybatisConfiguration configuration) {
configuration.setMapUnderscoreToCamelCase(true);