当前位置: 首页 > news >正文

【Spring】lombok、dbUtil插件应用

一、lombok插件

1. 功能:对实体类自动,动态生成get、set方法,无参、有参构造.....

2. 步骤

        (1)idea安装插件(只做一次)

        (2)添加坐标

        (3)编写注解

                @NoArgsConstructor :无参构造

                @AllArgsConstructor :全参构造

                @Data :get、set、toString方法

package com.apesource.pojo;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import java.io.Serializable;@NoArgsConstructor  // 无参
@AllArgsConstructor // 全参
@Data // get、set、toString方法
public class Account implements Serializable {private int aid;private String aname;private int amoney;public Account(String aname,int amoney){this.aname=aname;this.amoney=amoney;}
}

二、Serializable

        一个对象序列化的接口,一个类只有实现了Serializable接口,它的对象才能被序列化。

        序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。

三、dbUtil-阿帕奇提供操作数据库的插件

1. 依赖:

        

2. 数据源QuerryRunner注入(applicationContext.html)

<?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: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/context https://www.springframework.org/schema/context/spring-context.xsd"><!-- 加载资源文件 --><context:property-placeholder location="classpath:jdbc.properties"/><!-- 注入数据源 --><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"><property name="driverClass" value="${msg1}"/><property name="jdbcUrl" value="${msg2}"/><property name="user" value="${msg3}"/><property name="password" value="${msg4}"/></bean><!-- 注入QueryRunner --><bean id="queryRunner" class="org.apache.commons.dbutils.QueryRunner"><constructor-arg name="ds" ref="dataSource"/></bean><!-- 注入dao --><bean id="mapperImp" class="com.apesource.dao.AccountMapperImp"><property name="queryRunner" ref="queryRunner"/></bean><!-- 注入service --><bean id="service" class="com.apesource.service.AccountServiceImp"><property name="mapper" ref="mapperImp"/></bean><!-- 注入controller --><bean id="controller" class="com.apesource.controller.AccountControllerImp"><property name="service" ref="service"/></bean></beans>

3. 核心类QueryRunner

4. QueryRunner提供的方法

        (1)query()  查询

                BeanHandler:把结果集转为一个 Bean,并返回。Bean的类型在创建BeanHandler 对象时以 Class 对象的方式传入 BeanHandler(Class<T> type)。

           BeanListHandler:把结果集转为一个 Bean 的 List, 并返回。Bean的类型在创建 BeanListHanlder对象时以 Class对象的方式传入BeanListHandler(Class<T> type)。

        (2)update() 增删改

package com.apesource.dao;import com.apesource.pojo.Account;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;import java.sql.SQLException;
import java.util.List;public class AccountMapperImp implements IAccountMapper {// 操作数据库的核心类QueryRunner queryRunner;public void setQueryRunner(QueryRunner queryRunner) {this.queryRunner = queryRunner;}@Overridepublic void save(Account account) {try {queryRunner.update("insert into account(aname,amoney) values(?,?)",account.getAname(),account.getAmoney());} catch (SQLException throwables) {throwables.printStackTrace();}}@Overridepublic void deleteById(int id) {try {queryRunner.update("delete from account where aid =?",id);} catch (SQLException throwables) {throwables.printStackTrace();}}@Overridepublic void updateById(Account account) {try {queryRunner.update("update account set aname=?,amoney=? where aid=?",account.getAname(),account.getAmoney(),account.getAid());} catch (SQLException throwables) {throwables.printStackTrace();}}@Overridepublic Account findByName(String name) {try {return queryRunner.query("select * from account where aname=?",new BeanHandler<Account>(Account.class),name);} catch (SQLException throwables) {throwables.printStackTrace();}return null;}@Overridepublic List<Account> findAll() {try {return queryRunner.query("select * from account",new BeanListHandler<Account>(Account.class));} catch (SQLException throwables) {throwables.printStackTrace();}return null;}
}

四、junit测试

1. 使用步骤

        (1)坐标(依赖)

        

        (2)注解

                修饰方法

                        @Test======>可以运行的方法

                        @Before====>@Test运行之前

                        @After=====>@Test运行之后

                基于xml实现:

package com.apesource.test;import com.apesource.controller.IAccountController;
import com.apesource.pojo.Account;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;import java.util.List;public class Test01 {ClassPathXmlApplicationContext applicationContext = null;IAccountController controller = null;@Before  // 测试运行前执行public void beforeMethod(){applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");controller = (IAccountController) applicationContext.getBean("controller");}@After // 测试执行后执行public void afterMethod(){applicationContext.close();  // 关闭容器}@Testpublic void show3(){controller.save(new Account("王五",7000));}@Testpublic void show4(){List<Account> all = controller.findAll();for (int i = 0; i < all.size(); i++) {Account account = all.get(i);System.out.println(account);}}}

                修饰类

                        @RunWith(SpringJUnit4ClassRunner.class),让测试运行于Spring测试环境,搭配@ContextConfiguration 使用,Spring整合JUnit4测试时,使用注解引入多个配置文件。

                基于annotation注解实现

package com.apesource.test;import com.apesource.controller.IAccountController;
import com.apesource.pojo.Account;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import java.util.List;@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:applicationContext.xml")
public class Test02 {@AutowiredIAccountController controller;@Testpublic void show1(){controller.save(new Account("小陈",6000));}@Testpublic void show2(){List<Account> all = controller.findAll();for (int i = 0; i < all.size(); i++) {Account account = all.get(i);System.out.println(account);}}@Testpublic void show3(){Account account = new Account();account.setAid(4);account.setAname("辰辰");account.setAmoney(8000);controller.updateById(account);}}

相关文章:

【Spring】lombok、dbUtil插件应用

一、lombok插件 1. 功能&#xff1a;对实体类自动&#xff0c;动态生成get、set方法&#xff0c;无参、有参构造..... 2. 步骤&#xff1a; &#xff08;1&#xff09;idea安装插件(只做一次) &#xff08;2&#xff09;添加坐标 &#xff08;3&#xff09;编写注解 NoArgsCo…...

【学习笔记】WSL

WSL 1、 介绍 1.1、概述 1.2、版本 1.3、配置安装 2、 基本 2.1、基本命令 1、 介绍 1.1、概述 WSL 是 Windows Subsystem for Linux 的缩写&#xff0c;中文称为 Windows 下的 Linux 子系统。它是微软在 Windows 上提供的一种功能&#xff0c;允许用户在 …...

python assert 断言用法

语法&#xff1a; try:assert 条件表达式, "可选的错误消息" except AssertionError as error:print(f"断言失败&#xff1a;{error}")其中&#xff0c; try...except是异常处理语法结构&#xff0c;try可以测试代码块中的错误&#xff0c;并在出现异常时…...

MySQL事务、索引、数据恢复和备份

MySQL事务、索引、数据恢复和备份 1.MySQL的事务处理 事务就是将一组SQL语句放在同一批次内去执行 如果一个SQL语句出错&#xff0c;则该批次内的所有SQL都将被取消执行 MySQL的事务实现方法 : SET AUTOCOMMIT 使用SET语句来改变自动提交模式 SET AUTOCOMMIT 0; # 关…...

什么是chatgpt?国内有哪些类gpt模型?

什么是ChatGPT&#xff1f; “ChatGPT”这个名字越来越多地出现在我们的生活中。简单来说&#xff0c;ChatGPT是OpenAI开发的一种人工智能对话模型。它基于GPT&#xff08;Generative Pre-trained Transformer&#xff0c;生成式预训练变换模型&#xff09;架构&#xff0c;能…...

ISP基本框架及算法介绍 ISP(Image Signal Processor)

ISP基本框架及算法介绍 ISP(Image Signal Processor)&#xff0c;即图像处理&#xff0c;主要作用是对前端图像传感器输出的信号做后期处理&#xff0c;主要功能有线性纠正、噪声去除、坏点去除、内插、白平衡、自动曝光控制等&#xff0c;依赖于ISP才能在不同的光学条件…...

Stable Diffusion 的 ControlNet 主要用途

SD&#xff08;Stable Diffusion&#xff09;中的ControlNet是一种条件生成对抗神经网络&#xff08;Conditional Generative Adversarial Network, CGAN&#xff09;的扩展技术&#xff0c;它允许用户通过额外的输入条件来控制预训练的大模型&#xff08;如Stable Diffusion&a…...

矩阵分析 学习笔记4 内积与Gram矩阵

内积 定义 由于对称&#xff0c;第二变元线性那第一变元也线性了。例如这个&#xff1a;...

iOS 消息机制详解

应用 解决NSTimer、CADisplayLink循环引用。 二者都是基于runloop的定时器&#xff0c;由于处理事件内容不一样&#xff0c;runloop 每运行一次运行耗时就不一样&#xff0c;无法准确的定时触发timer的事件。 NSProxy 与 NSObject 如果继承自NSProxy 直接开始消息转发&…...

深入理解Spring Data JPA与接口编程

目录 1. 什么是Spring Data JPA&#xff1f; 2. 如何使用Spring Data JPA&#xff1f; 3. 示例代码 4. 使用Query注解 5. 拓展知识&#xff1a;接口编程的好处 6. 结论 在软件开发领域&#xff0c;接口&#xff08;Interface&#xff09;是一种定义了方法签名但没有实现的…...

Wireshark学习使用记录

wireshark 是一个非常好用的抓包工具&#xff0c;使用 wireshark 工具抓包分析&#xff0c;是学习网络编程必不可少的一项技能。 原理 Wireshark使用的环境大致分为两种:一种是电脑直连互联网的单机环境&#xff0c;另外一种就是应用比较多的互联网环境&#xff0c;也就是连接…...

OpenCV特征检测(9)检测图像中直线的函数HoughLines()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在二值图像中使用标准 Hough 变换查找直线。 该函数实现了用于直线检测的标准 Hough 变换或标准多尺度 Hough 变换算法。详见 http://homepages…...

力扣 中等 445.两数相加 II

文章目录 题目介绍题解 题目介绍 题解 首先反转两个链表&#xff0c;再调用 2. 两数相加 链接的代码&#xff0c;得到链表&#xff0c;最后将其翻转即可。 class Solution {public ListNode addTwoNumbers(ListNode l1, ListNode l2) {l1 reverseList(l1);l2 reverseList(l…...

华为云徐峰:AI赋能应用现代化,加速软件生产力跃升

2024年9月19日&#xff0c;在华为全联接大会2024的“AI赋能应用现代化&#xff0c;加速软件生产力跃升”论坛上&#xff0c;华为云PaaS服务产品部部长徐峰发表了主题演讲&#xff0c;介绍了未来应用智能化演进趋势&#xff0c;分享了智能化应用的行业实践&#xff0c;并发布了华…...

C发送邮件技巧:如何批量发送个性化邮件?

C发送邮件的高效步骤指南&#xff1f;C语言怎么实现SMTP发邮件&#xff1f; 为了提高邮件营销的效果&#xff0c;掌握C发送邮件的技巧&#xff0c;特别是如何批量发送个性化邮件&#xff0c;显得尤为重要。AokSend将详细介绍C发送邮件的技巧&#xff0c;帮助您在邮件营销中取得…...

基于python+spark的外卖餐饮数据分析系统设计与实现(含论文)-Spark毕业设计选题推荐

博主介绍&#xff1a; 大家好&#xff0c;本人精通Java、Python、C#、C、C编程语言&#xff0c;同时也熟练掌握微信小程序、Php和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我有丰富的成品Java、Python、C#毕设项目经验&#xff0c;能够为学生提供各类…...

权限维持——Linux

前提 已经提权到管理员权限 一、创建账户 1、创建一个自定义密码的账户 已知&#xff0c;Linux中所有的用户的信息 存储在/etc/passwd这个文件中 。可以利用管理员权限修改这个文件&#xff0c; 添加一个账户 。 利用linux中的密码的编码算法 生成对应密码 &#xff08;不知…...

申请SSL证书闭坑方法

上来先问一个问题&#xff0c;为什么自己不能成立CA机构发SSL证书产品&#xff1f;为什么有的CA机构不能发被信任SSL证书产品&#xff1f; 真正原因是&#xff0c;SSL证书里面的根证书需要提前放入操作系统及浏览器&#xff0c;然而这些浏览器和操作系统的版本很多&#xff0c…...

linux 下域名解析错误

本文参考这里 作者&#xff1a;程序那点事儿 日期&#xff1a;2024/01/31 16:25 ping raw.githubusercontent.com&#xff0c;ping这个域名时&#xff0c;发现返回的是本地ip 原因是&#xff0c;配置了本地网关地址 192.168.xx.1 用命令查看默认网卡的网关&#xff1a;nmcli …...

基于单片机的角度、水位、温度、辅助热源、电机仿真

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于51单片机 采用滑动变阻器连接ADC0832数模转换器模拟角度传感器&#xff0c;水位传感器&#xff1b; 采样DS18B20温度传感器检测温度 通过LCD1602显示&#xff0c;第一行显示温度、水位、角度…...

Codesys ST语言PID调参避坑指南:从仿真到实战,手把手教你搞定温控/电机项目

Codesys ST语言PID调参避坑指南&#xff1a;从仿真到实战的工程化解决方案 在工业自动化领域&#xff0c;PID控制算法占据着核心地位。无论是恒温控制、电机调速还是压力调节&#xff0c;一个精心调校的PID控制器往往能决定整个系统的性能表现。然而&#xff0c;许多工程师在掌…...

终极指南:在Windows上直接安装安卓APK文件的5个简单步骤

终极指南&#xff1a;在Windows上直接安装安卓APK文件的5个简单步骤 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 想在Windows电脑上运行安卓应用&#xff0c;但又厌…...

无线渗透测试框架Airecon:自动化工具链整合与实战应用

1. 项目概述与核心价值最近在整理自己的渗透测试工具箱时&#xff0c;又翻出了pikpikcu/airecon这个老伙计。说实话&#xff0c;在无线安全评估这个细分领域里&#xff0c;它可能不是名气最响的那个&#xff0c;但绝对是我个人在内部网络渗透和红队演练中最顺手、最高效的“组合…...

如何免费解锁WeMod专业版:2026年终极完整指南

如何免费解锁WeMod专业版&#xff1a;2026年终极完整指南 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/gh_mirrors/we/Wand-Enhancer 还在为WeMod专业版的高昂费用而烦恼吗&#xf…...

深入Transformer内部:LoRA到底改动了哪部分权重才让模型“学会”新任务?

深入Transformer内部&#xff1a;LoRA如何通过低秩更新重塑大模型能力 在自然语言处理领域&#xff0c;大型预训练模型的微调一直是个计算密集型任务。传统全参数微调需要更新数十亿甚至数千亿参数&#xff0c;这对大多数研究者和企业来说都是难以承受的负担。低秩适应(LoRA)技…...

高性能键盘映射与SOCD清理架构解析:解决游戏输入冲突的技术方案

高性能键盘映射与SOCD清理架构解析&#xff1a;解决游戏输入冲突的技术方案 【免费下载链接】socd Key remapper for epic gamers 项目地址: https://gitcode.com/gh_mirrors/so/socd 在竞技游戏和高速动作游戏中&#xff0c;键盘输入的处理方式直接影响玩家的操作精度和…...

iOS越狱终极指南:解锁iPhone隐藏功能的3个关键步骤

iOS越狱终极指南&#xff1a;解锁iPhone隐藏功能的3个关键步骤 【免费下载链接】Jailbreak iOS 26.4 - 26, 17 - 17.7.5 & iOS 18 - 18.7.3 Jailbreak Tools, Cydia/Sileo/Zebra Tweaks & Jailbreak News Updates || AI Jailbreak Finder &#x1f447; 项目地址: ht…...

Kubernetes配置管理实战:基于Kustomize的结构化部署与多环境管理

1. 项目概述&#xff1a;一个被低估的Kubernetes配置管理利器如果你和我一样&#xff0c;长期在Kubernetes生态里摸爬滚打&#xff0c;那你一定经历过这样的场景&#xff1a;为了部署一个稍微复杂点的应用&#xff0c;需要维护一堆YAML文件——Deployment、Service、ConfigMap、…...

窗口大小控制神器:3分钟掌握WindowResizer的终极窗口调整技巧

窗口大小控制神器&#xff1a;3分钟掌握WindowResizer的终极窗口调整技巧 【免费下载链接】WindowResizer 一个可以强制调整应用程序窗口大小的工具 项目地址: https://gitcode.com/gh_mirrors/wi/WindowResizer 还在为那些顽固的应用程序窗口而束手无策吗&#xff1f;是…...

Windows Android子系统深度优化:WSABuilds项目架构解析与实战部署指南

Windows Android子系统深度优化&#xff1a;WSABuilds项目架构解析与实战部署指南 【免费下载链接】WSABuilds Run Windows Subsystem For Android on your Windows 10 and Windows 11 PC using prebuilt binaries with Google Play Store (MindTheGapps) and/or Magisk or Ker…...