最近学了一下Spring的JDBC框架,写一篇文章总结一下,因为不太罕用,我就简略总结一下增删改查的用法,这里是基于XML配置进行的
留神:我这里应用的是本人的数据库,请将配置信息里的datasource数据源信息以及sql语句改成本人的电脑上的
- domain实体类
public class User { private String account; private String password; private Float balance; public User(String account, String password, Float balance) { this.account = account; this.password = password; this.balance = balance; } public User(){} @Override public String toString() { return "User{" + "account='" + account + ''' + ", password='" + password + ''' + ", balance=" + balance + '}'; } public String getAccount() { return account; } public void setAccount(String account) { this.account = account; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Float getBalance() { return balance; } public void setBalance(Float balance) { this.balance = balance; }}
- dao层的类
public class TestJDBC { //数据源:在配置文件中配置,通过Spring主动注入 private DataSource dataSource; //调用增删改查的执行者 private JdbcTemplate jdbcTemplate; public TestJDBC(){} //初始化 public TestJDBC(DataSource dataSource){ this.dataSource = dataSource; jdbcTemplate = new JdbcTemplate(this.dataSource); } public void insert(User user){ //通过?代替传递进去的参数,必须和update办法传进去的参数程序统一 String sql = "insert into atm values(?, ?, ?)"; jdbcTemplate.update(sql, user.getAccount(), user.getPassword(), user.getBalance()); } public void delete(String account){ String sql = "delete from atm where account = ?"; jdbcTemplate.update(sql, account); } public void update(User user){ String sql = "update atm set account = ?, password = ?, balance = ? where account = ?"; jdbcTemplate.update(sql, user.getAccount(), user.getPassword(), user.getBalance(), user.getAccount()); } //查问一条记录 public User selectOne(String account){ //通过策略模式,将查问的后果包装成User对象 String sql = "select * from atm where account = ?"; return jdbcTemplate.queryForObject(sql, new RowMapper<User>(){ @Override public User mapRow(ResultSet resultSet, int i) throws SQLException { String account = resultSet.getString("account"); String password = resultSet.getString("password"); Float balance = resultSet.getFloat("balance"); return new User(account, password, balance); } }, account); } //查问多条记录 public List<User> selectList(){ String sql = "select *from atm"; //query办法依据该办法的返回值类型,将所有记录包装成List对象,而策略模式是将每一行记录包装成User对象 return jdbcTemplate.query(sql, new RowMapper<User>() { @Override public User mapRow(ResultSet resultSet, int i) throws SQLException { String account = resultSet.getString("account"); String password = resultSet.getString("password"); Float balance = resultSet.getFloat("balance"); return new User(account, password, balance); } }); }}
- 配置信息
<?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 https://www.springframework.org/schema/beans/spring-beans.xsd"><!-- JDBC--> <bean id="userJdbcTemplate" class="com.cjh.dao.TestJDBC" autowire="constructor"></bean> <bean id="datasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/bank?serverTimezone=CST"/> <property name="username" value="root"/> <property name="password" value="123456"/> </bean></beans>
- 主函数调用
public class TestMain { public static void main(String[] args) { System.out.println(userDao.selectUserByAccount("2018")); ApplicationContext context = new ClassPathXmlApplicationContext("ApplicationContext.xml"); TestJDBC testJDBC = (TestJDBC) context.getBean("userJdbcTemplate"); //testJDBC.insert(new User("0000", "0000", 999.0f)); //testJDBC.insert(new User("0001", "0000", 999.0f)); //testJDBC.delete("0000"); //testJDBC.update(new User("0001", "1234", 999.0f)); System.out.println(testJDBC.selectList()); }}