七、jdbcTemplate

news/2024/10/17 20:23:49/

一、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.ppmy.cn/news/86633.html

相关文章

如何使用DOM操作HTML元素

欢迎来到DOM操作的狂欢&#xff01;你想改变HTML元素的样式或者移动它们&#xff1f;没问题&#xff0c;DOM操作可以轻松实现这些&#xff01; 首先&#xff0c;我们来谈谈什么是DOM。DOM就像一棵树&#xff0c;它的每个节点代表HTML文档中的一个元素。你想要修改或者操作这些元…

使用yolov5实现图片分类

文章目录 开始之前下载依赖数据集下载新建配置文件执行训练模型选择训练完成测试模型进行预测自定义模型下载数据集下载地址分享问题 开始之前 你应当先克隆这个仓库 git clone https://github.com/ultralytics/yolov5 # clone下载完毕后&#xff0c;进入克隆的仓库目录 cd …

一图看懂 importlib_metadata 模块:用于提供第三方访问Python包的元数据的库,资料整理+笔记(大全)

本文由 大侠(AhcaoZhu)原创&#xff0c;转载请声明。 链接: https://blog.csdn.net/Ahcao2008 一图看懂 importlib_metadata 模块&#xff1a;用于提供第三方访问Python包的元数据的库&#xff0c;资料整理笔记&#xff08;大全&#xff09; &#x1f9ca;摘要&#x1f9ca;模块…

04. 数据结构之栈

前言 栈&#xff08;stack&#xff09;是一种线性数据的逻辑存储结构。栈中的元素只能先入后出&#xff08;First In Last Out&#xff0c;简称FILO&#xff09;。最早进入的元素存放的位置叫作栈底&#xff08;bottom&#xff09;&#xff0c;最后进入的元素存放的位置叫作栈…

nginx反向代理缓存

背景 nginx 一般用来做反向代理和负载均衡&#xff0c;将客户端请求发送到后端的 jetty&#xff0c;并将 jetty 的响应发送给客户端。后端的 jetty 通常不止一个&#xff0c;nginx 根据配置来选择其中一个 jetty&#xff0c;比较常见的选择策略是轮询。示意图如下 启动缓存支…

谷歌浏览器被2345劫持

方法1&#xff1a; 打开控制面板的卸载程序&#xff0c;搜索2345&#xff0c;把那个恶心的“安全组件-2345”卸载掉&#xff01;&#xff01; 这个方法比修改 host 以及注册表要好使地多&#xff01; 参考网址&#xff1a; 【小技巧】修复chrome被2345劫持 方法2&#xff1a; …

【利用AI让知识体系化】V8引擎相关知识

文章目录 I. 引言V8引擎的背景和概述 II. V8的设计和工作原理V8的整体设计V8的工作流程和运行机制V8在浏览器中的应用场景 III. 内存管理内存模型和内存管理策略垃圾回收机制和算法内存泄漏和内存优化 IV. JIT编译器JIT编译器的作用和优势V8的编译流程和编译器类型编译器优化技…

机器学习常识 4: 分类问题的训练与测试

摘要: 本贴以最为典型的分类问题为例, 描述训练与测试. 1. 基本概念 上午来了 60 个患者, 根据他们的各项检测指标 (即数据), 主治医生给出了诊断结论 (如是否患病, 以及患哪种病), 但不会告诉实习生诊断的方法. 实习生根据这 60 条数据, 归纳总结出了诊断模型 (方法), 这是一…