数据库结构
文件路径
导入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>org.example</groupId>
<artifactId>MyBatis</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>mybatis_helloworld</module>
<module>mybatis_parameter</module>
<module>mybatis_resultMap</module>
<module>mybatis_dynamicSQL</module>
<module>mybatis_cache</module>
</modules>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.12</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.oracle.database.jdbc/ojdbc8 -->
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<version>21.9.0.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.oracle.database.nls/orai18n -->
<dependency>
<groupId>com.oracle.database.nls</groupId>
<artifactId>orai18n</artifactId>
<version>21.9.0.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.9.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.26</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.2.0</version>
</dependency>
</dependencies>
</project>
配置jdbc.properties
jdbc.driver=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@localhost:1521:orcl
jdbc.username=scott
jdbc.password=tiger
配置 Mybatis-config.xml
<?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>
<!-- 引入properties文件 -->
<properties resource="jdbc.properties"/>
<settings>
<!-- 设置驼峰 -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<typeAliases>
<!-- 全部有默认类名 -->
<package name="com.xy.mybatis.com.xy.mybatis.cache.pojo"/>
</typeAliases>
<plugins>
<!-- 配置分页插件 -->
<plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
</plugins>
<!-- 配置环境 default 默认环境 -->
<environments default="development">
<!-- 开发环境 -->
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
<!-- 测试环境 -->
<environment id="test">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<!-- mapper 路径 -->
<package name="com.xy.mybatis.cache.mapper" />
</mappers>
</configuration>
配置log4j.properties
#log4j.rootLogger=,Console
log4j.rootLogger=DEBUG,Console,info,stdout,debug,error
#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Target=System.out
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
log4j.logger.org.apache=ERROR
log4j.logger.org.mybatis=ERROR
log4j.logger.org.springframework=ERROR
#这个须要
log4j.logger.log4jdbc.debug=ERROR
log4j.logger.com.gk.com.xy.mybatis.mapper=ERROR
log4j.logger.jdbc.audit=ERROR
log4j.logger.jdbc.resultset=ERROR
#这个打印SQL语句非常重要
log4j.logger.jdbc.sqlonly=DEBUG
log4j.logger.jdbc.sqltiming=ERROR
log4j.logger.jdbc.connection=FATAL
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %p [%t] %C.%M(%L) | %m%n
log4j.appender.info=org.apache.log4j.RollingFileAppender
log4j.appender.info.Threshold=INFO
log4j.appender.info.File=D:/logs/log4j-info.log
log4j.appender.info.layout=org.apache.log4j.PatternLayout
log4j.appender.info.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%5p] - %c -%F(%L) -%m%n
log4j.appender.info.MaxFileSize=50MB
log4j.appender.info.MaxBackupIndex=15
log4j.appender.info.Encoding=UTF-8
log4j.appender.debug=org.apache.log4j.RollingFileAppender
log4j.appender.debug.Threshold=DEBUG
log4j.appender.debug.File=D:/logs/log4j-debug.log
log4j.appender.debug.layout=org.apache.log4j.PatternLayout
log4j.appender.debug.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%5p] - %c -%F(%L) -%m%n
log4j.appender.debug.MaxFileSize=50MB
log4j.appender.debug.MaxBackupIndex=15
log4j.appender.debug.Encoding=UTF-8
log4j.appender.error=org.apache.log4j.RollingFileAppender
log4j.appender.error.Threshold=ERROR
log4j.appender.error.File=D:/logs/log4j-error.log
log4j.appender.error.layout=org.apache.log4j.PatternLayout
log4j.appender.error.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%5p] - %c -%F(%L) -%m%n
log4j.appender.error.MaxFileSize=50MB
log4j.appender.error.MaxBackupIndex=15
log4j.appender.error.Encoding=UTF-8
创建Java类
Emp类
package com.xy.mybatis.cache.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @author 谢阳
* @version 1.8.0_131
* @date 2023/3/6 19:22
* @description
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Emp implements Serializable {
private Integer id;
private String name;
private Integer age;
}
EmpMapper类
package com.xy.mybatis.cache.mapper;
import com.xy.mybatis.cache.pojo.Emp;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @author 谢阳
* @version 1.8.0_131
* @date 2023/3/6 19:25
* @description
*/
public interface EmpMapper {
/**
* 根据员工id获取员工信息
* @param id 员工id
* @return 员工信息
*/
Emp getEmpById(@Param("id") Integer id);
/**
* 获取所有员工信息
* @return 员工列表
*/
List<Emp> getAllEmp();
}
SqlSessionUtil工具类
package com.xy.mybatis.cache.utils;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
/**
* @author 谢阳
* @version 1.8.0_131
* @date 2023/3/6 11:28
* @description sqlSession工具类
*/
public class SqlSessionUtil {
/**
* 获取sqlSession
* @return SqlSession
*/
public static SqlSession getSqlSession() {
try {
InputStream resource = Resources.getResourceAsStream("mybatis-config.xml");
return new SqlSessionFactoryBuilder().build(resource).openSession(true);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
配置EmpMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xy.mybatis.cache.mapper.EmpMapper">
<!-- 开启 二级缓存 SqlSessionFactory 级别-->
<cache/>
<select id="getEmpById" resultType="com.xy.mybatis.cache.pojo.Emp">
select *
from emp
where id = #{id}
</select>
<select id="getAllEmp" resultType="com.xy.mybatis.cache.pojo.Emp">
select *
from emp
</select>
</mapper>
测试连接
import com.xy.mybatis.cache.mapper.EmpMapper;
import com.xy.mybatis.cache.pojo.Emp;
import com.xy.mybatis.cache.utils.SqlSessionUtil;
import org.junit.jupiter.api.Test;
import java.util.List;
/**
* @author 谢阳
* @version 1.8.0_131
* @date 2023/3/7 17:20
* @description
*/
public class ConnectionTest {
@Test
public void test01() {
EmpMapper mapper = SqlSessionUtil.getSqlSession().getMapper(EmpMapper.class);
Emp empById = mapper.getEmpById(1);
List<Emp> allEmp = mapper.getAllEmp();
System.out.println("empById = " + empById);
System.out.println("allEmp = " + allEmp);
}
}
测试结果