Spring之JdbcTemplate的使用
一、什么是JdbcTemplate?
JdbcTemplate是Spring 框架中提供的一个对象,是对原始 Jdbc API 对象的简单封装。
二、基于XML方式使用JdbcTemplate
1.添加依赖
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.8.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.8.RELEASE</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.49</version>
</dependency>
</dependencies>
2.编写相关代码
public interface IUserDao {
/**
* 通过id查询用户
* @param id
* @return
*/
User selectUserById(Integer id);
/**
* 修改用户信息
* @param user
*/
void updateUser(User user);
}
public class UserDaoImpl implements IUserDao {
private JdbcTemplate jdbcTemplate;
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
@Override
public User selectUserById(Integer id) {
List<User> users =jdbcTemplate.query("select * from user where id = ?",new BeanPropertyRowMapper<User>(User.class),id);
return users.isEmpty()?null:users.get(0);
}
@Override
public void updateUser(User user) {
jdbcTemplate.update("update user set name=? where id=?",user.getName(),user.getId());
}
}
3.添加jdbc配置文件
在src/main/resources
目录下新建jdbc.properties
配置文件,并设置对应的配置信息
# 驱动名
jdbc.driver=com.mysql.cj.jdbc.Driver
# 数据库连接
jdbc.url=jdbc:mysql://localhost:3306/(数据库名称)?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false
# 数据库用户名称
jdbc.user=(数据库账号)
# 数据库用户密码
jdbc.password=(数据库密码)
# 以下为可选配置
# 指定连接池的初始化连接数。取值应在minPoolSize 与 maxPoolSize 之间;Default:3
initialPoolSize=20
# 指定连接池中保留的最大连接数. Default:15
maxPoolSize=100
# 指定连接池中保留的最小连接数
minPoolSize=10
# 最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。 Default:0
maxIdleTime=600
# 当连接池中的连接耗尽的时候c3p0一次同时获取的连接数. Default:3
acquireIncrement=5
# JDBC的标准,用以控制数据源内加载的PreparedStatements数量。
maxStatements=5
# 每60秒检查所有连接池中的空闲连接.Default:0
idleConnectionTestPeriod=60
4.配置spring.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 加载properties 配置文件,用来读取jdbc.properties文件中的数据 -->
<context:property-placeholder location="jdbc.properties" />
<!-- 配置持久层-->
<bean id="userDao" class="cn.ybzy.dao.impl.UserDaoImpl">
<property name="jdbcTemplate" ref="jdbcTemplate"></property>
</bean>
<!-- 配置JdbcTemplate-->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 配置数据源-->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/demo"></property>
<property name="username" value="root"></property>
<property name="password" value="123456"></property>
</bean>
</beans>
为什么要配置数据源?
由于建立数据库连接是一个非常耗时耗资源的行为,所以通过连接池预先同数据库建立一些连接,放
在内存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,用完后再放回去。
5.执行测试
public static void main(String[] args) {
ApplicationContext ac = new ClassPathXmlApplicationContext("spring.xml");
IUserDao userDao = ac.getBean("userDao", IUserDao.class);
User user = userDao.selectUserById(1);
System.out.println("user = " + user);
user.setName("jdbcTemplate");
userDao.updateUser(user);
}
二、基于注解方式使用JdbcTemplate
1.添加依赖
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.8.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.8.RELEASE</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.49</version>
</dependency>
</dependencies>
2.编写相关代码
public interface IUserDao {
/**
* 通过id查询用户
* @param id
* @return
*/
User selectUserById(Integer id);
/**
* 修改用户信息
* @param user
*/
void updateUser(User user);
}
@Repository
public class UserDaoImpl implements IUserDao {
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public User selectUserById(Integer id) {
List<User> users =jdbcTemplate.query("select * from user where id = ?",new BeanPropertyRowMapper<User>(User.class),id);
return users.isEmpty()?null:users.get(0);
}
@Override
public void updateUser(User user) {
jdbcTemplate.update("update user set name=? where id=?",user.getName(),user.getId());
}
}
3.使用配置类代理spring.xml文件
@Configuration
@ComponentScan(value = "cn.ybzy")
public class SpringConfiguration {
/**
* 配置jdbcTemple
* @return
*/
@Bean
public JdbcTemplate getJdbcTemplate(){
return new JdbcTemplate(getDatasource());
}
/**
* 配置数据源
* @return
*/
@Bean
public DataSource getDatasource(){
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/demo");
dataSource.setUsername("root");
dataSource.setPassword("123456");
return dataSource;
}
}
4.执行测试
public static void main(String[] args) {
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(SpringConfiguration.class);
IUserDao userDao= applicationContext.getBean("userDaoImpl",IUserDao.class);
User user = userDao.selectUserById(1);
System.out.println("user = " + user);
user.setName("jdbcTemplate");
userDao.updateUser(user);
}
三、使用JdbcDaoSupport
JdbcDaoSupport是Spring框架提供的一个类,该类中定义了一个jdbcTemplate对象,可以直接获取使用,但前提是需要为JdbcDaoSupport对象注入数据源,然后只需要持久层对象继续JdbcDaoSupport即可。
1.添加依赖
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.8.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.8.RELEASE</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.49</version>
</dependency>
</dependencies>
2.编写相关代码
public interface IUserDao {
/**
* 通过id查询用户
* @param id
* @return
*/
User selectUserById(Integer id);
/**
* 修改用户信息
* @param user
*/
void updateUser(User user);
}
public class UserDaoImpl extends JdbcDaoSupport implements IUserDao {
@Override
public User selectUserById(Integer id) {
List<User> users =getJdbcTemplate().query("select * from user where id = ?",new BeanPropertyRowMapper<User>(User.class),id);
return users.isEmpty()?null:users.get(0);
}
@Override
public void updateUser(User user) {
getJdbcTemplate().update("update user set name=? where id=?",user.getName(),user.getId());
}
}
3.配置spring.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 配置持久层-->
<bean id="userDao" class="cn.ybzy.dao.impl.UserDaoImpl">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 配置数据源-->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/demo"></property>
<property name="username" value="root"></property>
<property name="password" value="123456"></property>
</bean>
</beans>
4.执行测试
public static void main(String[] args) {
ApplicationContext ac = new ClassPathXmlApplicationContext("spring.xml");
IUserDao userDao = ac.getBean("userDao", IUserDao.class);
User user = userDao.selectUserById(1);
System.out.println("user = " + user);
user.setName("jdbcTemplate");
userDao.updateUser(user);
}
5.注意事项
1.使用JdbcDaoSupport,需要为其提供数据源或提供JdbcTemplate对象
2. 继承 JdbcDaoSupport 的方式,只适用于 XML配置的方式
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/137129.html