springboot--mybatis--集成试用,用log4j2输出测试信息

1 项目结构

创建starter项目,加入web,devtools,mysql,jdbc,log4j2等依赖
springboot--mybatis--集成试用,用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() {
	}

}

springboot--mybatis--集成试用,用log4j2输出测试信息