Spring JDBC的使用

1.mysql数据库连接包,下载mysql-connector-java-5.1.40-bin.jar
下载地址:https://dev.mysql.com/downloads/connector/j/
其他包下载参考☞🖊
文章下的Spring框架包第三方依赖包

第一步:创建Web项目,在项目的lib目录下导入相关包,
如图
在这里插入图片描述

第二步:在src目录下,创建配置文件applicationContext.xml
相关代码如下

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">
       
    <!-- 配置数据源 -->
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
    <!-- 数据库驱动 -->
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://localhost:3306/spring" />
        <property name="username" value="root" />
        <!--用的是mysql数据库,value值是你自己的数据库密码-->
        <property name="password" value="root" />
    </bean>
    
<!-- 2.配置JDBC模板 -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
	    <property name="dataSource" ref="dataSource" />  
</bean>

<!-- 3.配置注入类 -->
<bean id="accountDao" class="com.jdbc.cn.AccountDaoImpl">
	<property name="jdbcTemplate" ref="jdbcTemplate"></property>
</bean>

</beans>

第三步:在包com.jdbc.cn下创建Account.java类,该类包含两个属性username和balance。以及对应getter、setter方法。

package com.jdbc.cn;

public class Account {
	private Integer id;
	private String username;
	private Double balance; //账户余额
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public Double getBalance() {
		return balance;
	}
	public void setBalance(Double balance) {
		this.balance = balance;
	}
	public String toString() {
		return "Account [id="+ id + ", username ="+ username +", balance=" +balance+"]";
	}

}

第四步:在包com.jdbc.cn下,创建AccountDao.java方法,并在接口中定义添加、删除、更新账户的方法。
代码如下:

package com.jdbc.cn;

import java.util.List;

public interface AccountDao {
	public int addAccount (Account account); //增加
	public int updateAccount (Account accoutn);	//更新
	public int deleteAccount (int id);	//删除
	//通过id查询单个账户和查询所有账户
	public Account findAccountById(int id);
	public List<Account> finDAllAccount();
}

第五步:创建接口的实现类AccountDaoImpl.java,实现增加、删除、更新账户的方法。
根据id查询用户,和查询所有用户的方法
代码如下:

package com.jdbc.cn;

import java.util.List;

import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;

public class AccountDaoImpl implements AccountDao {
	//声明 JdbcTemplate 属性及其setter 方法
	private JdbcTemplate JdbcTemplate;
	//通过id查询账户数据信息
	public Account findAccountById(int id) {
		String sql = "select * form account where id = ?";
		//创建一个新的 BeanPropertyRowMapper 对象
		RowMapper<Account> rowMapper = new BeanPropertyRowMapper<Account>(Account.class);
		//将id绑定到SQL语句中,并通过RowMapper 返回一个Object类型的单行记录
		return this.JdbcTemplate.queryForObject(sql,rowMapper,id);
	}
	public List<Account> finDAllAccount(){
		//定义 SQL 语句
		String sql = "select * from account;";
		//创建一个新的 BeanPropertyRowMapper 对象
		RowMapper<Account> rowMapper = new BeanPropertyRowMapper<Account>(Account.class);
		//执行静态的SQL查询,通过RowMapper返回结果
		return this.JdbcTemplate.query(sql, rowMapper);
	}

	public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
		JdbcTemplate = jdbcTemplate;
	}
	//添加账户
	@Override
	public int addAccount(Account account) {
		String sql = "insert into account(username ,balance) values(?,?)";
		Object[] obj = new Object[] {
				account.getUsername(),
				account.getBalance()
		};
		//执行添加操作,返回的是受sql语句影响的记录条数
		int num = this.JdbcTemplate.update(sql,obj);
		return num;
	}
	//更新账户
	@Override
	public int updateAccount(Account account) {
		String sql = "update account set username=?,balance=? where id = ?";
		Object[] params = new Object[] {
			account.getUsername(),
			account.getBalance(),
			account.getId()
		};
		int num = this.JdbcTemplate.update(sql,params);
		return num;
	}
	//删除账户
	@Override
	public int deleteAccount(int id) {
		String sql = "delete from account where id= ? ";
		int num = this.JdbcTemplate.update(sql,id);
		return num;
	}
	

}


最后是测试JdbcTempaltaTest.java类

package com.jdbc.cn;


import java.util.List;

import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.context.ApplicationContext;


public class JdbcTempaltaTest {
	public static void main(String[] args) { 
		//加载配置文件
		ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
		//获取JdbcTemplate实例
		JdbcTemplate jdbcTemplate = (JdbcTemplate) applicationContext.getBean("jdbcTemplate");
		//使用execute()方法执行SQL 语句,创建用户账户表 account
		try {
			jdbcTemplate.execute("create table account("+"id int primary key auto_increment,"+
					"username varchar(50),"+"balance double)");
					System.out.println("账户表创建成功");
		} catch (Exception e) {
			System.out.println("账户表创建失败");
		}
		
		//创建Account 对象,并向Account 对象中添加数据
		AccountDao accountDao = (AccountDao) applicationContext.getBean("accountDao");
		Account account = new Account();
		account.setUsername("xiaoyu");
		account.setBalance(100.0);
		//执行addAccount()方法,并返回结果
		int num = accountDao.addAccount(account);
		if(num>0) {
			System.out.println("成功插入了" + num +"条数据");
		}
		else {
			System.out.println("插入操作失败!");
		}
		
		//执行findAllAccount()方法,获取Account对象的集合
		List<Account> accounts = accountDao.finDAllAccount();
		//循环输出集合中的对象
		for(Account act : accounts) {
			System.out.println(act);
		}
	}	
}

测试结果
如图
在这里插入图片描述
在这里插入图片描述
思考一下:
1.Spring JDBC 是如何进行配置的。
2.Spring JdbcTemplate 类中几个常用方法的作用。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值