SpringBoot JDBC连接池的基本使用(无需访问接口直接与数据库交互的方法)
一.规范的使用jdbcTemplate
pom.xml文件,需要依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.4.RELEASE</version>
</dependency>
bean.xml文件
<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context = "http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
">
<!--命名元素 及指定jdbcTemplate名称,与其他文件,id任意取-->
<bean id="jdbcDao" class="com.example.demo.aliyun.jdbcDao.Impl">
<property name="jdbcTemplate" ref="jdbcTemplate"></property>
</bean>
<!--指定jdbcTemplate的dataSource源-->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!--配置dataSource源-->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/><!--加载驱动-->
<property name="url" value="jdbc:mysql://localhost:3306/idea?serverTimezone=UTC"/><!--数据库的位置-->
<property name="username" value="root"/><!--数据库的用户名-->
<property name="password" value="123456"/><!--对应的密码-->
</bean>
</beans>
定义接口文件=> IAccountDao
package com.example.demo.aliyun.dao;
import com.example.demo.bean.AliBean;
public interface IAccountDao {
AliBean findAliById(int id);
AliBean findAliByValue(String value);
void AliInsert(String value,String time);
}
重写接口的方法
public class Impl implements IAccountDao {
private JdbcTemplate jdbcTemplate;
//指向jdbcTemplate实例
public void setJdbcTemplate(JdbcTemplate jdbcTemplate){
this.jdbcTemplate = jdbcTemplate;
}
@Override
public AliBean findAliById(int id) {
return null;
}
@Override
public AliBean findAliByValue(String value) {
return null;
}
@Override
public void AliInsert(String value, String time) {
jdbcTemplate.update("INsert into aliTest (value,time) VALUES (?,?)",value,time);
}
}
Main文件中使用
SpringApplication.run(DemoApplication.class, args);
//获取容器,指向bean.xml配置文件的容器
ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");
//获取bean.xml中jdbcTemplate中的id,class指向的时候容器的作用
IAccountDao a = ac.getBean("jdbcDao",IAccountDao.class);
//插入数据
a.AliInsert("123","354hkh123");
二.不需要配置文件的与数据库交互的方法(简易实现的方法)
//将数据库源实例化
DriverManagerDataSource ds = new DriverManagerDataSource();
//配置Mysql驱动,若报错将"com.mysql.cj.jdbc.Driver"替换
ds.setDriverClassName("com.mysql.jdbc.Driver");
//?serverTimezone=UTC很重要,设置时间时区
ds.setUrl("jdbc:mysql://localhost:3306/idea?serverTimezone=UTC");
ds.setUsername("root");//数据库用户名
ds.setPassword("123456");//数据库密码
JdbcTemplate jdbcTemplate = new JdbcTemplate();//实例化jdbcTemplate
jdbcTemplate.setDataSource(ds); //将源放入Template模板中
String sql = "INsert into aliTest (value,time) VALUES (?,?)";
jdbcTemplate.update(sql,value,sd3); //执行插入语句
三.常用的jdbcTemplate语句
(详情右边链接,转载于=>)常用jdbcTemplate语句
- execute(String sql)
可执行任何sql语句,但返回值是void,所以一般用于数据库的新建、修改、删除和数据表记录的增删改。 - int update(String sql)
- int update(String sql, Object…args)
增删改,args传递实参,返回受影响的记录数。
- int[] batchUpdate(String…sql)
- int[] batchUpdate(String…sql, List<Object[]> args)
批量执行sql语句(增删改),返回受影响的记录数
- setMaxRows(int max) //设置返回的最大记录数
- setQueryTimeout(int timeout) //设置查询超时
- setDataSource(DataSource dataSource) //设置数据源
以上3个方法都有对应的get方法。
queryForObject() # 必须且只能返回一条记录,且只能查询一个字段
- queryForObject(String sql, T.class) //不需向sql语句传递参数
- queryForObject(String sql, Object[] args, T.class) //args是sql语句中?对应的值
- queryForObject(String sql, T.class, Object… args)