Spring—Jdbc—update()更新数据

Spring—Jdbc—update()更新数据

JdbcTemplate类中提供的update()方法如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gPu0Fyii-1618536180071)(C:\Users\H\AppData\Roaming\Typora\typora-user-images\image-20210416090739275.png)]

创建一个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("删除操作执行成功。");
        }
    }
}

执行上面的测试程序,然后回到本地的数据库中查看执行结果如下图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qZKsAudR-1618536180073)(C:\Users\H\AppData\Roaming\Typora\typora-user-images\image-20210416092123769.png)]

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值