一、数据源配置
- 首先创建一个boot web工程
- 导入druid、mysql连接依赖
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.8</version>
</dependency>
- 配置文件
spring:
datasource:
# 数据源基本配置
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://106.12.2xx.1:3306/sso
type: com.alibaba.druid.pool.DruidDataSource
# 数据源其他配置
initialSize: 5
minIdle: 5
maxActive: 20
maxWait: 60000
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
filters: stat,wall,log4j
maxPoolPreparedStatementPerConnectionSize: 20
useGlobalDataSourceStat: true
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
详细配置可看: https://www.cnblogs.com/funnyboy0128/p/9052447.html
- 数据源配置文件
package com.cjy.mq.config;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.sql.DataSource;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
@Configuration
public class DruidConfig {
//注入druid数据源
@ConfigurationProperties(prefix = "spring.datasource")
@Bean
public DataSource druid(){
return new DruidDataSource();
}
//2. 配置一个管理后台的servlet---druid的监控
@Bean
public ServletRegistrationBean servletRegistrationBean(){
ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
HashMap<String, String> initparam = new HashMap<>();
initparam.put("loginUsername","admin");
initparam.put("loginPassword","123456");
initparam.put("allow","");//默认允许所有访问
initparam.put("deny","127.0.0.1");
bean.setInitParameters(initparam);
return bean;
}
//3.配置一个web监控的filter
@Bean
public FilterRegistrationBean webStatFilter(){
FilterRegistrationBean bean = new FilterRegistrationBean();
bean.setFilter(new WebStatFilter());
Map<String,String> initparam = new HashMap<>();
initparam.put("exclusions","*.js,*.css,/druid/*");
bean.setInitParameters(initparam);
bean.setUrlPatterns(Arrays.asList("/*"));
return bean;
}
}
- 启动应用访问: http://localhost:8080/druid
输入账号密码进入web监控页面: admin 123456
二、整合mybatis
- 导入依赖
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
- 创建bean与mapper接口
package com.cjy.mq.bean;
import java.io.Serializable;
public class Student implements Serializable {
private Integer id;
private String stuName;
private Integer stuAge;
private String stuEmail;
private Double stuHeight;
private Integer classId;
public Student() {
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getStuName() {
return stuName;
}
public void setStuName(String stuName) {
this.stuName = stuName;
}
public Integer getStuAge() {
return stuAge;
}
public void setStuAge(Integer stuAge) {
this.stuAge = stuAge;
}
public String getStuEmail() {
return stuEmail;
}
public void setStuEmail(String stuEmail) {
this.stuEmail = stuEmail;
}
public Double getStuHeight() {
return stuHeight;
}
public void setStuHeight(Double stuHeight) {
this.stuHeight = stuHeight;
}
public Integer getClassId() {
return classId;
}
public void setClassId(Integer classId) {
this.classId = classId;
}
public Student(Integer id, String stuName, Integer stuAge, String stuEmail, Double stuHeight, Integer classId) {
this.id = id;
this.stuName = stuName;
this.stuAge = stuAge;
this.stuEmail = stuEmail;
this.stuHeight = stuHeight;
this.classId = classId;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", stuName='" + stuName + '\'' +
", stuAge=" + stuAge +
", stuEmail='" + stuEmail + '\'' +
", stuHeight=" + stuHeight +
", classId=" + classId +
'}';
}
}
//--------------map接口
package com.cjy.mq.mapper;
import com.cjy.mq.bean.Student;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
public interface StudentMapper {
public Student getStudentById(Integer id);
}
- 配置xml版本的
1.创建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.cjy.mq.mapper.StudentMapper">
<!-- public Employee getEmpById(Integer id);
public void insertEmp(Employee employee);-->
<select id="getStudentById" resultType="com.cjy.mq.bean.Student" parameterType="java.lang.Integer">
SELECT * FROM student WHERE id=#{id}
</select>
</mapper>
2.mybatis.config 配置文件
<?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>
3.配置文件交给application.yml来管理
mybatis:
# 指定全局配置文件位置
config-location: classpath:mybatis/mybatis-config.xml
# 指定sql映射文件位置
#mapper-locations: classpath:mybatis/mapper/*.xml
# schema:
# - classpath:sql/student.sql. 执行sql文件建表
# - classpath:sql/x x x .sql
4. 管理mapper接口
4.1 在主程序配置注解扫描mapper接口注入容器@MapperScan(basePackages = "com.cjy.mq.mapper")
5. 测试主程序 junit测试
@Autowired
StudentMapper studentMapper;
@Test
public void test4(){
com.cjy.mq.bean.Student studentById = studentMapper.getStudentById(1);
System.out.println(studentById);
}
- 配置注解版,主要区别在于sql的编写,以及mapper接口的注入
1. mapper注入不用在主程序扫包
@Mapper //注入
public interface StudentMapper {
@Select("select * from student") //sql
public List<Student> getAll();
}
2. 测试
@Autowired
StudentMapper studentMapper;
@Test
public void test5(){
List<com.cjy.mq.bean.Student> all = studentMapper.getAll();
System.out.println(all.size());
}