springboot+mybatis+slf4j+mvc拦截器
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://mav...
·

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 https://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.9.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.itcast</groupId>
<artifactId>springboot_test01</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot_test01</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<mybatis.springboot.version>1.3.2</mybatis.springboot.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--数据库驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--junit测试-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--引入mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis.springboot.version}</version>
</dependency>
<!--整合slf4j-->
<!--<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.7.25</version>
</dependency>-->
<!--引入日志依赖-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.21</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.21</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
程序入口
package com.itcast.springboot_test01;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan(basePackages = "com.itcast.springboot_test01.dao")
public class SpringbootTest01Application {
public static void main(String[] args) {
SpringApplication.run(SpringbootTest01Application.class, args);
}
}
application.yml
spring:
datasource:
#com.mysql.jdbc.Driver
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/myrepository?useUnicode=true&characterEncoding=utf8&useSSL=true&serverTimezone=GMT
username: root
password: root
mybatis:
type-aliases-package: com.itcast.springboot_test01.domain
#扫描的xml文件
mapper-locations: classpath:mapper/*.xml
config-location: classpath:mybatis/mybatis-config.xml
server:
port: 8081

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>
<settings>
<!--开启驼峰-->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
</configuration>
mapper的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.itcast.springboot_test01.dao.UserDao">
<select id="findAll" resultType="user">
select * from user
</select>
</mapper>
dao层
package com.itcast.springboot_test01.dao;
import com.itcast.springboot_test01.domain.User;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Mapper
//@Transactional(readOnly = true,isolation = Isolation.REPEATABLE_READ)
public interface UserDao {
List<User> findAll() throws Exception;
}
service层
package com.itcast.springboot_test01.service.impl;
import com.itcast.springboot_test01.dao.UserDao;
import com.itcast.springboot_test01.domain.User;
import com.itcast.springboot_test01.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
@Override
public List<User> findAll() throws Exception{
return userDao.findAll();
}
}
controller层
package com.itcast.springboot_test01.controller;
import com.itcast.springboot_test01.domain.User;
import com.itcast.springboot_test01.service.UserService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
//@Slf4j
//@RequestMapping("/user")
public class UserController {
private static final Logger log= LoggerFactory.getLogger(UserController.class);//静态方式
private final Logger logger = LoggerFactory.getLogger(this.getClass());//对象方式初始化Log对象
@Autowired
private UserService userService;
@GetMapping("findAll")
public List<User> findAll() throws Exception {
log.info("static...findAll....");
logger.info("对象方式初始化Log对象...findAll....");
return userService.findAll();
//return "hello";
}
}
拦截器:
package com.itcast.springboot_test01.interceptor;
import com.itcast.springboot_test01.Config.MvcConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LogInterceptor implements HandlerInterceptor{
private static final Logger log= LoggerFactory.getLogger(MvcConfig.class);
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
log.info("LogInterceptor...preHandle_method");
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
log.info("LogInterceptor...postHandle_method");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
log.info("LogInterceptor...afterCompletion_method");
}
}
拦截器注入:
package com.itcast.springboot_test01.Config;
import com.itcast.springboot_test01.interceptor.LogInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
//配置类,注册mvc拦截器,代替mxl中的拦截器bean配置,以及设置拦截范围
@Configuration
public class MvcConfig implements WebMvcConfigurer {
/*如果你想要完全自定义SpringMVC,不保留SpringBoot提供的一切特征,
你可以自己定义类并且添加 @Configuration注解和 @EnableWebMvc注解
总结:通过实现 WebMvcConfigurer 并添加@Configuration注解来实现自定义部分SpringMvc配置。
*/
@Bean
public LogInterceptor getLogInterceptor(){
return new LogInterceptor();
}
//重写接口中的addInterceptors方法,添加自定义拦截器
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 通过registry来注册拦截器,通过addPathPatterns来添加拦截路径
registry.addInterceptor(this.getLogInterceptor()).addPathPatterns("/**");
}
}
实体类user
package com.itcast.springboot_test01.domain;
public class User {
private Integer id;
private String username;
private String password;
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + 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;
}
}
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)