Spring Boot整合MyBatis和Druid
项目结构
数据库表结构
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(20) DEFAULT NULL,
`password` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
代码
application.properties
server.context-path=/demo spring.datasource.platform=mysql spring.datasource.type=com.alibaba.druid.pool.DruidDataSource spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test spring.datasource.username=root spring.datasource.password=root spring.datasource.driverClassName=com.mysql.jdbc.Driver # 初始化大小,最小,最大 spring.datasource.initialSize=5 spring.datasource.minIdle=5 spring.datasource.maxActive=20 # 配置获取连接等待超时的时间 spring.datasource.maxWait=60000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 spring.datasource.timeBetweenEvictionRunsMillis=60000 # 配置一个连接在池中最小生存的时间,单位是毫秒 spring.datasource.minEvictableIdleTimeMillis=300000 spring.datasource.validationQuery=SELECT 1 FROM DUAL spring.datasource.testWhileIdle=true spring.datasource.testOnBorrow=false spring.datasource.testOnReturn=false # 打开PSCache,并且指定每个连接上PSCache的大小 spring.datasource.poolPreparedStatements=true spring.datasource.maxPoolPreparedStatementPerConnectionSize=20 # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙 spring.datasource.filters=stat,wall,log4j # 通过connectProperties属性来打开mergeSql功能;慢SQL记录 spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 # 合并多个DruidDataSource的监控数据 #spring.datasource.useGlobalDataSourceStat=true mybatis.mapperLocations=classpath:mapper/*.xml mybatis.typeAliasesPackage=com.example.demo.entity
实体类User
public class User { private String username; private String password; 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; } }
UserDao(注意添加@mapper注解)
@Mapper public interface UserDao { List<User> userList(); }
UserMapper.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.example.demo.dao.UserDao"> <select id="userList" resultType="User"> select * from users </select> </mapper>
UserService
@Component public class UserService { @Autowired private UserDao userDao; public List<User> userList(){ List<User> list = userDao.userList(); return list; } }
UserController
@RestController public class UserController { @Autowired private UserService userService; @RequestMapping("/userList") public List<User> userList(){ List<User> list = userService.userList(); return list; } }
DemoApplication
@SpringBootApplication @ServletComponentScan public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
druid相关配置
DruidConfig.java@Configuration public class DruidConfig{ @Bean @ConfigurationProperties(prefix="spring.datasource") public DataSource druidDataSource() { return new DruidDataSource(); } }
Servlet配置 DruidServlet.java
@SuppressWarnings("serial") @WebServlet(urlPatterns = "/druid/*", initParams={ @WebInitParam(name="allow",value="127.0.0.1"),// IP白名单 @WebInitParam(name="deny",value="192.168.1.1"),// IP黑名单 @WebInitParam(name="loginUsername",value="admin"),// 用户名 @WebInitParam(name="loginPassword",value="admin"),// 密码 @WebInitParam(name="resetEnable",value="false")// 禁用“Reset All”功能 }) public class DruidServlet extends StatViewServlet{ }
Filter配置 DruidFilter.java
@WebFilter(filterName = "druidWebStatFilter", urlPatterns = "/*",
initParams = {@WebInitParam(name = "exclusions", value = "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*")// 忽略的资源
})
public class DruidFilter extends WebStatFilter {
}