一.JDBC
1.创建工程
这里选择 SQL 下的 Mysql驱动 和 JDBC
为了演示方便,还引入 web 依赖
2.配置数据源(整合 druid 数据源)
(1).在pom文件中,引入 druid 依赖
<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.17</version>
</dependency>
(2).配置application.properties
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.url=jdbc:mysql://localhost:3306/test1?useUnicode=true&characterEncoding=UTF-8
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
数据源基本配置都在 DataSourceProperties 类中
由于各种各样的数据源有着不同的配置参数,因此DataSourceProperties中只是各个数据源的通用部分,
这里整合 druid 数据源 的独特配置参数,需要自己将配置写到 application.properties 中,然后编写配置类,进行绑定
在 application.properties 中增加额外部分
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.url=jdbc:mysql://localhost:3306/test1
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
# 数据源其他配置
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
spring.datasource.poolPreparedStatements: true
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
spring.datasource.filters: stat,wall,log4j
spring.datasource.maxPoolPreparedStatementPerConnectionSize: 20
spring.datasource.useGlobalDataSourceStat: true
spring.datasource.connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
编写 druid 配置类
package com.miracle.springboot.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 {
/**
这里手动创建数据源,不用 springBoot 通过反射创建数据源
这里创建的数据源会把 application.properties 的属性绑定到 bean 对象中
*/
@Bean // 手动绑定 spring.datasource 属性
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource druid(){
return new DruidDataSource();
}
/**
* 配置Druid监控后台
* 1.配置一个管理后台的servlet
* 2.配置一个监控的fillter
*
* 然后访问 /druid 登录账号密码即可监控数据源
*/
// 1.配置一个管理后台的servlet
@Bean
public ServletRegistrationBean statViewServlet(){
ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
Map<String, String> map = new HashMap<>();
map.put("loginUsername", "admin");
map.put("loginPassword", "123456");
map.put("allow", "");
bean.setInitParameters(map);
return bean;
}
// 2.配置一个监控的fillter
@Bean
public FilterRegistrationBean webStatFilter(){
FilterRegistrationBean bean = new FilterRegistrationBean(new WebStatFilter());
Map<String, String> map = new HashMap<>();
map.put("exclusions", "*.js,*.css,/druid/*");
bean.setInitParameters(map);
bean.setUrlPatterns(Arrays.asList("/*"));
return bean;
}
}
(3).数据库操作
只需要在数据库操作的java类中,注入 JdbcTemplate 即可,用法同springJDBC
@Autowired
private JdbcTemplate jdbcTemplate;
二.mybatis
1.创建工程
这里选择 SQL 下的 Mysql驱动 和 mybatis
springBoot会自动添加如下坐标
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.4</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
为了演示方便,还引入 web 依赖
2.整合 druid
同上
3.mybatis全局配置文件
在 resources 目录下,创建 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>
</configuration>
然后告诉 springBoot 全局配置文件的位置
application.properties
# 告诉 springBoot mybatis全局配置文件所在位置
mybatis.config-location=classpath:mybatis-config.xml
# 告诉 springBoot mybatis Mapper xml 文件的位置
mybatis.mapper-locations=classpath:com/miracle/springboot/mapper/*.xml
4.编写 Mapper 接口
package com.miracle.springboot.mapper;
import com.miracle.springboot.bean.Employee;
import org.apache.ibatis.annotations.Mapper;
// 添加 Mappe r注解 告诉 springBoot 这是一个 Mapper 接口
// @Mapper
public interface EmployeeMapper {
public Employee getEmpById(Integer id);
public int insertEmp(Employee employee);
}
注意:向 springBoot 注册 Mapper 接口有两种方式
1.在每个接口上增加 @Mapper注解,进行注册
2.在 springBoot 的启动文件 增加 @MapperScan(value = “com.miracle.springboot.mapper”)
eg:
package com.miracle.springboot;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
// 扫描指定包下的 Mapper 接口
@MapperScan(value = "com.miracle.springboot.mapper")
@SpringBootApplication
public class SpringBoot06MybatisApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBoot06MybatisApplication.class, args);
}
}
5.mybatis mapper配置文件
<?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.miracle.springboot.mapper.EmployeeMapper">
<select id="getEmpById" resultType="com.miracle.springboot.bean.Employee">
select * from employee
where id = #{id}
</select>
<insert id="insertEmp">
insert into employee(lastName,emali,gender,d_id)
values (#{lastName},#{email},#{gender},#{dId})
</insert>
</mapper>
然后告诉 springBoot mapper配置文件的位置
application.properties
# 告诉 springBoot mybatis全局配置文件所在位置
mybatis.config-location=classpath:mybatis-config.xml
# 告诉 springBoot mybatis Mapper xml 文件的位置
mybatis.mapper-locations=classpath:com/miracle/springboot/mapper/*.xml
三.关于事务
需要导入springBoot的jdbc,只需要在Service层的类上或者方法上加
@Transactional
注解,即可开启事务