spring开发案例配合mysql
实体类:
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的更多相关文章
- Spring开发案例1半注解开发
dao层: package cn.mepu.dao.imp; import cn.mepu.dao.AccountDao; import cn.mepu.domain.Account; import ...
- SpringBoot开发案例之整合Activiti工作流引擎
前言 JBPM是目前市场上主流开源工作引擎之一,在创建者Tom Baeyens离开JBoss后,JBPM的下一个版本jBPM5完全放弃了jBPM4的基础代码,基于Drools Flow重头来过,目前官 ...
- Spring进阶案例之注解和IoC案例
Spring进阶案例之注解和IoC案例 一.常见的注解分类及其作用 从此前的基于xml的IoC开发案例和依赖注入案例中,我们可以将xml配置归纳为: <bean id="" ...
- 【译】Spring 4 + Hibernate 4 + Mysql + Maven集成例子(注解 + XML)
前言 译文链接:http://websystique.com/spring/spring4-hibernate4-mysql-maven-integration-example-using-annot ...
- Spring Boot使用Spring Data Jpa对MySQL数据库进行CRUD操作
只需两步!Eclipse+Maven快速构建第一个Spring Boot项目 构建了第一个Spring Boot项目. Spring Boot连接MySQL数据库 连接了MySQL数据库. 本文在之前 ...
- spring原理案例-基本项目搭建 02 spring jar包详解 spring jar包的用途
Spring4 Jar包详解 SpringJava Spring AOP: Spring的面向切面编程,提供AOP(面向切面编程)的实现 Spring Aspects: Spring提供的对Aspec ...
- Spring Boot (五)Spring Data JPA 操作 MySQL 8
一.Spring Data JPA 介绍 JPA(Java Persistence API)Java持久化API,是 Java 持久化的标准规范,Hibernate是持久化规范的技术实现,而Sprin ...
- 大数据技术之_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 ...
- 《实战突击:PHP项目开发案例整合(第2版)(含DVD光盘1张)》
<实战突击:PHP项目开发案例整合(第2版)(含DVD光盘1张)> 基本信息 作者: 徐康明 辛洪郁 出版社:电子工业出版社 ISBN:9787121221378 上架时间:2014 ...
随机推荐
- USACO 2014 US Open Dueling GPS's /// SPFA
题目大意: 给定n个点m条边的有向图 有两个GPS 分别认为 A[i]到B[i] 的一条边的花费是P[i].Q[i] 当当前走的边不是GPS认为的最短路上的边就会被警告 即两个GPS都不认为是最短路上 ...
- 一句话概括 tcp三次握手
服务端和客户端都需要直到自己均可收发,因此需要三次握手. 简化三次握手: <img width="487" alt="2018-07-10 3 42 11" ...
- vue Inline JavaScript is not enabled. Is it set in your options?
Vue 全家桶 vue全面介绍--全家桶.项目实例 https://www.cnblogs.com/nogodie/p/9853660.html vue项目 Inline JavaScript is ...
- list集合获取相同以及不同的对象
List<StyleMenuModule> list1 = new ArrayList<>(); StyleMenuModule s1 = new StyleMenuModul ...
- Flume速览
Flume是一个分布式的.可靠的.高可用的海量日志采集.聚合和传输的系统.Java实现,插件丰富,模块分明. 数据流模型:Source-Channel-Sink 事务机制保证了消息传递的可靠性 一.基 ...
- Java中的可变参数和asList方法
可变参数: List.of
- Jenkins使用admin修改安全矩阵的时候报错“admin没有Overall/Read权限”
1.注册完Jenkins,然后使用admin用户登录,报错“admin没有Overall/Read权限”: 2.因为我自己的Jenkins是放在tomcat/webapps的目录下的,所以Jenkin ...
- 【leetcode】667. Beautiful Arrangement II
题目如下: Given two integers n and k, you need to construct a list which contains ndifferent positive in ...
- PHP ftp_get() 函数
定义和用法 ftp_get() 函数从 FTP 服务器上下载一个文件并保存到本地一个文件中. 如果成功,该函数返回 TRUE.如果失败,则返回 FALSE. 语法 ftp_get(ftp_connec ...
- CF 600E. Lomsat gelral(dsu on tree)
解题思路 \(dsu\) \(on\) \(tree\)的模板题.暴力而优雅的算法,轻儿子的信息暴力清空,重儿子的信息保留,时间复杂度\(O(nlogn)\) 代码 #include<iostr ...