springboot--mybatis--集成试用,用log4j2输出测试信息
1 项目结构
创建starter项目,加入web,devtools,mysql,jdbc,log4j2等依赖
2 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>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.zfh</groupId>
<artifactId>springboot-mybatis-01</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot-mybatis-01</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<!-- 排除springboot默认日志 -->
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- MySQL连接java的驱动程序 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!-- 支持通过JDBC连接数据库 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- 添加mybatis依赖 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency>
<!-- 添加Log4j2依赖 ,注意,要同时排除原来的日志依赖 在web节点中 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
3 项目分层:DAO,Service两层
3.1 pojo创建
package com.fhzheng.demo.pojo;
public class User {
private Integer id;
private String username;
private String password;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User [id=" + id + ", username=" + username + ", password=" + password + "]";
}
}
3.2 mapper接口创建
package com.fhzheng.demo.dao;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import com.fhzheng.demo.pojo.User;
/**
* @author fhzheng
* 定义 mapper接口
*/
@Mapper
public interface UserDao {
User findByNameAndPassword(@Param("username") String username,@Param("password") String password);
}
3.3 mapper.xml配置创建
要注意,这个文件的位置,一般就在项目的src/main/resources/mappers目录下
mappers目录自行创建
<?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.fhzheng.demo.dao.UserDao">
<resultMap type="com.fhzheng.demo.pojo.User" id="UserResultMap">
<id column ="id" property="id" jdbcType="VARCHAR" />
<result column="username" property="username" jdbcType="VARCHAR"/>
<result column="password" property="password" jdbcType="VARCHAR"/>
<!-- <result column="mail" property="mail" jdbcType="VARCHAR"/> -->
</resultMap>
<!-- 按用户名和密码查找用户 -->
<select id="findByNameAndPassword" resultMap="UserResultMap" parameterType="String">
select *
from user u
<where>
u.username = #{username}
and u.password = #{password}
</where>
</select>
</mapper>
3.4 在项目中添加mybatis配置,即指明mapper的位置
包括:接口文件位置和配置文件位置
配置文件是application.properties
### mysql配置信息
###### &allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2B8
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2B8
### 用户名
spring.datasource.username=root
### 密码
spring.datasource.password=rootcuit
### 驱动
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#spring.datasource.driver-class-name=com.mysql.jdbc.Driver
### 连接池配置信息
spring.datasource.dbcp2.min-idle=0
spring.datasource.dbcp2.max-idle=5
spring.datasource.dbcp2.max-wait-millis=60000
# mybatis配置信息
# mapper文件位置
mybatis.mapper-locations=classpath:/mappers/*Mapper.xml
# mapper接口类位置
mybatis.type-aliases-package=com.fhzheng.demo.dao
# Log4j2配置
logging.config=classpath:log4j2.xml
在这里,有多种配置,见文件中的注释
3.4.1 日志文件配置
在控制台输出日志,指定日志输出格式
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status ="INFO">
<!-- <Configuration status ="INFO"> -->
<!-- <Configuration status ="DEBUG"> -->
<appenders>
<Console name="Console" target="SYSTEM_OUT">
<!-- 指定日志的输出格式 -->
<PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n" />
</Console>
</appenders>
<loggers>
<!-- <root level="all"> -->
<!-- <root level="INFO"> -->
<root level="all">
<!-- 控制台输出 -->
<appender-ref ref="Console" />
</root>
</loggers>
</Configuration>
3.5 开发Service层,接口和实现类都给出
接口定义
package com.fhzheng.demo.service;
import com.fhzheng.demo.pojo.User;
public interface UserService {
User findByNameAndPassword(String username,String password);
}
接口实现
package com.fhzheng.demo.service.impl;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import com.fhzheng.demo.dao.UserDao;
import com.fhzheng.demo.pojo.User;
import com.fhzheng.demo.service.UserService;
@Service
public class UserServiceImpl implements UserService {
@Resource
private UserDao userDao;
@Override
public User findByNameAndPassword(String username, String password) {
return userDao.findByNameAndPassword(username, password);
}
}
3.6 单元测试
package com.fhzheng.demo;
import javax.annotation.Resource;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import com.fhzheng.demo.pojo.User;
import com.fhzheng.demo.service.UserService;
@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringbootMybatis01ApplicationTests {
@Resource
private UserService userService;
// @Resource
// private Logger logger;
Logger logger = LogManager.getLogger(this.getClass());
@Test
public void testMybatisUser() {
User user = userService.findByNameAndPassword("郑丰华", "zfh");
logger.info("输出信息>>>>>>>>>>>>>>"+user.getId()+user.getUsername());
}
@Test
public void contextLoads() {
}
}