集成JDBC
2022/4/19 23:17:42
本文主要是介绍集成JDBC,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
xxxTemplate :springboot已经配置好的模板bean,拿来即用
(1)导入start
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency>
(2)配置数据库
spring: datasource: username: root password: 159263487qwe driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8&useSSL=false
注意username不是name
(3)测试增删改查
@RestController public class JDBCController { @Autowired JdbcTemplate jdbcTemplate = new JdbcTemplate(); // 查 @GetMapping("/list") public List<Map<String,Object>> list(){ String sql = "select * from test.user"; List<Map<String, Object>> maps = jdbcTemplate.queryForList(sql); return maps; } // 增 @GetMapping("/insert") public String add(){ String sql = "insert into test.user (name,password,address,phone) values(?,?,?,?)"; Object[] objs = new Object[]{"calsb","sb123","西安","12345"}; jdbcTemplate.update(sql,objs); return "add_OK!"; } // 删 @GetMapping("/delete/{id}") public String delete(@PathVariable("id")int id){ String sql = "delete from test.user where id = ?"; jdbcTemplate.update(sql,id); return "delete_OK!"; } // 改 @GetMapping("/update/{id}") public String update(@PathVariable("id")int id){ String sql = "update user set name = ?, phone = ? where id ="+id; Object[] objs = new Object[]{"sssbcal","1212121"}; jdbcTemplate.update(sql,objs); return "update_OK!"; } }
Druid
(1)pom中引入start(druid和log4j)
(2)spring.datasource:type: com.alibaba.druid.pool.DruidDataSource
(3)Druid特有的配置(application.properties)
#Spring Boot 默认是不注入这些属性值的,需要自己绑定 #druid 数据源专有配置 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,stat:监控统计、log4j:日志记录、wall:防御sql注入 #如果允许时报错 java.lang.ClassNotFoundException: org.apache.log4j.Priority #则导入 log4j 依赖即可,Maven 地址:https://mvnrepository.com/artifact/log4j/log4j filters: stat,wall,log4j maxPoolPreparedStatementPerConnectionSize: 20 useGlobalDataSourceStat: true connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
使配置生效:
因为SpringBoot内置了Servlet容器,所以没有web.xml,替代方法:ServletRegistrationBean
@Configuration public class DruidConfig { @ConfigurationProperties(prefix = "spring.datasource") @Bean public DataSource druidDataSource (){ return new DruidDataSource(); } // 后台监控 @Bean public ServletRegistrationBean statViewServlet(){ ServletRegistrationBean<StatViewServlet> bean = new ServletRegistrationBean<>(new StatViewServlet(),"/druid/*"); //设置登录名与密码 HashMap<String,String> initParameters = new HashMap<>(); initParameters.put("loginUsername","root");//key是固定的 initParameters.put("loginPassword","12345"); //设置允许谁访问后台 initParameters.put("allow","");//所有人 // 禁止谁访问 // initParameters.put("cal","192.168.11.1123"); bean.setInitParameters(initParameters);//设置初始化参数 return bean; } // 拦截器 @Bean public FilterRegistrationBean webStatFilter(){ FilterRegistrationBean bean = new FilterRegistrationBean(); bean.setFilter(new WebStatFilter()); HashMap<String ,String> initParameters = new HashMap<>(); // //哪些东西不进行统计 initParameters.put("exclusions","*.js,*.css,/druid/*"); bean.setInitParameters(initParameters); return bean; } }
这篇关于集成JDBC的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享