前言
Spring框架在数据库开发中的应用主要是用JdbcTemplate类,该类作为Spring对JDBC支持的核心,提供了所有对数据库操作功能的支持,简化了在开发的过程中对数据库操作的步骤,使开发人员可以将更多的精力投入到业务逻辑当中。
配置
JdbcTemplate类继承自抽象类JdbcAccessor,同时实现了JdbcOperations接口。其直接父类org.springframework.jdbc.support.JdbcAccessor为子类提供了访问数据库时使用的公共属性DataSource。DataSource的主要功能是获取数据库连接,具体实现时还可以引入对数据库连接的缓冲池和分布式事务的支持,它可以作为访问数据库资源的标准接口。JdbcOperations接口定义了在JdbcTemplate类中可以使用的操作集合,包括添加、修改、查询和删除等操作。Spring中JDBC的配置是在Spring配置文件中完成的,其配置模板如下:
<?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">
<!-- 1.配置数据源 -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<!--数据库驱动-->
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<!--连接数据库的URL-->
<property name="url" value="jdbc:mysql://localhost/spring"></property>
<!--连接数据库的用户名-->
<property name="username" value="root"></property>
<!--连接数据库的密码-->
<property name="password" value="jujianfei"></property>
</bean>
<!-- 2.配置JDBC模板 -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<!--默认必须使用数据源-->
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 3.配置注入类 -->
<bean id="xxx" class="xxx">
<property name="jdbcTemplate" ref="jdbcTemplate"></property>
</bean>
</beans>
常用方法
这里结合实例来进行说明。
- execute(), 它的功能是执行SQL语句。下面以执行创建数据库表的SQL语句为例来进行演示。
public class JdbcTemplateTest {
public static void main(String[] args) {
ApplicationContext applicationContext =
new ClassPathXmlApplicationContext("applicationContext.xml");
JdbcTemplate jdbcTemplate = (JdbcTemplate) applicationContext.getBean("jdbcTemplate");
jdbcTemplate.execute("CREATE TABLE t_user(" +
"uid int PRIMARY KEY auto_increment," +
"uname VARCHAR(10)," +
"pwd VARCHAR(10));"
);
}
}
- update(),它可以完成插入、更新和删除的操作。
public class User {
private int uid;
private String uname;
private String pwd;
//省略Getter和Setter方法
.......
}
//添加用户
public int addUser(User user){
//定义SQL语句
String sql = "insert into t_user(uname,pwd) values(?,?)";
//存放SQL语句的参数
Object[] obj = new Object[]{
user.getUname(),
user.getPwd()
};
int flag = this.jdbcTemplate.update(sql,obj);
return flag;
}
//修改用户
public int updateUser(User user){
String sql = "update t_user set uname =?" + ",password=? where uid=?";
Object[] obj = new Object[]{
user.getUname(),
user.getPwd(),
user.getUid()
};
int flag = this.jdbcTemplate.update(sql,obj);
return flag;
}
//删除用户
public int deleteUserById(int id){
String sql = "delete from t_user where uid=?";
int flag = this.jdbcTemplate.update(sql,id);
return flag;
}
- query(),查询。
//根据id查询用户
public User findUserById(int id){
String sql = "select * from t_user where uid=?";
//将结果通过Java的反射机制映射到Java对象中
RowMapper<User> rowMapper = new BeanPropertyRowMapper(User.class);
return this.jdbcTemplate.queryForObject(sql,rowMapper,id);
}
//查询所有用户
public List<User> findAllUser(){
String sql = "select * from t_user";
RowMapper<User> rowMapper = new BeanPropertyRowMapper<>(User.class);
return this.jdbcTemplate.query(sql,rowMapper);
}
参考资料: https://blog.csdn.net/t894690230/article/details/60882891