创建一个Springboot项目
在项目中的pom.xml文件中引入以下依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.3</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
<scope>runtime</scope>
</dependency>
</dependencies>
再将以下配置,放在yml配置文件中
spring:
datasource:
#1.JDBC
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://192.168.80.111:3306/jdbc?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
username: root
password: 123456
druid:
#2.连接池配置
#初始化连接池的连接数量 大小,最小,最大
initial-size: 5
min-idle: 5
max-active: 20
#配置获取连接等待超时的时间
max-wait: 60000
#配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
time-between-eviction-runs-millis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
min-evictable-idle-time-millis: 30000
validation-query: SELECT 1 FROM DUAL
test-while-idle: true
test-on-borrow: true
test-on-return: false
# 是否缓存preparedStatement,也就是PSCache 官方建议MySQL下建议关闭 个人建议如果想用SQL防火墙 建议打开
pool-prepared-statements: true
max-pool-prepared-statement-per-connection-size: 20
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
filter:
stat:
merge-sql: true
slow-sql-millis: 5000
#3.基础监控配置
web-stat-filter:
enabled: true
url-pattern: /*
#设置不统计哪些URL
exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
session-stat-enable: true
session-stat-max-count: 100
stat-view-servlet:
enabled: true
url-pattern: /druid/*
reset-enable: true
#设置监控页面的登录名和密码
login-username: admin
login-password: admin
allow: 127.0.0.1
#deny: 192.168.1.100
mybatis:
mapper-locations: classpath:mapper/*Mapper.xml
type-aliases-package: com.spring.jdbc.entity
编写Druid配置类:代码如下
@Configuration
public class DruidConfig {
@ConfigurationProperties(prefix = "spring.datasource")
@Bean
public DataSource druid(){
return new DruidDataSource();
}
@Bean
public ServletRegistrationBean statViewServlet(){
ServletRegistrationBean bean=new ServletRegistrationBean(new StatViewServlet(),"/druid/*");
Map<String,String> initParams=new HashMap<String, String>();
initParams.put("loginUsername","admin");
initParams.put("loginPassword","123456");
initParams.put("allow","");//默认就是允许所有访问
initParams.put("deny","");//禁止访问的ip
bean.setInitParameters(initParams);
return bean;
}
//配置一个web监控的Filter
@Bean
public FilterRegistrationBean wenStatFilter(){
FilterRegistrationBean bean=new FilterRegistrationBean();
bean.setFilter(new WebStatFilter());
Map<String,String> initParams=new HashMap<String, String>();
//不拦截的请求
initParams.put("exclusions","*.js,*.css,/druid/*");
bean.setInitParameters(initParams);
//需要拦截的请求
bean.setUrlPatterns(Arrays.asList("/*"));
return bean;
}
}
该类编写好之后,可设置启动端口之类的配置,不设置默认是8080
启动xxxApplication.java启动类。
成功启动后在网页上访问:http://localhost:8080/druid/index.html
然后会跳转到下面的图的网页
用户名和密码均是上面的配置类设置的,输入即可
集成jdbc+mybatis并通过接口访问数据库
根据数据库创建实体类(这里是作展示,如果是正常开发,可以用逆向成功工具)
public class Test {
private Integer id;
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
编写Mapper类
public interface TestMapper {
Test selectEmpById(@Param("id")Integer id);
}
编写业务层service
public interface TestService {
Test selectEmpById(Integer id);
}
编写Impl实现类
@Service
public class TestServiceImpl implements TestService {
@Autowired
private TestMapper testMapper;
@Override
public Test selectEmpById(Integer id) {
return testMapper.selectEmpById(id);
}
}
编写接口类
@RestController
public class TestCtrl {
@Autowired
private TestService testService;
@RequestMapping("/selectEmpById/{id}")
@ResponseBody
public Test selectEmpById(@PathVariable("id")Integer id){
return testService.selectEmpById(id);
}
}
编写映射mapper.xml,要与上面的yml文件中mapper-locations属性值的路径保持一致,
要保证能够定位到这个*mapper.xml文件
与上面举例的程序对应的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.spring.jdbc.mapper.TestMapper">
<select id="selectEmpById" resultType="com.spring.jdbc.entity.Test">
select * from test where id=#{id}
</select>
</mapper>
最后需要在启动类加上@MapperScan注解,用于扫描mapper类
@MapperScan(value = "com.spring.jdbc.mapper")//value要求填写mapper所在路径
@SpringBootApplication
public class JdbcApplication {
public static void main(String[] args) {
SpringApplication.run(JdbcApplication.class, args);
}
}
最后启动,通过接口访问,便有如下效果:
对应的数据库表结构和数据如下:
最后补充:最后的一个项目结构如下:
文章格式不是太好,内容如果对于个人比较粗糙还请非喜勿喷,谢谢大家支持,大家一起进步!