首页 > 其他分享 >【Spring】lombok、dbUtil插件应用

【Spring】lombok、dbUtil插件应用

时间:2024-09-30 20:50:23浏览次数:9  
标签:account Account Spring void 插件 org import lombok public

一、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;
    }

    @Override
    public void save(Account account) {
        try {
            queryRunner.update("insert into account(aname,amoney) values(?,?)",account.getAname(),account.getAmoney());
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }

    @Override
    public void deleteById(int id) {
        try {
            queryRunner.update("delete from account where aid =?",id);
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }

    }

    @Override
    public 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();
        }

    }

    @Override
    public 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;
    }

    @Override
    public 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();  // 关闭容器
    }

    @Test
    public void show3(){
        controller.save(new Account("王五",7000));
    }
    @Test
    public 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 {

    @Autowired
    IAccountController controller;

    @Test
    public void show1(){
        controller.save(new Account("小陈",6000));
    }

    @Test
    public void show2(){
        List<Account> all = controller.findAll();
        for (int i = 0; i < all.size(); i++) {
            Account account = all.get(i);
            System.out.println(account);
        }
    }

    @Test
    public void show3(){
        Account account = new Account();
        account.setAid(4);
        account.setAname("辰辰");
        account.setAmoney(8000);
        controller.updateById(account);
    }

}

标签:account,Account,Spring,void,插件,org,import,lombok,public
From: https://blog.csdn.net/weixin_71491685/article/details/142550101

相关文章

  • 基于SpringBoot的汽车资讯网站系统设计与实现(源码+论文+部署讲解等)
    博主介绍:✌全网粉丝60W+,csdn特邀作者、Java领域优质创作者、csdn/掘金/哔哩哔哩/知乎/道客/小红书等平台优质作者,计算机毕设实战导师,目前专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌技术栈范围:SpringBoot、Vue、SSM、Jsp、HLMT、Nodejs......
  • springboot+vue作业管理系统【开题+程序+论文】
    系统程序文件列表开题报告内容研究背景在教育信息化快速发展的今天,传统的教学管理模式正逐步向智能化、高效化转型。作业管理作为教学过程中的重要环节,其效率与质量直接影响到学生的学习效果和教师的教学质量。然而,当前许多学校的作业管理仍依赖于纸质作业和人工批改,这种方......
  • springboot+vue招聘系统【开题+程序+论文】
    系统程序文件列表开题报告内容研究背景在当今竞争激烈的就业市场中,招聘系统作为连接求职者和企业的桥梁,扮演着至关重要的角色。随着信息技术的飞速发展和互联网的普及,传统的招聘方式已经难以满足企业和求职者日益增长的需求。传统的招聘会、报纸招聘等模式不仅效率低下,而且......
  • springboot+vue闸口社区管理系统【开题+程序+论文】
    系统程序文件列表开题报告内容研究背景随着城市化进程的加速,社区管理成为了城市治理中的重要一环。闸口社区作为城市中的一个典型代表,面临着人口密集、流动性大、管理复杂等多重挑战。传统的社区管理方式已经难以满足当前的需求,特别是在居民健康管理方面,缺乏系统化、信息化......
  • springboot+vue只租不卖汽车租赁平台【开题+程序+论文】
    系统程序文件列表开题报告内容研究背景随着城市化进程的加速和人们生活水平的提高,汽车已成为现代生活中不可或缺的交通工具。然而,购车成本高、停车难、车辆维护繁琐等问题日益凸显,使得一部分人群对拥有私家车望而却步。与此同时,共享经济模式的兴起为汽车租赁市场带来了新的......
  • 基于springboot+vue.js的家装一体化平台附带文章源码部署视频讲解等
    文章目录前言详细视频演示具体实现截图核心技术介绍后端框架SpringBoot前端框架Vue持久层框架MyBaits为什么选择我代码参考数据库参考测试用例参考源码获取前言......
  • 基于Springboot在线服装销售平台【附源码+文档】
    ......
  • 基于Springboot学生心理咨询系统【附源码+文档】
    ......
  • vue3+SpringBoot框架下的中小型生产企业订单管理系统
    目录功能和开发技术介绍具体实现截图开发核心技术介绍:技术创新点vue3和vue2的区别:核心代码部分展示非功能需求分析系统开发流程系统运行步骤软件测试源码获取功能和开发技术介绍本课题拟采用主流的MVC架构、开发工具idea、java语言编程、MySQL数据库技术、Vue.js技......
  • Vue3基于SpringBoot的高校学生实习综合服务平台设计与实现
    目录功能和开发技术介绍具体实现截图开发核心技术介绍:技术创新点vue3和vue2的区别:核心代码部分展示非功能需求分析系统开发流程系统运行步骤软件测试源码获取功能和开发技术介绍本课题拟采用主流的MVC架构、开发工具idea、java语言编程、MySQL数据库技术、Vue.js技......