原先在spring中,配置数据源信息,将数据源导入到jdbctample即可。
再使用springtample
<bean id="Datasource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="url" value="jdbc:mysql:///user_db"></property>
<property name="username" value="root"></property>
<property name="password" value="mysql"></property>
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
</bean>
<bean id="JdbcTample" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="Datasource"></property>
</bean>
package com.hxut.rj92.zyk.dao;
import com.hxut.rj92.zyk.Student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import javax.sql.DataSource;
import java.util.Arrays;
import java.util.List;
@Component
public class UserdaoImpl implements Userdao{
@Autowired
JdbcTemplate jdbcTemplate;
@Override
public int add_dao(Student student) {
int a= jdbcTemplate.update(" insert student values(?,?,?);", new Object[]{student.getName(), (Integer)student.getId(), student.getLoc()});
return a;
}
@Override
在springboot中,只要设置数据源的url 驱动名 用户名 密码等信息,如果ioc中有数据源就使用ioc中的,如果没有默认会使用hikaridatasource数据源,jdbctample自动填充数据源,直接@AutoWired导入即可
spring:
datasource:
url: jdbc:mysql://localhost:3306/shixun6.7?useSSL=false
driver-class-name: com.mysql.jdbc.Driver
username: root
password: mysql
type: com.zaxxer.hikari.HikariDataSource
# 当查询出错时,等待的秒数 设置jdbctample的属性
jdbc:
template:
query-timeout: 3
package com.atguigui.conntroller;
import com.atguigui.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import java.sql.ResultSet;
import java.util.List;
//RestController相当于 @Controller +@ResponseBody
@RestController
public class springbootcontroller {
@Autowired
private JdbcTemplate jdbcTemplate;
@RequestMapping("/hello")
public String handele01()
{
List<User> users= jdbcTemplate.query("select * from user",new BeanPropertyRowMapper<User>(User.class));
for(User user:users)
{
System.out.println(user);
}
return "success";
}
}
spring jdbctample方式访问数据库_仰望星空的快乐的博客-CSDN博客
druid数据源
官方文档:
常见问题 · alibaba/druid Wiki · GitHub
1.配置
在springboot中,如果ioc容器中没有数据源,则会使用默认的spring框架自带的hikari数据源
如果ioc容器中有数据源,就会使用该数据源
所以我们要使用自己的数据源,只要设置好数据源相关信息,并放进ioc容器中即可
配置数据源相关信息有两种方式,一种是直接在注册数据源的时候配置好数据源信息
@Bean
public DataSource getdatasource() throws SQLException {
DruidDataSource druidDataSource = new DruidDataSource();
druidDataSource.setUrl("jdbc:mysql://localhost:3306/cakedemo");
druidDataSource.setUsername("root");
druidDataSource.setPassword("mysql");
druidDataSource.setDriverClassName("com.mysql.jdbc.Driver");
druidDataSource.setFilters("stat");
return druidDataSource;
}
另一种是读取applicationcontext.yaml中的数据源配置信息
@ConfigurationProperties("spring.datasource")
@Bean
public DataSource getdatasource() throws SQLException {
DruidDataSource druidDataSource = new DruidDataSource();
druidDataSource.setFilters("stat");
return druidDataSource;
}
spring:
datasource:
url: jdbc:mysql://localhost:3306/cakedemo
username: root
password: mysql
driver-class-name: com.mysql.jdbc.Driver
将数据源放进ioc容器后,就会自动使用ioc容器中的数据源
2.开启监控
官方写的是xml配置方式,需要给一个filters属性值为stat 配置之后自动加载
我们是注解方式,就是设置druidDataSource.setFilters(“stat”);
所有的druidDataSource.set.. 不管是什么属性,都可以在yaml中进行配置
spring:
datasource:
url: jdbc:mysql://localhost:3306/cakedemo
username: root
password: mysql
driver-class-name: com.mysql.jdbc.Driver
# druidDataSource.setFilters("stat,wall");
filters: stat,wall
max-active: 12
设置好之后要添加一个servlet,拦截请求,跳转到该监控界面,如下
@Bean
public ServletRegistrationBean statViewServlet() {
//StatViewServlet是druid连接池的监控页面,将它作为servlet拦截后要跳转的界面
StatViewServlet statViewServlet = new StatViewServlet();
ServletRegistrationBean<StatViewServlet> registrationBean = new ServletRegistrationBean<StatViewServlet>(statViewServlet, "/druid/*");
//因为这个页面有数据库的连接信息,应该保密,所以可以给这个页面添加用户名和密码
registrationBean.addInitParameter("loginUsername","admin");
registrationBean.addInitParameter("loginPassword","123");
return registrationBean;
}
执行数据库查询语句,在浏览器输入http://localhost:8080/druid/*,就可以看到数据库操作相关的大致信息
3.监控web应用 查看哪一个请求对数据库执行了什么操作(在2的基础上)
哪一个web请求,执行了什么东西(对数据库进行了什么操作),
要统计所有的请求,所以是一个拦截了所有请求的拦截器,但是像.js.css等静态文件不被拦截
这是官方的写法
我们就是注册一个拦截器,把官方的 WebStatFilter 配置进拦截器,并设置拦截的url和放行的url
@Bean
public FilterRegistrationBean getwebStatFilter() {
WebStatFilter webStatFilter = new WebStatFilter();
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(webStatFilter);
filterRegistrationBean.setUrlPatterns(Arrays.asList("/*"));
filterRegistrationBean.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
return filterRegistrationBean;
}
再次请求时就可以看到请求和数据库访问之间的关系
4.spring监控 监听某个接口的实现类的访问数据情况(在2的基础上)
@Bean
public DruidStatInterceptor druid_stat_interceptor()
{
return new DruidStatInterceptor();
}
@Bean
public BeanTypeAutoProxyCreator druid_type_proxyCreator()
{
BeanTypeAutoProxyCreator beanTypeAutoProxyCreator=new BeanTypeAutoProxyCreator();
//监听的是Indexinterface接口
beanTypeAutoProxyCreator.setTargetBeanType(Indexinterface.class);
beanTypeAutoProxyCreator.setInterceptorNames( "druid_stat_interceptor");
return beanTypeAutoProxyCreator;
}
实现了Indexinterface接口的会显示在上面,没实现就不显示
5.数据库的防火墙 哪些sql语句不能执行,查看哪些数据库的表不能被访问
(在2的基础上)
就是一个wall,在向ioc中添加数据源时添加 wall 即可
@ConfigurationProperties("spring.datasource")
@Bean
public DataSource getdatasource() throws SQLException {
DruidDataSource druidDataSource = new DruidDataSource();
druidDataSource.setFilters("stat,wall");
return druidDataSource;
}
7.上面的配置可以简化
在pom.xml中引入 druid -springboot-starter
在application.yaml中配置相关信息即可,注意druid是和哪个标签对齐的,写错了没有提示。
spring:
datasource:
url: jdbc:mysql://localhost:3306/cakedemo
username: root
password: mysql
driver-class-name: com.mysql.jdbc.Driver
druid:
aop-patterns: com.atguigu.admin.*
filters: stat,wall # stat开启基本的sql监控和显示功能,默认路径是http://localhost:8080/druid/* wall开启防火墙
stat-view-servlet:
enabled: true #开启sql监控功能,设置用户名和密码,让重置按钮失效
login-username: admin
login-password: admin
resetEnable: false
web-stat-filter: # 监控web,哪个链接做了什么数据库操作
enabled: true
urlPattern: /*
exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*'
filter:
stat: # 对上面filters里面的stat的详细配置,当超过1000毫秒未相应的查询,当作是慢查询
slow-sql-millis: 1000
logSlowSql: true
enabled: true
wall:
enabled: true #开启防火墙
config:
drop-table-allow: false #禁用掉sql删除表的语句
今天的文章jdbc访问数据库常用的类和接口_java jdbc连接数据库步骤分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/86660.html