实体类:

 package cn.mepu.domain;

 import java.io.Serializable;

 /**
  * 账户实体类
  * @author shkstart
  * @create 2019-11-08 10:04
  */
 public class Account implements Serializable {
     private Integer id;
     private String name;
     private float money;

     public Account(Integer id, String name, float money) {
         this.id = id;
         this.name = name;
         this.money = money;
     }

     public Account() {
     }

     public Integer getId() {
         return id;
     }

     public void setId(Integer id) {
         this.id = id;
     }

     public String getName() {
         return name;
     }

     public void setName(String name) {
         this.name = name;
     }

     public float getMoney() {
         return money;
     }

     public void setMoney(float money) {
         this.money = money;
     }

     @Override
     public String toString() {
         return "Account{" +
                 "id=" + id +
                 ", name='" + name + '\'' +
                 ", money=" + money +
                 '}';
     }
 }

dao层:

 package cn.mepu.dao.imp;

 import cn.mepu.dao.AccountDao;
 import cn.mepu.domain.Account;
 import org.apache.commons.dbutils.QueryRunner;
 import org.apache.commons.dbutils.handlers.BeanHandler;
 import org.apache.commons.dbutils.handlers.BeanListHandler;

 import java.util.List;

 /**
  * @author shkstart
  * @create 2019-11-08 10:28
  */
 public class AccountDaoImp implements AccountDao {

     private QueryRunner runner;

     public void setRunner(QueryRunner runner) {
         this.runner = runner;
     }

     @Override
     public List<Account> findAllAccount() {
         try {
             return runner.query("select * from account",new BeanListHandler<Account>(Account.class));
         } catch (Exception e) {
             throw new RuntimeException(e);
         }
     }

     @Override
     public Account findAccountById(Integer accountId) {
         try {
             return runner.query("select * from account where id = ? ",new BeanHandler<Account>(Account.class),accountId);
         } catch (Exception e) {
             throw new RuntimeException(e);
         }
     }

     @Override
     public void saveAccount(Account acc) {
         try {
             runner.update("insert into account(name,money) values(?,?)" , acc.getName(),acc.getMoney());
         } catch (Exception e) {
             throw new RuntimeException(e);
         }
     }

     @Override
     public void updateAccount(Account acc) {
         try {
             runner.update("update account set name=? , money=? where id = ? " , acc.getName(),acc.getMoney(),acc.getId());
         } catch (Exception e) {
             throw new RuntimeException(e);
         }
     }

     @Override
     public void deleteAccount(Integer accountId) {
         try {
             runner.update("delete from account where id = ? " , accountId );
         } catch (Exception e) {
             throw new RuntimeException(e);
         }
     }
 }

service层:

 package cn.mepu.service.imp;

 import cn.mepu.dao.AccountDao;
 import cn.mepu.domain.Account;
 import cn.mepu.service.AccountService;

 import java.util.List;

 /**
  * @author shkstart
  * @create 2019-11-08 10:12
  */

 public class AccountServiceImp implements AccountService {

     private AccountDao dao;

     public void setDao(AccountDao dao) {
         this.dao = dao;
     }

     @Override
     public List<Account> findAllAccount() {
         return dao.findAllAccount();
     }

     @Override
     public Account findAccountById(Integer accountId) {
         return dao.findAccountById(accountId);
     }

     @Override
     public void saveAccount(Account acc) {
         dao.saveAccount(acc);
     }

     @Override
     public void updateAccount(Account acc) {
         dao.updateAccount(acc);
     }

     @Override
     public void deleteAccount(Integer accountId) {
     dao.deleteAccount(accountId);
     }
 }

servlet层:

 package cn.mepu.service;

 import cn.mepu.domain.Account;
 import org.junit.Test;
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.support.ClassPathXmlApplicationContext;

 import java.util.List;

 /**
  * @author shkstart
  * @create 2019-11-08 10:45
  */
 public class AccountServiceTest {
     @Test
     public void testFindAll(){
     //1.获取容器
         ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");
     //2.得到业务层对象
         AccountService service = (AccountService) ac.getBean("accountService");
     //3.执行方法
         List<Account> accounts = service.findAllAccount();
         for (Account account : accounts) {
             System.out.println("account = " + account);
         }

     }

     @Test
     public void testFindOne(){
         //1.获取容器
         ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");
         //2.得到业务层对象
         AccountService service = (AccountService) ac.getBean("accountService");
         //3.执行方法
         Account account = service.findAccountById(1);
         System.out.println(account);
     }

     @Test
     public void testSave(){
         //1.获取容器
         ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");
         //2.得到业务层对象
         AccountService service = (AccountService) ac.getBean("accountService");
         //3.执行方法
         service.saveAccount(new Account(1,"DDD",1234));
     }

     @Test
     public void testUpdate(){
         //1.获取容器
         ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");
         //2.得到业务层对象
         AccountService service = (AccountService) ac.getBean("accountService");
         //3.执行方法
         service.updateAccount(new Account(1,"DDD",2345));
     }

     @Test
     public void testDelete(){
         //1.获取容器
         ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");
         //2.得到业务层对象
         AccountService service = (AccountService) ac.getBean("accountService");
         //3.执行方法
         service.deleteAccount(4);
     }
 }

bean.xml:

<?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
        http://www.springframework.org/schema/context/spring-context.xsd">
    <!--告知spring加载容器时扫描要扫描的包配置所需要的约束不在beans中,而是称为context名称空间的约束中-->
<!--    配置service-->
    <bean id="accountService" class="cn.mepu.service.imp.AccountServiceImp">
<!--        注入dao-->
        <property name="dao" ref="accountDao"></property>
    </bean>

<!--    配置dao-->
    <bean id="accountDao" class="cn.mepu.dao.imp.AccountDaoImp">
<!--        注入QueryRunner runner-->
        <property name="runner" ref="runner"></property>
    </bean>

<!--    配置注入QueryRunner scope保证线程安全-->
    <bean id="runner" class="org.apache.commons.dbutils.QueryRunner" scope="prototype">
<!--        注入数据源-->
        <constructor-arg name="ds" ref="dataSource"></constructor-arg>
    </bean>

<!--    配置数据源-->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<!--        连接数据的必备信息-->
        <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
        <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/javaee"></property>
        <property name="user" value="root"></property>
        <property name="password" value="root"></property>
    </bean>

</beans>

spring开发案例配合mysql的更多相关文章

  1. Spring开发案例1半注解开发

    dao层: package cn.mepu.dao.imp; import cn.mepu.dao.AccountDao; import cn.mepu.domain.Account; import ...

  2. SpringBoot开发案例之整合Activiti工作流引擎

    前言 JBPM是目前市场上主流开源工作引擎之一,在创建者Tom Baeyens离开JBoss后,JBPM的下一个版本jBPM5完全放弃了jBPM4的基础代码,基于Drools Flow重头来过,目前官 ...

  3. Spring进阶案例之注解和IoC案例

    Spring进阶案例之注解和IoC案例 一.常见的注解分类及其作用 从此前的基于xml的IoC开发案例和依赖注入案例中,我们可以将xml配置归纳为: <bean id="" ...

  4. 【译】Spring 4 + Hibernate 4 + Mysql + Maven集成例子(注解 + XML)

    前言 译文链接:http://websystique.com/spring/spring4-hibernate4-mysql-maven-integration-example-using-annot ...

  5. Spring Boot使用Spring Data Jpa对MySQL数据库进行CRUD操作

    只需两步!Eclipse+Maven快速构建第一个Spring Boot项目 构建了第一个Spring Boot项目. Spring Boot连接MySQL数据库 连接了MySQL数据库. 本文在之前 ...

  6. spring原理案例-基本项目搭建 02 spring jar包详解 spring jar包的用途

    Spring4 Jar包详解 SpringJava Spring AOP: Spring的面向切面编程,提供AOP(面向切面编程)的实现 Spring Aspects: Spring提供的对Aspec ...

  7. Spring Boot (五)Spring Data JPA 操作 MySQL 8

    一.Spring Data JPA 介绍 JPA(Java Persistence API)Java持久化API,是 Java 持久化的标准规范,Hibernate是持久化规范的技术实现,而Sprin ...

  8. 大数据技术之_09_Flume学习_Flume概述+Flume快速入门+Flume企业开发案例+Flume监控之Ganglia+Flume高级之自定义MySQLSource+Flume企业真实面试题(重点)

    第1章 Flume概述1.1 Flume定义1.2 Flume组成架构1.2.1 Agent1.2.2 Source1.2.3 Channel1.2.4 Sink1.2.5 Event1.3 Flum ...

  9. 《实战突击:PHP项目开发案例整合(第2版)(含DVD光盘1张)》

    <实战突击:PHP项目开发案例整合(第2版)(含DVD光盘1张)> 基本信息 作者: 徐康明    辛洪郁 出版社:电子工业出版社 ISBN:9787121221378 上架时间:2014 ...

随机推荐

  1. Gitlab CI持续集成 - GitLab Runner 安装与注册

    GitLab Runner安装 需要添加gitlab官方库: # For Debian/Ubuntu/Mint curl -L https://packages.gitlab.com/install/ ...

  2. export的用法

    定义环境变量并且赋值 # export MYENV= //定义环境变量并赋值 # export -p declare -x HOME=“/root“ declare -x LANG=“zh_CN.UT ...

  3. MOV EAX,DWORD PTR SS:[EBP+8]

    nasm来写可以写成mov eax,dword ptr [ebp + 8]理由:ebp和esp默认是ss段,所以根本不用显式说明.          eax,ebx,ecx,edx,edi,esi默认 ...

  4. servlet的ServletContext接口

    ServletContext Servlet 上下文 每个web工程都只有一个ServletContext对象,也就是不管在哪个servlet里面,获取到的这个ServletContext对象都是同一 ...

  5. 解决code first Migration 增加外键时出现错误的问题

    先上模型 Comment public class Comment { [Key] public int CommentId { get; set; } [Required] public int S ...

  6. 【CSS3】rgba与opacity

    RGBA 语法 R:红色值.正整数 | 百分数 G:绿色值.正整数 | 百分数 B:蓝色值.正整数| 百分数 A:透明度.取值0~1之间 为什么要用RGBA而不用opacity 因为在项目中需要用到一 ...

  7. elasticsearch学习笔记001

    <Elasticsearch 核心技术与实战>课程Github代码 https://github.com/onebirdrocks/geektime-ELK 运行的环境: windows ...

  8. PHP创建多级目录文件夹

    PHP创建多级目录的代码实例如下: <?php function create_dir($dirName) { // 去除输入目录名中的空格部分 $dirName = trim($dirName ...

  9. delphi 窗体的位置和高宽度-TForm:Letf、Top、Width、Height、ClientWidth、ClientHeight

    delphi 窗体的位置和高宽度-TForm:Letf.Top.Width.Height.ClientWidth.ClientHeight [窗体的高度和宽度]: [客户区的高度和宽度]: [窗体在屏 ...

  10. Centos操作命令

    查看已经开放的端口:firewall-cmd --list-ports 开启端口:firewall-cmd --zone=public --add-port=80/tcp --permanent 重新 ...