Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Spring的IOC的实现账户的CRUD

Spring的IOC的实现账户的CRUD

作者头像
框架师
发布于 2021-03-05 14:39:40
发布于 2021-03-05 14:39:40
27900
代码可运行
举报
文章被收录于专栏:墨白的Java基地墨白的Java基地
运行总次数:0
代码可运行

Spring的IOC的实现账户的CRUD

完整目录结构

  • 打开你的图形化界面工具(sqlyog,navicat...),创建数据库spring-test,导入以下SQL
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DROP TABLE IF EXISTS USER;

CREATE TABLE USER (
  id INT(11) NOT NULL AUTO_INCREMENT,
  username VARCHAR(32) NOT NULL COMMENT '用户名称',
  birthday DATETIME DEFAULT NULL COMMENT '生日',
  sex CHAR(1) DEFAULT NULL COMMENT '性别',
  address VARCHAR(256) DEFAULT NULL COMMENT '地址',
  PRIMARY KEY  (id)
) ENGINE=INNODB DEFAULT CHARSET=utf8;


INSERT  INTO USER(id,username,birthday,sex,address) VALUES (41,'老王','2018-02-27 17:47:08','男','北京'),(42,'小二王','2018-03-02 15:09:37','女','北京金燕龙'),(43,'小二王','2018-03-04 11:34:34','女','北京金燕龙'),(45,'艾玛','2018-03-04 12:04:06','男','北京金燕龙'),(46,'老王','2018-03-07 17:37:26','男','北京'),(48,'小马宝莉','2018-03-08 11:44:00','女','北京修正');


DROP TABLE IF EXISTS account;
CREATE TABLE account (
  accountId INT(11) NOT NULL AUTO_INCREMENT,
  UID INT(11) DEFAULT NULL COMMENT '用户编号',
  MONEY DOUBLE DEFAULT NULL COMMENT '金额',
  PRIMARY KEY  (accountId),
  KEY FK_Reference_8 (UID),
  CONSTRAINT FK_Reference_8 FOREIGN KEY (UID) REFERENCES USER (id)
) ENGINE=INNODB DEFAULT CHARSET=utf8;


INSERT  INTO account(accountId,UID,MONEY) VALUES (1,46,1000),(2,45,1000),(3,46,2000);
  • 建表后效果如图

  • 打开你的IDEA,创建maven项目,导入相关坐标
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.mobaijun</groupId>
    <artifactId>spring_crud</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <!--数据库驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.46</version>
        </dependency>
        <!--数据源-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.6</version>
        </dependency>
        <!-- Spring的JdbcTemplate -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.1.10.RELEASE</version>
        </dependency>
        <!--IOC容器-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.2.1.RELEASE</version>
        </dependency>
        <!--junit测试-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.10</version>
        </dependency>
    </dependencies>
</project>
  • 编写Account实体
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.mobaijun.pojo.account;

import lombok.Data;

import java.io.Serializable;

/**
 * @Author: Auser·杰
 * Development: IntelliJ IDEA 2018.2.4 x64
 * ClassName: Account
 * ClassCreateDate: 2020/1/3 14:58
 * 类简介:
 */
@Data
public class Account implements Serializable {

    private int accountId;

    private int uid;

    private double money;
}
  • 编写Dao接口
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.mobaijun.dao.account;

import com.mobaijun.pojo.account.Account;

import java.util.List;

/**
 * @Author: Auser·杰
 * Development: IntelliJ IDEA 2018.2.4 x64
 * InterfaceName: AccountDao
 * InterfaceCreateDate: 2020/1/3 15:02
 * 接口简介:
 */
public interface AccountDao {

    void save(Account account);

    void update(Account account);

    void delete(int accountId);

    List<Account> findAll();
}
  • dao实现
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.mobaijun.dao.account.impl;

import com.mobaijun.dao.account.AccountDao;
import com.mobaijun.pojo.account.Account;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;

import java.util.List;

/**
 * @Author: Auser·杰
 * Development: IntelliJ IDEA 2018.2.4 x64
 * ClassName: AccountDaompl
 * ClassCreateDate: 2020/1/3 15:14
 * 类简介:
 */
public class AccountDaompl implements AccountDao {

    // 注入JdbcTemplate
    private JdbcTemplate jdbcTemplate;

    /**
     * Author: Auser·杰
     * MethodName: setJdbcTemplate
     * MethodCreateDate: 2020/1/3 15:05
     * Return: void
     * Param: [jdbcTemplate]
     * 方法说明: 提供setter方法,以便IOC依赖注入
     */
    public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }

    /**
     * Author: Auser·杰
     * MethodName: save
     * MethodCreateDate: 2020/1/3 15:06
     * Return: void
     * Param: [account]
     * 方法说明: 修改并保存
     */
    public void save(Account account) {
        jdbcTemplate.update("insert into account(uid,money) values(?,?)"
                , account.getUid(), account.getMoney());
    }

    /**
     * Author: Auser·杰
     * MethodName: update
     * MethodCreateDate: 2020/1/3 15:09
     * Return: void
     * Param: [account]
     * 方法说明:更新
     */
    public void update(Account account) {
        jdbcTemplate.update("update account set uid=?,money=? where accountId=?"
                , account.getUid(), account.getMoney(), account.getAccountId());
    }

    /**
     * Author: Auser·杰
     * MethodName: delete
     * MethodCreateDate: 2020/1/3 15:10
     * Return: void
     * Param: [accountId]
     * 方法说明: 根据ID删除
     */
    public void delete(int accountId) {
        jdbcTemplate.update("delete from account where accountId = ?", accountId);
    }

    /**
     * Author: Auser·杰
     * MethodName: findAll
     * MethodCreateDate: 2020/1/3 15:10
     * Return: java.util.List<com.mobaijun.pojo.account.Account>
     * Param: []
     * 方法说明: 查询全部
     */
    public List<Account> findAll() {
        return jdbcTemplate.query("select * from account",
                new BeanPropertyRowMapper<Account>(Account.class));
    }
}
  • accountService接口
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.mobaijun.service;

import com.mobaijun.pojo.account.Account;

import java.util.List;

/**
 * @Author: Auser·杰
 * Development: IntelliJ IDEA 2018.2.4 x64
 * InterfaceName: AccountService
 * InterfaceCreateDate: 2020/1/3 15:16
 * 接口简介:account接口
 */
public interface AccountService {

    void save(Account account);

    void update(Account account);

    void delete(int accountId);

    List<Account> findAll();
}
  • accountServiceImpl实现
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.mobaijun.service.impl;

import com.mobaijun.dao.account.AccountDao;
import com.mobaijun.pojo.account.Account;
import com.mobaijun.service.AccountService;

import java.util.List;

/**
 * @Author: Auser·杰
 * Development: IntelliJ IDEA 2018.2.4 x64
 * ClassName: AccountServiceImpl
 * ClassCreateDate: 2020/1/3 15:03
 * 类简介:
 */
public class AccountServiceImpl implements AccountService {

    // 注入dao接口
    private AccountDao accountDao;

    /**
     * Author: Auser·杰
     * MethodName: setAccountDao
     * MethodCreateDate: 2020/1/3 15:18
     * Return: void
     * Param: [accountDao]
     * 方法说明: 给IOC进行依赖注入
     */
    public void setAccountDao(AccountDao accountDao) {
        this.accountDao = accountDao;
    }

    /**
     * Author: Auser·杰
     * MethodName: save
     * MethodCreateDate: 2020/1/3 15:18
     * Return: void
     * Param: [account]
     * 方法说明: 保存
     */
    public void save(Account account) {
        accountDao.save(account);
    }

    /**
     * Author: Auser·杰
     * MethodName: update
     * MethodCreateDate: 2020/1/3 15:18
     * Return: void
     * Param: [account]
     * 方法说明: 更新
     */
    public void update(Account account) {
        accountDao.update(account);
    }

    /**
     * Author: Auser·杰
     * MethodName: delete
     * MethodCreateDate: 2020/1/3 15:18
     * Return: void
     * Param: [accountId]
     * 方法说明: 删除
     */
    public void delete(int accountId) {
        accountDao.delete(accountId);
    }

    /**
     * Author: Auser·杰
     * MethodName: findAll
     * MethodCreateDate: 2020/1/3 15:18
     * Return: java.util.List<com.mobaijun.pojo.account.Account>
     * Param: []
     * 方法说明: 查询全部
     */
    public List<Account> findAll() {
        return accountDao.findAll();
    }
}
  • jdbc.properties配置文件
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test?characterEncoding=utf-8
jdbc.username=xxxxxx
jdbc.password=xxxxxxx
  • applicationContext-dao.xml配置文件
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?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">

    <!--扫描数据库配置文件
        classpath: 从类路径下面开始加载
    -->
    <context:property-placeholder location="classpath:db.properties"/>

    <!--创建数据源
        DruidDataSource ds = new DruidDataSource
    -->
    <bean id="dataSources" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${jdbc.driver}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>

    <!--创建JDBCTemplate对象,注入数据源-->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSources"/>
    </bean>

    <!--创建dao对象,同时注入JdbcTemplate对象-->
    <bean id="accountDao" class="com.mobaijun.dao.account.impl.AccountDaompl">
        <property name="jdbcTemplate" ref="jdbcTemplate"/>
    </bean>

    <!--创建service对象,同时注入dao对象-->
    <bean id="accountService" class="com.mobaijun.service.impl.AccountServiceImpl">
        <property name="accountDao" ref="accountDao"/>
    </bean>
</beans>
  • test目录下新建test类Demo
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.mobaijun.test;

import com.mobaijun.pojo.account.Account;
import com.mobaijun.service.AccountService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.util.List;

/**
 * @Author: Auser·杰
 * Development: IntelliJ IDEA 2018.2.4 x64
 * ClassName: AccountServiceTest
 * ClassCreateDate: 2020/1/3 15:28
 * 类简介:
 */
public class AccountServiceTest {

    /**
     * Author: Auser·杰
     * MethodName: testFindAl
     * MethodCreateDate: 2020/1/3 15:32
     * Return: void
     * Param: []
     * 方法说明: 查询全部
     */
    @Test
    public void testFindAl() {
        // 创建IOC容器
        ApplicationContext ac = new ClassPathXmlApplicationContext("spring/applicationContext-dao.xml");
        // 获取service对象
        AccountService accountService = (AccountService) ac.getBean("accountService");
        List<Account> list = accountService.findAll();
        /**
         * Author: Auser·杰
         * MethodName: testFindAl
         * MethodCreateDate: 2020/1/3 15:37
         * Return: void
         * Param: []
         * 方法说明: 循环遍历所有数据
         */
        for (Account account : list) {
            System.out.println("account = " + account);
        }
    }

}
  • 结果

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-01-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
利用Spring的IOC的实现数据库的CRUD
正文 引言: 纵然是基础,也还是有很多人不会; 先看一下完整的目录结构 打开你的图形化界面工具(sqlyog,navicat...),创建数据库spring-test,导入以下SQL DROP TA
框架师
2020/02/12
3850
利用Spring的IOC的实现数据库的CRUD
Spring学习笔记(五)——JdbcTemplate和spring中声明式事务
它是 spring 框架中提供的一个对象,是对原始 Jdbc API 对象的简单封装。spring 框架为我们提供了很多的操作模板类。 1. 操作关系型数据的: JdbcTemplate HibernateTemplate 2. 操作 nosql 数据库的: RedisTemplate 3. 操作消息队列的: JmsTemplate spring中的JdbcTemplate在 spring-jdbc-5.0.2.RELEASE.jar 中,我们在导包的时候,除了要导入这个 jar 包外,还需要导入一个 spring-tx-5.0.2.RELEASE.jar(它是和事务相关的)。
不愿意做鱼的小鲸鱼
2022/09/24
1.2K0
Spring学习笔记(五)——JdbcTemplate和spring中声明式事务
快速学习-使用 spring 的 IoC 的实现账户的CRUD
使用 spring 的 IoC 实现对象的管理 使用 DBAssit 作为持久层解决方案 使用 c3p0 数据源
cwl_java
2020/04/02
4120
IOC容器入门案例
IOC容器入门案例 创建maven项目,导入坐标 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.
框架师
2021/03/05
4240
Spring学习笔记(十一)——SSM三大框架的整合
点击下载 链接:https://pan.baidu.com/s/1UomJQcmua0a367-oHj1pgg 提取码:9miz
不愿意做鱼的小鲸鱼
2022/09/24
8870
Spring学习笔记(十一)——SSM三大框架的整合
Spring整合Mybatis
ma布
2024/10/21
790
Spring整合Mybatis
Spring 通过单表 CURD 认识配置IOC的两兄弟(XML&注解)
前面一篇文章花大量内容,重点学习了 Spring入门 的一些思想,以及简单的学习了 IOC基础 以及基于基于 XML 的配置方式,大家应该清楚,XML与注解常常是形影不离的,他们就像一对双胞胎,但兄弟两个的想法都是一致的,那就是帮助开发者实现想要的功能,我们所说的IOC 技术,无疑是为了降低程序间的耦合,那么,今天就来聊一聊,基于注解的IOC配置,当然为了大家有对比学习,两种配置同时讲解,同时我把例举得尽量完整一些,就来完成一个对单表进行 CURD 的案例
BWH_Steven
2020/03/04
6300
SSM 框架整合完整流程讲解(IDEA + Maven)
在前面的几篇文章中,我分别写了 Mybatis 、Spring、Spring MVC 入门相关技术的几篇文章,
BWH_Steven
2020/04/08
9.5K1
_Spring事务简介及相关案例
此时没有事务管理,会造成张三的余额减少,而李四的余额并没有增加。所以事务处理位于业务层,即一个service方法是不能分割的。 因此下一篇文章我们会学习到事务管理方案。一步步深入学习,期待大家的支持啊。
会洗碗的CV工程师
2023/11/19
1640
_Spring事务简介及相关案例
SpringBoot非官方教程 | 第三篇:SpringBoot用JdbcTemplates访问Mysql
方志朋
2017/12/29
6230
【SpringMVC】010-SSM框架整合
WEB/INF的lib下,除了导入jstl.jar包,还要导入standard.jar包。另外,解压standard.jar包,把.tld文件放在WEB/INF下;
訾博ZiBo
2025/01/06
720
【SpringMVC】010-SSM框架整合
javaweb-springMVC-56
资料地址:https://github.com/Jonekaka/javaweb-springMVC-56
全栈程序员站长
2021/05/19
5220
使用 spring 的 IoC 实现账户的 CRUD
大致步骤: 1.创建数据库 2.账户实体类 3.编写持久层代码 4.账户的持久层实现类 5.编写业务层代码 6.业务层实现类 7.配置文件 基本结构 1.创建数据库 create table account( id int primary key auto_increment, name varchar(40), money float )character set utf8 collate utf8_general_ci; insert into account(name,money) value
别团等shy哥发育
2023/02/27
2170
使用 spring 的 IoC 实现账户的 CRUD
Spring整合其他技术
问题2:Spring整合mybatis需要管理配置哪两个Bean,这两个Bean作用分别是什么?
楠羽
2023/10/17
1540
Spring整合其他技术
【旧】G006Spring学习笔记-IOC案例完善
訾博ZiBo
2025/01/06
530
【旧】G006Spring学习笔记-IOC案例完善
【旧】G004Spring学习笔记-IOC案例
訾博ZiBo
2025/01/06
740
Spring事务简介及相关案例
会洗碗的CV工程师
2023/10/14
2610
Spring事务简介及相关案例
Java学习之SSM框架整合
前面的学习的Spring、Spring MVC 和Mybatis框架基本已经学习完了,但是要使用起来,我们需要把这三大框架给整合起来一起使用。
全栈程序员站长
2022/07/13
4680
【万字长文】Spring AOP 层层递进轻松入门 !
Tips:如果想要快速查阅的朋友,可以直接跳转到 初识AOP(Spring 程序)这一大节
BWH_Steven
2020/03/13
6110
SSM整合案例(超详细)「建议收藏」
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/130582.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/11
8240
SSM整合案例(超详细)「建议收藏」
推荐阅读
相关推荐
利用Spring的IOC的实现数据库的CRUD
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档