首页 > 数据库 >spring操作数据库

spring操作数据库

时间:2024-08-08 19:25:31浏览次数:17  
标签:account spring 数据库 Account public controller 操作 save void

xml版

程序结构

配置文件

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

核心类:QueryRunner

.query() 查询

.update() 增删改

<dependencies>
        <!-- spring -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.3.27</version>
        </dependency>
        <!-- 单元测试 -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        <!-- spring测试包 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>5.3.27</version>
        </dependency>
        <!-- dbutil -->
        <dependency>
            <groupId>commons-dbutils</groupId>
            <artifactId>commons-dbutils</artifactId>
            <version>1.4</version>
        </dependency>
        <!-- mysql -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.28</version>
        </dependency>
        <!-- 数据源 -->
        <dependency>
            <groupId>c3p0</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.1.2</version>
        </dependency>
        <!-- lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.26</version>
        </dependency>
    </dependencies>

实体类

实现Serializable接口

lombok插件

功能:对实体类自动,动态生成getset,无参有参.....

步骤:

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

2.添加坐标

3.编写注解

@NoArgsConstructor
@AllArgsConstructor
@Data

dao

配坐标 数据注入(set)

接口:

    public void save(Account account);
    public Account findByName(String name);
    public List<Account> findAll();
    public void updateById(Account account);
    public void deleteById(int id);

类:sql语句,继承接口

//操作数据库的核心类
    QueryRunner queryRunner;
    public void setQueryRunner(QueryRunner queryRunner) {
        this.queryRunner = queryRunner;
    }
    @Override
    public void save(Account account) {
        try {
            queryRunner.update("insert into test(aname,amoney) value (?,?)",account.getAname(),account.getAmoney());
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }

service

类:获取dao层数据

IAccountMapper mapper;

    public void setMapper(IAccountMapper mapper) {
        this.mapper = mapper;
    }
    @Override
    public void save(Account account) {
        mapper.save(account);
    }

controller

类:获取service层数据

public void setService(IAccountService service) {
        this.service = service;
    }
    @Override
    public void save(Account account) {
        service.save(account);
    }

applicationContext.xml

链接数据库,层层传递数据

<!--    加载资源文件-->
    <context:property-placeholder location="classpath:jdbc.properties"/>

    <!--    注入数据源-->
    <bean id="dateSource" 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="dateSource"/>
    </bean>

    <!--    注入dao-->
    <bean id="mapperImp" class="com.zhe.dao.AccountMapperImp">
        <property name="queryRunner" ref="queryRunner"/>
    </bean>
    <!--    注入service-->
    <bean id="service" class="com.zhe.service.AccountServiceImp">
        <property name="mapper" ref="mapperImp"/>
    </bean>
    <!--    注入controller-->
    <bean id="controller" class="com.zhe.controller.AccountControllerImp">
        <property name="service" ref="service"/>
    </bean>

junit测试

使用步骤:

1.坐标

2.注解(修饰方法)

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

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

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


    ClassPathXmlApplicationContext applicationContext=null;
    IAccountController controller=null;
    @Before //在test前调用
    public void beforMethod(){
        applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");
        controller=(IAccountController)applicationContext.getBean("controller");
    }
    @After//在test后调用
    public void afterMethod(){
        applicationContext.close();
    }
    @Test
    public void show1(){
        controller.save(new Account("小李",2000));
        controller.save(new Account("大李",2000));
    }
    @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);
        }
    }

ann注解版

xml

将三层数据注入换为扫描

<!--    扫描-->
    <context:component-scan base-package="com.zhe"/>

dao

加@Repository标签,set方法换为@Autowired标签

@Repository
public class AccountMapperImp implements IAccountMapper{
    //操作数据库的核心类
    @Autowired
    QueryRunner queryRunner;

service

@Service
public class AccountServiceImp implements IAccountService{
    @Autowired
    IAccountMapper mapper;

controller

@Controller("controller")
public class AccountControllerImp implements IAccountController {
    @Autowired
    IAccountService service;

配置类版

添加config包

ApplicationConfig类

@Configuration//配置类注解
@ComponentScan(basePackages = "com.zhe")//氛围
@Import(DataConfig.class)//连接注解
public class ApplicationConfig {
}

DataConfig类

连接配置文件

@Configuration//配置类注解
@PropertySource(value = "classpath:jdbc.properties")//加载配置文件
public class DataConfig {
    @Value("${msg1}")
    private String driverClass;
    @Value("${msg2}")
    private String jdbcUrl;
    @Value("${msg3}")
    private String user;
    @Value("${msg4}")
    private String password;
    @Bean
    public DataSource dataSource(){
        try {
            ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource();
            comboPooledDataSource.setDriverClass(driverClass);
            comboPooledDataSource.setJdbcUrl(jdbcUrl);
            comboPooledDataSource.setUser(user);
            comboPooledDataSource.setPassword(password);
            return comboPooledDataSource;
        } catch (PropertyVetoException e) {
            e.printStackTrace();
        }
        return  null;
    }
    @Bean
    public QueryRunner queryRunner(){
        return  new QueryRunner(dataSource());
    }

标签:account,spring,数据库,Account,public,controller,操作,save,void
From: https://blog.csdn.net/2301_79694645/article/details/141034629

相关文章

  • MIMIC IV 3.0数据库安装方法
            MIMICIV3.0在上月已经发布了,那么如何安装这个最新的MIMIC数据库呢?1.MIMICIV3.0数据库变化情况        2024年7月19日,知名医疗数据库MIMIC-IV发布了最新的3.0版本,此次更新为数据库带来了诸多重要改进和新增数据。此次更新最显著的变化是新增了20......
  • Spring Cloud微服务项目聚合Swagger文档
            在微服务架构中,每个服务通常都有自己独立的API文档。为了方便管理和查看所有服务的接口文档,我们需要将这些文档进行聚合。SpringCloud与Swagger的结合可以帮助我们实现这一目标。本文将介绍如何在SpringCloud微服务项目中聚合Swagger文档,以便于集中......
  • Springboot计算机毕业设计高校实验室管理系统(程序)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表学生,教师,实验课程,课程打卡,实验报告,实验成绩,实验设备,耗材信息,耗材申请开题报告内容一、选题背景与意义1.选题背景随着高校教学科研水平的不断提升,实验......
  • Springboot计算机毕业设计高校实验室管理系统的设计与实现x1ir2
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表部门,教师,学生,实验室信息,学生预约,教师预约,耗材分类,耗材信息,耗材入库,学生领用,教师领用,学生借用,教师借用,学生归还,教师归还,购置计划开题报告内容一、......
  • Springboot计算机毕业设计高校女生的饮食营养管理系统(程序+源码+数据库+调试部署+开发
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表用户,个人食谱,特殊食谱,饮食类型,运动打卡,饮食登记开题报告内容一、研究背景与意义1.1研究背景随着社会经济的快速发展和人们生活水平的不断提高,人们对健康......
  • Springboot计算机毕业设计高校实验室仪器设备管理系统msvhp
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表用户,设备信息,设备分类,购置计划,报废申请,申请调拨,供应商,资产登记,采购入库,报废出库,调拨出库,公告信息开题报告内容一、选题背景与意义1.选题背景随着......
  • Springboot计算机毕业设计高校培养方案管理系统(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表教务处,系部负责人,专业负责人,理论课程,教学安排,课程,教师信息,院系,年级,专业,班级,学生,实践课程开题报告内容一、研究背景与意义研究背景随着教育信息化......
  • Spring Boot集成Resilience4J实现限流/重试/隔离
    在现代分布式系统中,可靠性和弹性是至关重要的。Resilience4J是一个专注于提高应用程序弹性和容错能力的库,它提供了多种模式,包括限流(RateLimiter)、重试(Retry)和隔离(Bulkhead)。在这篇文章中,我们将探讨如何在SpringBoot中集成Resilience4J,并分别展示如何实现这三种模式。一、限......
  • Springboot整合Flowable入门-学习笔记
    目录1、定义流程(画图)2、Springboot部署流程3、Springboot删除所有流程4、Springboot根据流程部署ID查询流程定义ID5、Springboot启动(发起)流程6、Springboot查询任务6.1全部任务6.2我的任务(代办任务)7、springboot审批任务1、审批通过2、驳回8、Springboot流程......
  • 公积金提前还贷操作流程
    之前在哪里听说可以用公积金余额提前还公积金贷款,看到公积金里有一些余额,于是考虑操作下提前还款。首先网上搜了下公积金管理中心的电话,告知要办理的业务,工作人员很专业,直接告诉我下载一个“南京公积金”app,在上面就可以自助提前还款了。这真出乎我意料,数字化功能这么完善了!下载了......