文章目录
1、导入依赖
<dependencies>
<!--Junit测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
<scope>provided</scope>
</dependency>
<!--MySQL驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<!--Mybatis核心-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.11</version>
</dependency>
<!--log4j日志-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
2、log4j日志
2.1 配置文件
# 将DEBUG级别的日志信息输出到,CONSOLE和LOGFILE两个目的地
log4j.rootLogger=DEBUG,CONSOLE,LOGFILE
#控制台输出相关设置
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Target = System.out
log4j.appender.CONSOLE.Threshold = DEBUG
log4j.appender.CONSOLE.ImmediateFlush = true
log4j.appender.CONSOLE.Encoding = UTF-8
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %5p (%c:%L) - %m%n
#文件输出相关配置
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File =./logs/error.log
log4j.appender.LOGFILE.Append = true
log4j.appender.LOGFILE.Threshold = DEBUG
log4j.appender.LOGFILE.Encoding = UTF-8
log4j.appender.LOGFILE.layout = org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
#日志输出级别
log4j.logger.com.mybatis = debug
log4j.logger.java.sql = debug
log4j.logger.java.sql.Statement = debug
log4j.logger.java.sql.PreparedStatement = debug
log4j.logger.java.sql.ResultSet =debug
2.2 控制台输出sql
log4j.rootLogger=INFO,STDOUT
log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender
log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout
log4j.appender.STDOUT.layout.ConversionPattern=%c %x %m%n
# 自己资源路径
log4j.logger.com.wae.mapper=trace
2.3 输出日志到文件
public class TestLog4j {
static Logger logger = Logger.getLogger(TestLog4j.class);
@Test
public void testLog4j(){
logger.info("这是info");
logger.debug("这是debug");
logger.error("这是error");
}
}
3、jdbc.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf8&useSSL=false
jdbc.username=root
jdbc.password=123456
4、核心配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<properties resource="jdbc.properties"/>
<settings>
<!--开启驼峰命名规则-->
<setting name="mapUnderscoreToCamelCase" value="true"/>
<!--开启日志 -->
<setting name="logImpl" value="LOG4J"/>
</settings>
<typeAliases>
<package name="com.wae.entity"/>
</typeAliases>
<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>
</environments>
<!--引入映射文件-->
<mappers>
<package name="com.wae.mapper"/>
</mappers>
</configuration>
5、封装获取SqlSession
public class SqlSessionUtils {
// 获取SqlSession对象
public static SqlSession getSqlSession(){
SqlSession sqlSession=null;
try {
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
sqlSession = sqlSessionFactory.openSession(true);//自动提交事务
} catch (IOException e) {
e.printStackTrace();
}
return sqlSession;
}
}
6、实体类
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
private Integer id;
private String username;
private String password;
}
7、mapper接口
public interface UserMapper {
List<User> getAllUsers();
}
8、映射文件
<?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">
<!--namespace与mapper接口的全类名保持一致-->
<mapper namespace="com.wae.mapper.UserMapper">
<!--mapper接口中方法的方法名和映射文件中编写SQL的标签的id属性保持一致-->
<select id="getAllUsers" resultType="User">
select * from user
</select>
</mapper>
两个一致
- mapper接口的全类名和映射文件的命名空间(namespace)保持一致
- mapper接口中方法的方法名和映射文件中编写SQL的标签的id属性保持一致
9、test
@Test
public void test01(){
SqlSession sqlSession = SqlSessionUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> userList = mapper.selectAllUsers();
userList.forEach(System.out::println);
//关闭sqlSession
sqlSession.close();
}