【Spring】JdbcTemplate

前言

  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

猜你喜欢

转载自blog.csdn.net/gnd15732625435/article/details/81006804