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 类中几个常用方法的作用。