Spring对JDBC的支持

本文详细介绍了Spring框架中JdbcTemplate类的功能与使用方法,包括资源管理、SQL执行、存储过程调用及数据检索等。同时,阐述了如何利用NamedParameterJdbcTemplate进行具名参数操作,以及批量操作的实现方式。此外,还讲解了Spring JDBC模板的配置方法,并深入探讨了事务管理的概念与ACID特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JdbcTemplate类是Spring对JDBC支持库类中的核心类;

JdbcTemplate负责创建和释放资源;执行SQL语句.存储过程.并且通过ResultSet返回数据;

增删改的实现

String sql="update student set stuNo=?,name=?,sex=? where id=?";
Object[] obj=new Object[]{student.getStuNo(),student.getName(),student.getSex(),student.getId()}; //按照了占位符顺序
int result=this.jdbcTemplate.update(sql, obj);

NamedParameterJdbcTemplate:使用具名参数values(:stuNo,:name,:sex);但是要实现SqlParameterSource接口:

SqlParameterSource 单一具名=new BeanPropertySqlParameterSource(stu);
SqlParameterSource[] 批量具名=SqlParameterSourceUtils.createBatch(stu);
批量具名增删改返回结果长度: this.NamedParameterJdbcTemplate.batchUpdate(sql, 批量具名);
单一具名增删改返回结果: this.NamedParameterJdbcTemplate.Update(sql, 单一具名);

查询方法

public Student findStudentById(int id) {
		String sql="select * from student  where id=?";   //使用hql id:id  id是属性*****使用sql id:id  id是字段
		RowMapper<Student> rowMapper=new BeanPropertyRowMapper<Student>(Student.class);   //运用反射机制(Student.class);返回一个student对象
		Student student = this.jdbcTemplate.queryForObject(sql, rowMapper, id);
		return student;
	}

	@Override
	public List<Student> findAllStudents() {     //根据name查询使用findAllStudents(String name)
		String sql="select * from student";
		RowMapper<Student> rowMapper=new BeanPropertyRowMapper<Student>(Student.class);
		List<Student> list=this.jdbcTemplate.query(sql, rowMapper);   //根据name查询使用this.jdbcTemplate.query(sql, rowMapper,name);
		return list;

bean.xml配置

	<!-- 配置数据源DataSource -->
	<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/spring?useUnicode=true&amp;characterEncoding=UTF-8&amp;useSSL=false&amp;serverTimezone=UTC"></property>
		<property name="username" value="root"></property>
		<property name="password" value="123456"></property>
	</bean>
	<!-- 配置JDBC模板 -->
	<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
		<property name="dataSource" ref="dataSource"></property>
	</bean>

事务

SQL要么全部执行成功,要么撤销不执行
事务的描述(ACID)

  • 原子性(Atomic)
    • 原子性保证事务中的所有操作要么都发生,要么都不发生。
  • 一致性(Consistent)
    • 一旦事务结束了(不管是否成功),系统所处的状态和业务规则是一致的,不会被破坏一致性;
  • 隔离性(Isolated)
    • 一名用户的操作不会与其他用户的操作向混淆;
  • 持久化(Durable)
    • 一旦事务完成,结果持久化不被破坏;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值