七、jdbcTemplate

news2025/1/20 19:26:26

一、JdbcTemplate(概念和准备)

1.什么是JdbcTemplate

  • Spring框架对JDBC进行封装,使用JdbcTemplate方便对数据库操作

2.准备工作

  • 引入相关的jar包

  • 在spring配置文件配置数据库连接池
<!--数据库连接池-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
    <property name="url" value="jdbc:mysql://localhost:3306/atguigu"/>
    <property name="username" value="root"/>
    <property name="password" value="root"/>
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
</bean>
  • 配置JdbcTemplate对象,注入DataSource
<!--JdbcTemplate对象-->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
    <!--注入dataSource,源码是set注入-->
    <property name="dataSource" ref="dataSource"></property>
</bean>
  • 创建service类,创建dao类,在dao注入JdbcTemplate对象

 ②配置文件

 ③加上注解,创建对象

④在dao里@Autowired注入属性

⑤在Service里@Autowired注入属性

 二、JdbcTemplate操作数据库(添加)

 1.对应数据库创建实体类

 

 JavaBean

2.编写service和dao

  • 在dao进行数据库添加操作

①接口定义

②在实现类,调用jdbcTemplate.update(String sql,Object… args)方法

参数一sql语句

参数二可变参数

 ③在userService里面调用添加方法

 ④测试

 三、JdbcTemplate操作数据库(修改和删除)

1.在UserDao添加修改,删除的方法

 2.在UserImpl实现接口的方法

 3.在UserService方法里调用

 4.测试

 四、JdbcTemplate操作数据库(查询返回某个值)

1.查询表里面多少记录

2.使用JdbcTemplate实现查询返回某个值代码

  1.  参数一sql语句
  2. 参数二返回的类型 返回数字就是Integer.class
  3. ①在UserDao创建查询记录方法

  4.  ②在UserDaoImpl实现类里面实现接口方法queryForObject()

  5.  ③在UserService方法里面调用dao

  6. //查询记录
    public int count(){
       return userDao.selectCount();
    }
    

    ④测试

  7. @Test
    public void count(){
       ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
       UserService userService = context.getBean("userService", UserService.class);
       System.out.println(userService.count());
    }
    

    五、JdbcTemplate操作数据库(查询返回对象)

  8. 1.场景:查询图书详情

  9. 2.JdbcTemplate实现查询返回对象

  • 参数一:sql语句

    参数二:RowMapper接口,返回不同类型数据。使用这个接口实现类完成数据封装

    参数三:sql语句值

  • ①在UserDao接口创建方法

  • ②在UserDaoImpl实现这个方法queryForObject()

    参数二new BeanPropertyRowMapper<User>(User.class)写上返回对象的类型

  • @Override
    public User findUserInfo(Integer id) {
       String sql = "select * from t_user where id = ?";
       User user = jdbcTemplate.queryForObject(sql,new BeanPropertyRowMapper<User>(User.class),id);
       return user;
    }
    

    ③在UserService方法里面调用

  • //查询一个对象
    public User findOne(Integer id){
       return userDao.findUserInfo(id);
    }
    

    ④测试

  • @Test
    public void findOne(){
       ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
       UserService userService = context.getBean("userService", UserService.class);
       System.out.println(userService.findOne(1));
    }
    

    User{id=1, username='admin', password='admin', email='admin@atguigu.com'}

  • 六、JdbcTemplate操作数据库(查询返回集合)

  • 1.场景:查询图书列表分页

  • 2.调用JdbcTemplate方法实现集合

  1. 参数一:sql语句

    参数二:RowMapper接口,返回不同类型数据。使用这个接口实现类完成数据封装

    参数三:sql语句值

  2. ①在UserDao添加查询集合的方法

  3. ②在UserDaoImpl实现这个方法 new BeanPropertyRowMapper<User>(User.class)

  4.  ③在UserService方法里调用这个方法

  5.  ④测试

  6. @Test
    public void findAll(){
       ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
       UserService userService = context.getBean("userService", UserService.class);
       List<User> bookList = userService.findAll();
       System.out.println(userService.findAll());
    }
    

    七、JdbcTemplate操作数据库(批量添加操作)

  7. 1.批量操作:操作表里面的多条记录

    2.JdbcTemplate实现批量添加操作

  • 参数一:sql语句

    参数二:List集合,添加多条记录的数据

  • ①在UserDao接口里面添加batchAddUser方法

  •  ②在UserDaoImpl类里面实现这个方法batchUpdate()

  •  ③在UserService类里面调用方法

  • //批量添加
    public void batchAdd(List<Object[]> batchArgs){
        userDao.batchAddUser(batchArgs);
    }
    

    ④测试

  •  八、JdbcTemplate操作数据库(批量修改操作)

  • 1.JdbcTemplate实现批量修改操作

  1. 参数一:sql语句

    参数二:List集合,修改多条记录的数据

  2. ①在UserDao接口里面添加批量修改的方法

  3.  ②在UserDaoImpl实现接口的方法

  4.  ③在UserService类里面调用方法

  5. //批量修改
    public void batchUpdate(List<Object[]> batchArgs){
       userDao.batchUpdate(batchArgs);
    }
    

    ④测试 Object[] u1 = {username, password, email, id};

  6.  九、JdbcTemplate操作数据库(批量删除操作)

  7. 1.JdbcTemplate实现批量删除操作

    ①在UserDao接口添加方法

  8.  ②在UserDaoImpl实现类里面实现方法

  9. @Override
    public void batchDelete(List<Object[]> batchArgs) {
       String sql = "delete from t_user where id= ?";
       int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);
       System.out.println(Arrays.toString(ints));
    }
    

    ③在UserService调用方法

  10. //批量删除
    public void batchDelete(List<Object[]> batchArgs){
       userDao.batchDelete(batchArgs);
    }
    

    ④测试

  11. @Test
    public void batchdelete() {
       ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
       UserService userService = context.getBean("userService", UserService.class);
       List<Object[]> batchArgs = new ArrayList<>();
       Object[] u1 = {30};
       Object[] u2 = {31};
       Object[] u3 = {32};
       batchArgs.add(u1);
       batchArgs.add(u2);
       batchArgs.add(u3);
       userService.batchDelete(batchArgs);
    }
    

     

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/555967.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

图像处理:灰度图片线性截断拉伸

1. 为什么要拉伸 很多时候&#xff0c;灰度图片的灰度级较大&#xff0c;而像素值的分布比较集中&#xff0c;这就导致灰度级的利用率过低&#xff0c;从而导致图片的对比度很小&#xff0c;人眼的感官体验很不好&#xff0c;因此我们通常需要对原始的图像数据进行拉伸调整&…

​数据库原理及应用上机(实验六 视图的定义和维护)

✨作者&#xff1a;命运之光 ✨专栏&#xff1a;数据库原理及应用上机实验 ​ 目录 ✨一、实验目的和要求 ✨二、实验内容 ✨三、实验结果 ✨四&#xff0e;实验总结 &#x1f353;&#x1f353;前言&#xff1a; 数据库原理及应用上机实验报告的一个简单整理后期还会不断…

小白漂流记(如何自学网络安全?)

一、前言&#xff08;关于我&#xff09; 我算是“入行”不久的一个新人安全工作者&#xff0c;为什么是引号呢&#xff0c;因为我是个“半个野路子”出身。早在13年的时候&#xff0c;我在初中时期就已经在90sec、wooyun等社区一直学习、报告漏洞。后来由于升学的压力&#xf…

【Python入门篇】——Python中循环语句(for循环的嵌套应用)

作者简介&#xff1a; 辭七七&#xff0c;目前大一&#xff0c;正在学习C/C&#xff0c;Java&#xff0c;Python等 作者主页&#xff1a; 七七的个人主页 文章收录专栏&#xff1a; Python入门&#xff0c;本专栏主要内容为Python的基础语法&#xff0c;Python中的选择循环语句…

普洱突围“春茶江湖”,抖音电商「春茶普洱季」解锁好茶生意新增量

“越沉越香”&#xff0c;是普洱茶鲜明的味道符号。国内普洱茶市场热自2000年左右兴起&#xff0c;并逐渐在春茶市场上占据重要的一席之地。为顺应春茶季节打造“普洱爆品”&#xff0c;实现生意的应季增长&#xff0c;抖音电商也为品牌商家提供了更为完善的营销与经营解法。 …

极米科技发布新一代光源技术,投影行业要变天?

作者&#xff1a;坚白 2018年以来&#xff0c;在年轻人群的追捧下&#xff0c;此前主要应用于商用场景的投影仪&#xff0c;逐渐切换到家用场景&#xff0c;而且随着投影技术的持续改进&#xff0c;投影效果也不断提升&#xff0c;家用投影市场进入高速发展期。 但进入2022年…

微信小程序组件设计规范分享

WeUI是一套与微信原生视觉体验一致的基本样式库。微信官方设计团队为微信网页和微信小程序量身定制设计&#xff0c;使用户感知更加统一&#xff0c;包括button、cell、dialog、progress、toast、article、actionsheet、微信weui开发团队可以直接使用icon等各种元素。下面资源社…

基于postman测试接口(整套接口测试)(附视频教程加源码)

目录 可以解决的问题 开启控制台 单个测试尝试 使用请求结果当参数 打印结果(JSON) 自定义可视化结果 随机参数 测试用例连接 一键测试接口集合 从swagger导入接口 自定义全局变量 可以解决的问题 几百个接口人工测试接口过于繁杂大多测试无法使用请求结果当参数可以…

(转载)从0开始学matlab(第12天)—选择语句(if、switch、try/catch)

选择结构可以使 MATLAB 选择性执行指定区域内的代码 ( 称之为语句块 blocks)&#xff0c;而跳过其他区域的代码。选择结构在 MATLAB 中有三种具体的形式 :if 结构&#xff0c; switch 结构和try/catch 结构。 1 if 结构 1.1if语句的基本形式 if 结构的基本形式如下: 其…

菜鸡shader:L3三色环境光材质、阴影及光衰

三色环境光材质 先放上最终效果这里将环境光分为上中下三层&#xff0c;顶层是红色的&#xff0c;中间那层是绿色的&#xff0c;下层则是蓝色的。环境光遮蔽效果则是直接采样事先准备好的AO贴图。 首先是上层环境光&#xff1a; 这里我们只需要法线向量的第二个分量&#xf…

casbin基于RBAC模型实现权限管理

在casbin中权限都是基于匹配规则和访问控制模型实现的&#xff0c;除了上一章的ACL的实现方式&#xff0c;还有一个常用的访问控制模型RBAC。该模型带上了用户角色&#xff0c;基本满足大多数角色管理的系统。 在RBAC模型中多了一个角色的策略机制&#xff0c;其访问模型规则如…

消息中间件 - RabbitMQ篇之入门及进阶

这里写自定义目录标题 一. RabbitMQ简介1.1. 消息中间件1.1.1.什么是消息中间件1.1.2.消息中间件的传递模式1. 1.2.1 点对点1. 1.2.2 发布订阅模式 1.1.3 消息中间件种类1.1.4 消息中间件的作用 2. RabbitMQ介绍2.1.RabbitMQ的起源2.2.RabbitMQ的安装及简单使用 3. RabbitMQ的简…

Unity UI -- (6)增加Toggle和Slider

在前面的小节中&#xff0c;我们已经有了一个空的设置菜单。现在让我们来添加设置选项。 在本节最后&#xff0c;我们的设置菜单的样子参考如下&#xff1a; 添加一个音乐开关&#xff08;Toggle&#xff09; 现在让我们来增加一个toggle&#xff0c;让用户能够通过它来对场景的…

多功能语音芯片​NV040C的应用,为洗地机开辟新的应用领域

随着科技的快速发展&#xff0c;智能化和自动化已经成为了各个行业发展的主流趋势。传统的家庭洗拖工作日渐被各类洗地机、扫地机器人等取代&#xff0c;其中作为洗地机作为近几年家庭清洁的好物。近年来&#xff0c;不少洗地机厂商开始将语音芯片技术应用到产品中&#xff0c;…

多商户商城系统开发功能优势与选择技巧

电商行业的持续发展&#xff0c;让越来越多的商家企业开始选择入驻多商户商城&#xff0c;通过该系统不仅能够为消费者提供更加便捷良好的购物体验&#xff0c;而且也能够为企业提供一个高效稳定的电商平台&#xff0c;可以说是未来电商行业发展的重要趋势。那么多商户商城系统…

Milk -v 开发板烧录系统以及ssh连接

Milk -v 开发板烧录系统以及ssh连接 0. 前言1. 系统下载2. 驱动安装3. ssh连接 0. 前言 操作系统&#xff1a;Windows10 专业版 开发板&#xff1a;Milk -v 准备读卡器、内存卡、Typec 数据线 Milk-V开发板官方文档 到手后它的外形和宣传图片是一致的&#xff0c;但是更加的…

微信小程序云开发学习记录--1

目录 1.配置小程序项目 2. 云创建 3.新建云文件夹 4.数据库的建立和使用 5.增、删、改、查四种数据库基本操作 增加数据 查询数据 修改数据 删除数据 拿到微信小程序&#xff0c;首先可以先配置好自己的服务器或者是云环境&#xff0c;服务器的方法就不说了&#xff0…

前端实训——Day01

前言 学校最近开始实训周了&#xff0c;一上就是一个月&#xff0c;本来想在课上学点考研的东西的&#xff0c;但是无奈任务重&#xff0c;而且最后还能有点小奖励&#xff0c;就认真学了&#xff0c;再者说&#xff0c;html也挺重要的&#xff0c;学一学也不算浪费时间。 软…

Linux——安装tomcat并部署项目

目录 1、准备阶段 2、具体步骤 2.1、下载tomcat安装包 2.2、上传tomcat安装包 2.3、启动tomcat 2.4、访问页面 3、部署Maven项目至tomcat 3.1、打包Maven项目 3.2、上传打包后的war包至Linux 3.3、修改连接数据库配置文件中的ip 3.4、访问项目 3.5、直接访问ip访问…

Promise理解+ JS 的执行机制

做一道题,理解一下: function getPrinterList() {let res 初始setTimeout(() > {res 1},1000)return res }let res getPrinterList() console.log(res); //输出初始 在getPrinterList函数中,先分清同步异步. JS执行语句时,会区分同步异步,把所有的同步放在同步队列中,把…