Spring—Jdbc—update()更新数据
JdbcTemplate类中提供的update()方法如下:
创建一个User类:定义id、用户名及用户密码属性,并生成其相应的getter()setter()方法
package com.spring.jdbc;
public class User {
private Integer id;
private String username;
private String password;
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 String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}
创建一个UserDao接口:添加增加用户方法,更新用户方法,删除用户方法
package com.spring.jdbc;
public interface UserDao {
public int addUser(User user);
public int updateUser(User user);
public int deleteUser(int id);
}
创建Use人Dao接口的实现类UserDaoImpl:定义一个jdbcTemplate属性,并添加其setter()方法;重写UserDao中的方法,实现添加、更新和删除用户方法
package com.spring.jdbc;
import org.springframework.jdbc.core.JdbcTemplate;
public class UserDaoImpl implements UserDao{
private JdbcTemplate jdbcTemplate;
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
@Override
public int addUser(User user) {
String sql = "insert into user (username, password) value(?, ?)";
Object[] obj = new Object[] {
user.getUsername(),
user.getPassword()
};
int num = this.jdbcTemplate.update(sql, obj);
return num;
}
@Override
public int updateUser(User user) {
String sql = "update user set username=?, password=? where id=?";
Object[] params = new Object[] {
user.getUsername(),
user.getPassword(),
user.getId()
};
int num = this.jdbcTemplate.update(sql, params);
return num;
}
@Override
public int deleteUser(int id) {
String sql = "delete from user where id=?";
int num = this.jdbcTemplate.update(sql, id);
return num;
}
}
在applicationContext.xml中定义id为userDao的Bean,将UserDaoImpl中定义的jdbcTemplate注入到UserDao中:
<!--将UserDaoImpl中定义的jdbcTemplate注入到UserDao中-->
<bean id="userDao" class="com.spring.jdbc.UserDaoImpl">
<property name="jdbcTemplate" ref="jdbcTemplate"/>
</bean>
完整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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd">
<!--将UserDaoImpl中定义的jdbcTemplate注入到UserDao中-->
<bean id="userDao" class="com.spring.jdbc.UserDaoImpl">
<property name="jdbcTemplate" ref="jdbcTemplate"/>
</bean>
<!--配置数据源-->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<!--数据库驱动-->
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<!--连接数据库url-->
<property name="url" value="jdbc:mysql://localhost:3306/db_spring"/>
<!--连接数据库用户名-->
<property name="username" value="root"/>
<!--连接数据库密码-->
<property name="password" value="123456"/>
</bean>
<!--配置jdbc模板-->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<!--默认必须使用数据源-->
<property name="dataSource" ref="dataSource"/>
</bean>
</beans>
在测试类JdbcTemplateTest测试类中添加addUserTest()用于添加用户信息,updateUserTest()用于更新用户信息,deleteUserTest()用户删除用户信息:
import com.spring.jdbc.User;
import com.spring.jdbc.UserDao;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate;
public class JdbcTemplateTest {
@Test
public void addUserTest() {
ApplicationContext context =
new ClassPathXmlApplicationContext("applicationContext.xml");
UserDao userDao = (UserDao) context.getBean("userDao");
User user = new User();
user.setUsername("hangman");
user.setPassword("123456");
int num = userDao.addUser(user);
if (num > 0) {
System.out.println("成功插入了" + num + "条数据。");
} else {
System.out.println("插入操作执行失败。");
}
}
@Test
public void updateUserTest() {
ApplicationContext context =
new ClassPathXmlApplicationContext("applicationContext.xml");
UserDao userDao = (UserDao) context.getBean("userDao");
User user = new User();
user.setId(1);
user.setUsername("Xiaoping");
user.setPassword("123123");
int num = userDao.updateUser(user);
if (num > 0) {
System.out.println("成功更新了" + num + "条数据。");
} else {
System.out.println("更新操作执行失败。");
}
}
@Test
public void deleteUserTest() {
ApplicationContext context =
new ClassPathXmlApplicationContext("applicationContext.xml");
UserDao userDao = (UserDao) context.getBean("userDao");
int num = userDao.deleteUser(1);
if (num > 0) {
System.out.println("成功删除了" + num + "条数据。");
} else {
System.out.println("删除操作执行成功。");
}
}
}
执行上面的测试程序,然后回到本地的数据库中查看执行结果如下图: