当前位置:   article > 正文

Spring中使用JdbcTemplate操作数据库(增删改查以及批量操作)附带源码解释【超详细_利用spring中的jdbctemplate设计实现图书信息管理系统的增删改查功能,并实现对mys

利用spring中的jdbctemplate设计实现图书信息管理系统的增删改查功能,并实现对mys

1.0-SNAPSHOT

org.apache.maven.plugins

maven-compiler-plugin

7

7

jar

org.springframework

spring-context

5.2.6.RELEASE

org.springframework

spring-jdbc

5.2.7.RELEASE

org.springframework

spring-tx

5.2.7.RELEASE

mysql

mysql-connector-java

5.1.46

com.alibaba

druid

1.1.10

org.aspectj

aspectjweaver

1.8.9

junit

junit

4.12

compile

maven项目的代码结构:

在这里插入图片描述

配置xml配置文件


在 spring 配置文件配置数据库连接池,配置 JdbcTemplate 对象,注入 DataSource。配置时用的是引用外部配置文件,所以还需要引入外部的属性文件,同时创建对象时是基于注解的所以还要开启组件扫描。

bean1.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”

xmlns:p=“http://www.springframework.org/schema/p”

xmlns:util=“http://www.springframework.org/schema/util”

xmlns:context=“http://www.springframework.org/schema/context”

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

<context:component-scan base-package=“com.Keafmd”></context:component-scan>

<context:property-placeholder location=“classpath:jdbc.properties”/>

jdbc.properties:

jdbc.driverClass=com.mysql.jdbc.Driver

jdbc.url=jdbc:mysql://127.0.0.1:3306/user_db?characterEncoding=utf8&useUnicode=true&useSSL=false

jdbc.username=root

jdbc.password=root

JdbcTemplate 操作数据库

============================================================================

相关的操作及注释都在代码中,请看代码。

准备好数据库uset_db创建一个t_user表


在这里插入图片描述

对应数据库创建User实体类


User类:

package com.Keafmd.spring5.entity;

/**

  • Keafmd

  • @ClassName: User

  • @Description: 数据库对应user实体类

  • @author: 牛哄哄的柯南

  • @date: 2021-01-19 10:07

*/

public class User {

private String userId;

private String username;

private String ustatus;

public User() {

}

public User(String userId, String username, String ustatus) {

this.userId = userId;

this.username = username;

this.ustatus = ustatus;

}

public void setUserId(String userId) {

this.userId = userId;

}

public void setUsername(String username) {

this.username = username;

}

public void setUstatus(String ustatus) {

this.ustatus = ustatus;

}

public String getUserId() {

return userId;

}

public String getUsername() {

return username;

}

public String getUstatus() {

return ustatus;

}

@Override

public String toString() {

return “User{” +

“userId='” + userId + ‘’’ +

“, username='” + username + ‘’’ +

“, ustatus='” + ustatus + ‘’’ +

‘}’;

}

}

创建UserDao接口并创建UserDaoImpl类


在UserDaoImpl类注入jdbcTemplate。

UserDao接口:

package com.Keafmd.spring5.dao;

import com.Keafmd.spring5.entity.User;

import java.util.List;

/**

  • Keafmd

  • @ClassName: UserDao

  • @Description:

  • @author: 牛哄哄的柯南

  • @date: 2021-01-19 9:56

*/

public interface UserDao {

//添加方法

void add(User user);

//修改方法

void updateUser(User user);

//删除方法

void delete(String id);

//查询记录数

int selectCount();

//查询返回对象

User findUserInfo(String id);

//查询集合

List findAllUser();

//批量添加

void batchAddUser(List<Object[]> batchArgs);

//批量修改

void batchUpdateUser(List<Object[]> batchArgs);

//批量删除

void batchDeleteUser(List<Object[]> batchArgs);

}

UserDaoImpl类:

package com.Keafmd.spring5.dao;

import com.Keafmd.spring5.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;

/**

  • Keafmd

  • @ClassName: UserDaoImpl

  • @Description: UserDao实现类

  • @author: 牛哄哄的柯南

  • @date: 2021-01-19 9:56

*/

@Repository

public class UserDaoImpl implements UserDao {

//注入jdbcTemplate

@Autowired

private JdbcTemplate jdbcTemplate;

//添加的方法

@Override

public void add(User user) {

//创建sql语句

String sql=" INSERT INTO t_user (user_id, username, ustatus) VALUES (?, ?, ?) ";

// 调用方法实行

int updat = jdbcTemplate.update(sql,user.getUserId(),user.getUsername(),user.getUstatus());

// 返回成功的条数

System.out.println(updat);

}

//修改

@Override

public void updateUser(User user) {

String sql = “UPDATE user_db.t_user SET username = ?, ustatus = ? WHERE user_id = ?”;

Object[] args = {user.getUsername(),user.getUstatus(),user.getUserId()};

int updat = jdbcTemplate.update(sql,args);

System.out.println(updat);

}

//删除

@Override

public void delete(String id) {

String sql =“DELETE FROM user_db.t_user WHERE user_id = ?”;

int updat = jdbcTemplate.update(sql,id);

System.out.println(updat);

}

//查询记录数

@Override

public int selectCount() {

String sql =“SELECT COUNT(*) FROM t_user”;

Integer count = jdbcTemplate.queryForObject(sql,Integer.class);

return count;

}

//返回对象

@Override

public User findUserInfo(String id) {

String sql =“SELECT * FROM t_user where user_id = ?”;

User user = jdbcTemplate.queryForObject(sql,new BeanPropertyRowMapper(User.class),id);

return user;

}

//返回集合对象

@Override

public List findAllUser() {

String sql = “select * from t_user”;

List userList =jdbcTemplate.query(sql,new BeanPropertyRowMapper(User.class));

return userList;

}

//批量添加

@Override

public void batchAddUser(List<Object[]> batchArgs) {

String sql=" INSERT INTO t_user (user_id, username, ustatus) VALUES (?, ?, ?) ";

int []ints = jdbcTemplate.batchUpdate(sql,batchArgs);

System.out.println(Arrays.toString(ints));

}

//批量修改

@Override

public void batchUpdateUser(List<Object[]> batchArgs) {

String sql = “UPDATE user_db.t_user SET username = ?, ustatus = ? WHERE user_id = ?”;

int []ints = jdbcTemplate.batchUpdate(sql,batchArgs);

System.out.println(Arrays.toString(ints));

}

//批量删除

@Override

public void batchDeleteUser(List<Object[]> batchArgs) {

String sql =“DELETE FROM user_db.t_user WHERE user_id = ?”;

int []ints = jdbcTemplate.batchUpdate(sql,batchArgs);

System.out.println(Arrays.toString(ints));

}

}

创建UserService类并在其中注入UserDao


UserService类:

package com.Keafmd.spring5.service;

import com.Keafmd.spring5.dao.UserDao;

import com.Keafmd.spring5.dao.UserDaoImpl;

import com.Keafmd.spring5.entity.User;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Service;

import java.util.List;

/**

  • Keafmd

  • @ClassName: BookService

  • @Description:

  • @author: 牛哄哄的柯南

  • @date: 2021-01-19 9:55

*/

@Service

public class UserService {

//注入dao

@Autowired

private UserDao userDao;

//添加的方法

public void addUser(User user){

userDao.add(user);

}

//修改的方法

public void updateUser(User user){

userDao.updateUser(user);

}

//删除的方法

public void deleteUser(String id){

userDao.delete(id);

}

//查询表中的记录数

public int findCount(){

return userDao.selectCount();

}

//查询返回对象

public User findOne(String id){

return userDao.findUserInfo(id);

}

//查询返回集合

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

最后

很多程序员,整天沉浸在业务代码的 CRUD 中,业务中没有大量数据做并发,缺少实战经验,对并发仅仅停留在了解,做不到精通,所以总是与大厂擦肩而过。

我把私藏的这套并发体系的笔记和思维脑图分享出来,理论知识与项目实战的结合,我觉得只要你肯花时间用心学完这些,一定可以快速掌握并发编程。

不管是查缺补漏还是深度学习都能有非常不错的成效,需要的话记得帮忙点个赞支持一下

整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

(img-uu7Qrac3-1712812813398)]
[外链图片转存中…(img-tliSjghJ-1712812813399)]
[外链图片转存中…(img-2Er427Uf-1712812813399)]
[外链图片转存中…(img-ll2Vtjjf-1712812813400)]
[外链图片转存中…(img-s22lJBzS-1712812813400)]
[外链图片转存中…(img-jZtswDJs-1712812813400)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-MpZRnzvC-1712812813400)]

最后

很多程序员,整天沉浸在业务代码的 CRUD 中,业务中没有大量数据做并发,缺少实战经验,对并发仅仅停留在了解,做不到精通,所以总是与大厂擦肩而过。

我把私藏的这套并发体系的笔记和思维脑图分享出来,理论知识与项目实战的结合,我觉得只要你肯花时间用心学完这些,一定可以快速掌握并发编程。

不管是查缺补漏还是深度学习都能有非常不错的成效,需要的话记得帮忙点个赞支持一下

整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-4sA3aAXA-1712812813401)]

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/576714
推荐阅读
相关标签
  

闽ICP备14008679号