Spring jdbc

Spring jdbc

  • Spring jdbc模块负责 数据库资源管理和错误处理

Spring jdbcTemplate解析

  • Spring框架提供了 jdbcTemplate类 可以说是 Spring jdbc的核心类
    • jdbcTemplate 直接父类 jdbcAccessor,为子类提供了,访问数据库的公共属性。
      • 1,DataSource:主要功能是获得数据库的连接。
      • 2,SQLExceptionTranslator:处理异常
    • jdbcTemplate 实现类 jdbcOperatiions:该接口定义了在jdbcTemplate类中 可以使用的操作集合,包括添加,修改,查询,删除,等操作。

Spring jdbc配置

  • Spring jdbc模块主要由4个包组成,Spring对数据库的操作都封装在这几个包当中,要想使用Spring jdbc就要对这几个包进行配置
    - 1,core:包含jdbc的核心功能,包括jdbcTemplate类…
    - 2,dataSource:访问数据可的实用工具类,它有多种数据源的实现,可以在JavaEE容器外部测试JDBC代码。
    - 3,object:以面对对象的方式,访问数据库,它允许执行查询 并返回结果作为业务对象,可以在数据表的列和业务对象的属性之间映射查询结果。
    - 4,support:包含core和object的支持类。

    • 配置模板如下:
    <?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-4.3.xsd">
    
    	<!-- //配置数据源 -->
    	<bean id="dataSource" class=
    	"org.springframework.jdbc.datasource.DriverManagerDataSource">
    	<!-- 数据库驱动 -->
    		<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/> 
    	<!-- 链接数据库的URL -->	
    		<property name="url" value="jdbc:mysql://localhost:3306/spring"/> 
    	<!-- 连接数据库的用户名 -->	
    		<property name= "username" value="root"/> 
    	<!-- 连接数据库的密码 -->
    		<property name="password" value="123456"/>
    	</bean>
    	
    	<!-- jdbcTemplate 模板 -->
    	<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
    	<!--默认必须使用数据源  -->
    	<property name="dataSource" ref="dataSource"></property>
    	</bean>
    
    	<!-- 配置注入bean -->
    	<bean id="xxx" class="xxx">
    		<property name="JdbcTemplate" ref="jdbcTemplate"></property>
    	</bean>
    
    </beans>
    
    • 注意:
      • org.springframework.jdbc.datasource.DriverManagerDataSource,该类用于对数据源进行配置
      • URL地址MySQL5和MySQL8可能会有出入,其中jdbc是协议,mysql是子协议,localhost是数据库ip地址,3306是端口号,spring是数据库名。
      • org.springframework.jdbc.core.JdbcTemplate,该类定义看jdbcTemplate中的相关配置
      • 定义jdbcTemplate时,需将dataSource注入到jdbcTemplate中,而其他需要使用jdbcTemplate时,也需要将jdbcTemplate注入到需要的bean中。

Spring jdbc的常用方法

execute()

  • excute(String sql) 方法可以直接完成执行SQL语句

update()

  • update()方法,可以完成 插入,修改,删除的操作。在jdbcTemplate类中提供了一系列的update()方法。
		package com.wuyuandu.dao;
		
		import java.util.List;
		import org.springframework.jdbc.core.BeanPropertyRowMapper;
		import org.springframework.jdbc.core.JdbcTemplate;
		
		public class AccountDaoImpl implements AccountDao {
			//获得jdbcTemplate
			private JdbcTemplate jdbcTemplate;
			
			public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
				this.jdbcTemplate = jdbcTemplate;
			}
			/*插入   
			 * 	int update(String sql,Object... args) 
			 * 	通过Object传入参数 执行SQL语句
			 */
			public int add(Account account) {
				String sql = "insert into Account(username,id) value(?,?)";
				int num = this.jdbcTemplate.update
						(sql,new Object[] {account.getUsername(),account.getId()});
				return num;
			}
			//删除  直接通过参数 执行SQL语句
			public int delete(int id) {
				// TODO Auto-generated method stub
				String sql = "delete from account where id=?";
				int num = this.jdbcTemplate.update(sql,id);
				return num;
			}

query()

  • JdbcTemplate类中还提供了大量的query()方法来处理各种对数据库表的查询操作
	/*查询  
	 *	List query(String sql, RowMapper rowMapper) 
	 * 	执行 String类型参数提供的 SQL语句,并通过RowMapper返回一个List类型的结果
	 */
	public List<Account> select() {
		// TODO Auto-generated method stub
		String sql = "select * from account";
		List<Account> list = this.jdbcTemplate.query
				(sql,new BeanPropertyRowMapper<Account>(Account.class));
		return list;
	}
	
	/*	
	 * List query ( String sql, Object[] args, RowMapper rowMapper)
	 * 使用 Object[]的值来设置 SQL语句中的参数值,采用RowMapper回调方法,可以直接返回List类型的数据
	 */
	public List<Account> select(Account account) {
		// TODO Auto-generated method stub
		String sql = "select * from account where id=? and username=?";
		List<Account> list = this.jdbcTemplate.query
				(sql,new Object[] {account.getId(),account.getUsername()},new BeanPropertyRowMapper<Account>(Account.class));
		return list;
	}
	
	/*	
	 * queryForObject(String sql, RowMapper rowMapper,Object. .. args)
	 * 	将args参数绑定到 SQL 语句中,并通过 RowMapper返回一个 Object 类型的单行记录
	 * 	 只能是8大基本类型中 不知道String可不可以
	 */
	public int select(Account account) {
		// TODO Auto-generated method stub
		String sql = "select count(*) from Account where id=? and username=?";
		int num = this.jdbcTemplate.queryForObject
				(sql,Integer.class,new Object[] {account.getId(),account.getUsername()});
		return num;
	}
	
	/*	
	 * queryForObject(String sql, RowMapper rowMapper)
	 * 	通过 RowMapper返回一个 Object 类型的单行记录
	 * 	 只能是8大基本类型中 不知道String可不可以
	 */
	public int select(int id) {
		// TODO Auto-generated method stub
		String sql = "select count(*) from Account where id=?";
		int num = this.jdbcTemplate.queryForObject
				(sql,Integer.class,id);
		return num;
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值