热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SpringJdbcTemplate简单实现

SpringJdbcTemplate配置文件1、依赖坐标javax.servlet

SpringJdbcTemplate

配置文件


1、依赖坐标



javax.servlet
javax.servlet-api
4.0.1
provided


org.junit.jupiter
junit-jupiter-api
${junit.version}
test


org.junit.jupiter
junit-jupiter-engine
${junit.version}
test




org.springframework
spring-context
5.2.4.RELEASE



org.springframework
spring-test
5.2.4.RELEASE
test



org.aspectj
aspectjweaver
1.9.5






org.springframework
spring-jdbc
5.2.4.RELEASE



org.springframework
spring-tx
5.2.4.RELEASE



mysql
mysql-connector-java
8.0.19



com.mchange
c3p0
0.9.5.5


junit
junit
4.12
compile


org.springframework
spring-test
5.2.4.RELEASE
compile



org.projectlombok
lombok
1.18.12
provided



2、配置环境

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:cOntext="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">


















3、提取properties

# 驱动名
jdbc.driver=com.mysql.cj.jdbc.Driver
# 数据库连接
jdbc.url=jdbc:mysql://localhost:3306/jdbcprac?useUnicode=true&characterEncoding=utf8&serverTimezOne=GMT%2B8&useSSL=false
# 数据库用户名称
jdbc.user= root
# 数据库用户密码
jdbc.password=0610

实体类

package com.geo.bean;
import lombok.*;
import org.springframework.stereotype.Component;
/**
* Created with IntelliJ IDEA.
*
* @Author: Suhai
* @Date: 2022/04/06/16:13
* @Description:
*/
@Data
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Component("user")
public class User {
private String id;
private String name;
private String sex;
private String classno;
private int age;
@Override
public String toString() {
return "[" +
"学号=" + id +
", 姓名='" + name + '\'' +
", 性别='" + sex + '\'' +
", 班号='" + classno + '\'' +
", 年龄=" + age +
']';
}
}

1、接口类

package com.geo.Dao;
import com.geo.bean.User;
import org.springframework.jdbc.core.BatchPreparedStatementSetter;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
import javax.annotation.Resource;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Iterator;
import java.util.List;
/**
* Created with IntelliJ IDEA.
*
* @Author: Suhai
* @Date: 2022/04/11/18:42
* @Description:
*/
@Repository("userDao")
public class UserDao {
@Resource(name = "jdbcTemplate")
JdbcTemplate jdbcTemplate;
/**
* 批量插入6条记录
* @param userList
*/
public void addUserBatch(List userList) {
String sql = "insert into user(id,name,sex,classno,age) values(?,?,?,?,?)";
int rows = jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter()
{
@Override
public void setValues(PreparedStatement preparedStatement, int i)
throws SQLException {
// 设置参数
preparedStatement.setString(1,userList.get(i).getId());
preparedStatement.setString(2,userList.get(i).getName());
preparedStatement.setString(3,userList.get(i).getSex());
preparedStatement.setString(4,userList.get(i).getClassno());
preparedStatement.setInt(5,userList.get(i).getAge());
} @Override
public int getBatchSize() {
return userList.size();
}
}).length;
// 调用对象的添加方法,返回主键
System.out.println("受影响的行数:" + rows);
System.out.println("执行成功输出:UserDao成功执行插入操作!");
}
/**
* 修改第一条记录为你的学号,姓名,性别,班号,年龄,执行成功输出:xxx成功执行修改操作
*
* @param id
*/
public void updateUserById(String id) {
int rows = jdbcTemplate.update("update user set id = ?, name = ?,sex = ?,classno = ?, age = ? where id = ?",
"419109070419","xxx","m","4191090502",21, id);
System.out.println("受影响的行数:" + rows);
System.out.println("执行成功输出:UserDao成功执行更新操作!");
}
/**
* 删除第5条记录,执行成功输出:xxx成功执行删除操作
* @param id
*/
public void deleteUserById(String id) {
int rows = jdbcTemplate.update("delete from user where id = ?",
id);
System.out.println("受影响的行数:" + rows);
System.out.println("执行成功输出:UserDao成功执行删除操作!");
}
/**
* 查找你的记录并输出,格式为:[学号:xxxx 姓名:xxx 性别:xxx 班号:xxx 年龄:xxx]
* @param id
*/
public void queryUserById(String id) {
String sql = "select * from user where id = ?";
User user = jdbcTemplate.queryForObject(sql, new Object[]
{id}, (resultSet, i) -> {
User user1 = new User();
user1.setId(resultSet.getString("id"));
user1.setName(resultSet.getString("name"));
user1.setSex(resultSet.getString("sex"));
user1.setClassno(resultSet.getString("classno"));
user1.setAge(resultSet.getInt("age"));
return user1;
});
System.out.println("执行成功输出:UserDao成功执行查询封装操作!");
System.out.println(user);
}
}

2、Service类

package com.geo.Dao;
import com.geo.bean.User;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
* Created with IntelliJ IDEA.
*
* @Author: Suhai
* @Date: 2022/04/11/18:43
* @Description:
*/
@Service("userService")
public class UserService {
@Resource(name = "userDao")
UserDao userDao;
public void addUserBatch(List userList) {
userDao.addUserBatch(userList);
}
public void updateAUserById(String id) {
userDao.updateUserById(id);
}
public void deleteUserById(String id) {
userDao.deleteUserById(id);
}
public void queryUserById(String id) {
userDao.queryUserById(id);
}
}

测试类

package com.geo.Test;
import com.geo.Dao.UserDao;
import com.geo.Dao.UserService;
import com.geo.bean.User;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import java.util.ArrayList;
import java.util.List;
/**
* Created with IntelliJ IDEA.
*
* @Author: Suhai
* @Date: 2022/04/11/19:12
* @Description:
*/
public class Test01 {
ApplicationContext ac = new ClassPathXmlApplicationContext("springjdbc.xml");//读取配置文件
UserService userService = (UserService) ac.getBean("userService");
@Test
public void addUserBatch(){
User user1 = new User("1","aaa","f","3",22);
User user2 = new User("2","bbb","f","3",22);
User user3 = new User("3","ccc","f","3",22);
User user4 = new User("4","ddd","f","3",22);
User user5 = new User("5","eee","f","3",22);
User user6 = new User("6","fff","f","3",22);
List userList = new ArrayList<>();
userList.add(user1);
userList.add(user2);
userList.add(user3);
userList.add(user4);
userList.add(user5);
userList.add(user6);
userService.addUserBatch(userList);
}
// 修改第一条记录为你的学号,姓名,性别,班号,年龄,执行成功输出:xxx成功执行修改操作
@Test
public void updateUserById(){
userService.updateAUserById("1");
}
// 删除第5条记录,执行成功输出:xxx成功执行删除操作
@Test
public void deleteUserById( ){
userService.deleteUserById("5");
}
// 查找你的记录并输出,格式为:[学号:xxxx 姓名:xxx 性别:xxx 班号:xxx 年龄:xxx]
@Test
public void queryUserById(){
userService.queryUserById("419109070419");
}
}


推荐阅读
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • ASP.NET2.0数据教程之十四:使用FormView的模板
    本文介绍了在ASP.NET 2.0中使用FormView控件来实现自定义的显示外观,与GridView和DetailsView不同,FormView使用模板来呈现,可以实现不规则的外观呈现。同时还介绍了TemplateField的用法和FormView与DetailsView的区别。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
author-avatar
轩轩20110804
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有