Spring学习 | JDBCTemplate

24 篇文章 0 订阅


学习视频🎥:https://www.bilibili.com/video/BV1Vf4y127N5

一、简介

💬概述:JDBCTemplate是Spring 对JDBC进行封装的一个模板

🔑作用:简化JDBC的使用,更加方便地对数据库进行操作

🔑使用步骤

① 导入相关jar 包:druid…jar、mysql-connector-java-…jar、spring-jdbc-…jar、spring-tx-…jar、(spring-orm-…jar)

② 在spring 配置文件中配置druid数据库连接池,这里使用引入外部属性文件的方式(需要先引入context名称空间),也可以直接把值写上

<!-- 引入外部属性文件(jdbc.properties) -->
<context:property-placehoder location="classpath:jdbc.properties"/>

<!-- 配置druid数据库连接池 -->
<bean id="ds" class="com.alibaba.druid.pool.DriverDataSource">
    <property name="driverClassName" value="${prop.driverClass}"></property>
    <property name="url" value="${prop.url}"></property>
    <property name="username" ref="${prop.username}"></property>
    <property name="password" value="${prop.password}"></property>
</bean>

③ 在spring 配置文件中创建JdbcTemplate 对象,并注入dataSource属性(jdbcTemplate中一个属性)

<bean id="jt" class="org.springframework.jdbc.core.JdbcTemplate">
    <!-- 注入jdbcTemplate 属性 -->
    <property name="dataSource" ref="ds"></property>
</bean>

💡 <property>标签中的ref属性值为连接池的唯一标识id

④ 创建配置类,开启组件扫描(或者在spring 配置文件配置)

@Configuration
@ComponentScan(basePackages = {"com.Key"})
public class SpringConfig {
    // code...
}

⑤ 分别创建service层和dao层的实现类,在service层中添加dao类的成员变量,在dao层中添加jdbcTemplate成员变量,并使用注解方式创建对象和注入属性

  • UserServiceImpl

    @Service("uService")
    public class UserServiceImpl implements UserService {
    
        // 添加dao 层成员变量
        @Autowried
        private UserDao userDao;
    
        // code...
    }
    
  • UserDaoImpl

    @Repository("uDao")
    public class UserDaoImpl implements UserDao {
    
        // 添加jdbcTemplate 成员变量
        @Autowried
        private JdbcTemplate jt;
    
        // code...
    }
    

二、实现CRUD

2.1 增删改操作

💡 增删改操作都是类似的,只需改变SQL语句,这里只演示增加操作

① 创建带占位符的SQL语句字符串

String sql = "insert into user values(null,?,?)";

② 创建对象数组Object[],Object[]中的元素值对应SQL语句中每一个占位符

// 假设数据库表对象的实体类为User(外部传进来)
Object[] args = {user.getName(), user.getAge()};

③ 调用jdbcTemplate的方法——update()

jt.update(sql, args);

❓ 方法中的两个参数

  1. SQL字符串
  2. 对象数组,该参数是可变参数,即对象数组的长度是可变的,因为占位符的数量不确定

2.2 查询操作

🔑 查询返回值为普通类型

① 创建SQL语句字符串

String sql = "select count(*) from user";

② 调用jdbcTemplate的方法——queryForObject()

jt.queryForObject(sql, Integer.class);

❓ 方法中两个参数

  1. SQL字符串
  2. 返回值的class 对象,如返回值为int型,则该参数为Integer.class

🔑查询返回值为对象类型

① 创建SQL语句

String sql = "select * from user where id = ?";

② 调用jdbcTemplate的方法——queryForObject()

User u = jt.queryForObject(sql, new BeanPropertyRowMapper<User>(User.class), id);

❓ 方法中三个参数

  1. SQL字符串
  2. RowMapper<T>接口对象(泛型T 表示返回对象类型),使用中采用其实现类BeanPropertyRowMapper<T>代替即可,用于将查询到的数据封装到对象中并返回。创建实现类对象时,需要传入返回对象类型的class对象
  3. 可变参数,即占位符对应的对象数组

🔑查询返回值为集合类型

① 创建SQL语句

String sql = "select * from user";

② 调用jdbcTemplate的方法——query()

List<User> uList = jt.query(sql, new BeanPropertyRowMapper<User>(User.class));

❓ 方法中三个参数

  1. SQL字符串
  2. RowMapper<T>接口对象,与queryForObject()中的第二个参数一样
  3. 可变参数,即占位符对应的对象数组

🔑批量操作

💡 批量添加、删除和修改操作都是类似的,这里只演示添加

① 创建SQL语句(就是简单的添加语句)

String sql = "insert into user value(null, ?, ?)";

② 调用jdbcTemplate 的方法——batchUpdate()

// 外部传入的List集合——batchA
jt.batchUpdate(sql, batchArgs);

❓ 方法中两个参数

  1. SQL字符串
  2. batchArgs——List集合,集合元素为对象数组,每一个对象数组(集合元素)表示一组添加数据,数组中的各个元素对应SQL语句中的占位符
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值