【Spring】Spring JDBCTemplate使用
发布日期:2021-05-07 08:58:09 浏览次数:20 分类:精选文章

本文共 5532 字,大约阅读时间需要 18 分钟。

使用Maven依赖配置Druid数据源并创建JDBC各层类

1. 导入Maven依赖

在项目的pom.xml文件中,我们需要引入以下依赖:

mysql
mysql-connector-java
5.1.47
com.alibaba
druid
1.2.2
org.projectlombok
lombok
1.18.18

2. 配置文件中配置Druid连接池相关信息

在Spring配置文件中,添加以下配置:

3. 创建JDBC所需各层类

1. POJO 层

package indi.zhihuali.pojo;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;@Data@AllArgsConstructor@NoArgsConstructorpublic class User {    private Integer id;    private String name;    private String password;}

2. DAO 层

package indi.zhihuali.dao;import indi.zhihuali.pojo.User;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.jdbc.core.JdbcTemplate;import org.springframework.stereotype.Repository;@Repositorypublic interface UserDao {    public int add(User user);}@Repositorypublic class UserDaoImpl implements UserDao {    @Autowired    private JdbcTemplate jdbcTemplate;    @Override    public int add(User user) {        String sql = "insert into user values (?,?,?)";        Object[] args = {user.getId(), user.getName(), user.getPassword()};        return jdbcTemplate.update(sql, args);    }}

3. Service 层

package indi.zhihuali.service;import com.sun.org.apache.xml.internal.resolver.helpers.PublicId;import indi.zhihuali.dao.UserDao;import indi.zhihuali.pojo.User;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;@Servicepublic class UserService {    @Autowired    private UserDao userDao;    public int addUser(User user) {        return userDao.add(user);    }}

4. 测试方法

测试类

import org.junit.jupiter.api.Test;import org.springframework.context.annotation.ClassPathXmlApplicationContext;public class TestApplication {    @Test    public void test() {        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("ApplicationContext.xml");        UserService userService = context.getBean("userService", UserService.class);                User user = new User(110, "zhangsan", "lisiwu");        userService.addUser(user);    }}

执行结果

运行上述测试类,控制台无报错信息。通过Navicat连接到数据库,刷新表中数据可以看到测试对象已成功添加到数据库。

5. 增删改代码

UserDao 接口

public interface UserDao {    public int add(User user);    public int update(User user);    public int delete(int id);}

UserDaoImpl 类

@Repositorypublic class UserDaoImpl implements UserDao {    @Autowired    private JdbcTemplate jdbcTemplate;    @Override    public int add(User user) {        String sql = "insert into user values (?,?,?)";        Object[] args = {user.getId(), user.getName(), user.getPassword()};        int update = jdbcTemplate.update(sql, args);        System.out.println("添加成功!" + user);        return update;    }    @Override    public int update(User user) {        String sql = "update user set username = ? where id = ?";        Object[] args = {user.getName(), user.getId()};        int update = jdbcTemplate.update(sql, args);        System.out.println("更新成功!" + user);        return update;    }    @Override    public int delete(int id) {        String sql = "delete from user where id = ?";        int update = jdbcTemplate.update(sql, id);        System.out.println("删除成功!");        return update;    }}

UserService 类

@Servicepublic class UserService {    @Autowired    private UserDao userDao;    public int addUser(User user) {        return userDao.add(user);    }    public int updateUser(User user) {        return userDao.update(user);    }    public int delUser(int id) {        return userDao.delete(id);    }}

6. 查询代码

查询普通类型数据

public Integer queryCount() {    String sql = "select count(*) from user";    Integer integer = jdbcTemplate.queryForObject(sql, Integer.class);    System.out.println("表中共有" + integer + "条数据");    return integer;}

查询对象类型数据

public User queryById(Integer id) {    String sql = "select * from user where id = ?";    User user = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper(User.class), id);    System.out.println(user);    return user;}

查询集合类型数据

public List
queryAll() { String sql = "select * from user"; List
users = jdbcTemplate.query(sql, new BeanPropertyRowMapper(User.class)); System.out.println(users); return users;}

7. 批量操作

批量添加

@Overridepublic void batchAdd(List
args) { String sql = "insert into user values (?,?,?)"; int[] ints = jdbcTemplate.batchUpdate(sql, args); System.out.println(Arrays.toString(ints));}

批量更新

@Overridepublic void batchUpd(List
args) { String sql = "update user set username = ? where id = ?"; int[] ints = jdbcTemplate.batchUpdate(sql, args); System.out.println(Arrays.toString(ints));}

批量删除

@Overridepublic void batchDel(List
args) { String sql = "delete from user where id = ?"; int[] ints = jdbcTemplate.batchUpdate(sql, args); System.out.println(Arrays.toString(ints));}

测试批量操作

@Testpublic void test() {    List
objects = new ArrayList<>(); Object[] objects1 = {"zs", 4}; Object[] objects2 = {"ls", 5}; Object[] objects3 = {"ww", 5}; objects.add(objects1); objects.add(objects2); objects.add(objects3); userService.batchAdd(objects);}
上一篇:vue(13):Vue.set、Vue.delete
下一篇:vue(12):Ajax请求

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2025年04月12日 00时24分05秒