欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Spring实现对数据库的增删改查操作

程序员文章站 2022-03-02 22:22:20
...

JDBC连接

配置xml文件

    <!--创建数据库连接池-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="username" value="root"/>
        <property name="password" value="000000"/>
        <property name="url" value="jdbc:mysql:///user_db"/>
    </bean>

    <!--创建JdbcTemplate对象-->
    <bean class="org.springframework.jdbc.core.JdbcTemplate" id="jdbcTemplate">
        <property name="dataSource" ref="dataSource"/>
    </bean>


    <!-- 开启组件扫描 -->
    <context:component-scan base-package="com.xzh.Spring5.JDBC"/>

编写接口实现类 实现增删改查、批量增删改查、查返回对象

JavaBean 和接口 还有service 就省略不写了

核心代码 就是Dao的实现类:如下

DaoImpl类

package com.xzh.Spring5.JDBC.DAO;

import com.xzh.Spring5.JDBC.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
import java.util.Arrays;
import java.util.List;

/**
 * @Author XuZhuHong
 * @CreateTime 2021/5/19 18:58
 */
@Repository//UserDaoImpl userDaoImpl=new UserDaoImpl()
public class UserDaoImpl implements UserDao {
    @Autowired//根据类型注入 等同于JdbcTemplate jdbcTemplate=new JdbcTemplate()
    private JdbcTemplate jdbcTemplate;

    @Override//单条添加
    public void add(User user) {
        String sql = "insert into t_user values(?,?,?)";
        //把对应的数据封装到一个数组中
        Object[] args = {user.getUserId(), user.getUsername(), user.getUstatus()};
        int update = jdbcTemplate.update(sql, args);
        System.out.println("添加了" + update);
    }

    @Override//单条修改
    public void update(User user) {
        String sql = "UPDATE t_user SET username=?,ustatus=? WHERE user_id=?";
        //把对应的数据封装到一个数组中
        Object[] args = {user.getUsername(), user.getUstatus(), user.getUserId()};
        int update = jdbcTemplate.update(sql, args);
        System.out.println("更新了" + update);
    }

    @Override//单条删除
    public void delete(String id) {
        String sql = "delete  from t_user WHERE user_id=?";
        int update = jdbcTemplate.update(sql, id);
        System.out.println("删除了" + update);
    }

    @Override//查询总数
    public int selectCount() {
        String sql = "select count(*)  from t_user";
        return jdbcTemplate.queryForObject(sql, Integer.class);//后面这个Integer.class是设置返回类型
    }

    @Override//把查询到的数据封装到JavaBean中
    public User findBean(String s) {
        String sql = "select * from t_user WHERE user_id=?";
        //new BeanPropertyRowMapper<>(User.class)这个是把查询到的sql的数据封装回Bean
        //需要注意的是  自己的Bean里面必须要有 set方法 和 空参构造器 可以看看源码
        return jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<>(User.class), s);
    }

    @Override//把查询到的数据封装到List中 类型为User
    public List< User > findListBean() {
        String sql = "select * from t_user";
        //和上面的一样  少了一个参数 就会返回集合 可以看看源码
        return jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(User.class));
    }

    @Override//批量添加
    public void batchAdd(List< Object[] > userList) {
        String sql = "insert into t_user values(?,?,?)";
        //这个batchUpdate的底层就是  把list遍历 然后遍历一次就执行一次sql语句
        int[] ints = jdbcTemplate.batchUpdate(sql, userList);
        System.out.println("添加了成功" + ints);
    }

    @Override//批量更改
    public void batchUpdata(List< Object[] > userList) {

        String sql = "UPDATE t_user SET username=?,ustatus=? WHERE user_id=?";
        //这个batchUpdate的底层就是  把list遍历 然后遍历一次就执行一次sql语句
        int[] ints = jdbcTemplate.batchUpdate(sql, userList);
        System.out.println("修改成功了" + ints);
    }

    @Override//批量删除
    public void batchDelete(List< Object[] > userList) {
        String sql = "delete  from t_user WHERE user_id=?";
        //这个batchUpdate的底层就是  把list遍历 然后遍历一次就执行一次sql语句
        int[] update = jdbcTemplate.batchUpdate(sql, userList);
        ;
        System.out.println("删除成功了" + Arrays.toString(update));
    }
}

测试类

测试类 这里因为用的xml文件配置
所以实例化是 ClassPathXmlApplicationContext类

package com.xzh.Spring5.JDBC;

import com.xzh.Spring5.JDBC.Service.UserService;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.util.ArrayList;
import java.util.List;

/**
 * @Author XuZhuHong
 * @CreateTime 2021/5/19 19:16
 */
public class TestJdbc {
    @Test
    public void testAdd() {
        ClassPathXmlApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext("JdbcBean.xml");
        UserService userService = classPathXmlApplicationContext.getBean("userService", UserService.class);

//        User user=new User("1", "xzh", "aaa");
        //添加一条记录
//        userService.add(user);
//          //根据id修改记录
//        userService.update(new User("1", "zzwwwz", "aaa"));
//
//          //根据id删除一条记录
//        userService.delete("1");
        //查询有几条记录
//        System.out.println("查询到"+userService.selectCount());


        //根据id查询后返回对象
//        System.out.println(userService.findBean("1"));

        //查询后返回对象集合
//        for (User user : userService.findListBean()) {
//            System.out.println(user);
//        }

        //批量操作(添加)
//        List<Object[]> UserList=new ArrayList<>();
//        Object[] o1={"3","Java","c"};
//        Object[] o2={"4","JavaWeb","d"};
//        Object[] o3={"5","Spring","e"};
//
//        UserList.add(o2);
//        UserList.add(o1);
//        UserList.add(o3);
//        userService.batchAdd(UserList);


        //批量操作(修改)
//        List< Object[] > UserList = new ArrayList<>();
//        Object[] o1 = { "Java1", "c","3"};
//        Object[] o2 = { "JavaWeb1", "d","4"};
//        Object[] o3 = { "Spring1", "e","5"};
//        UserList.add(o2);
//        UserList.add(o1);
//        UserList.add(o3);
//
//        userService.batchUpdata(UserList);

        //批量删除
        List< Object[] > UserList = new ArrayList<>();
        Object[] o1 = {"3"};
        Object[] o2 = {"4"};
        Object[] o3 = {"5"};
        UserList.add(o2);
        UserList.add(o1);
        UserList.add(o3);

        userService.batchDelete(UserList);
    }
}