Spring(4)使用 Spring的IoC的实现增删该查
2021-01-03 19:32
标签:model money turn ace return accounts spring where odi 1.项目构建,我们在原来的基础上修改即可。 修改maven工程的pom文件,添加必须的引用: 2.数据库建表 3.编写实体类 4.编写持久层代码 5.编写业务层代码 6.修改bean.xml 1.编写测试类 2.测试 3.发现的问题 通过上面的测试类可以看出我们的每个测试方法都重新获取了一次 spring 的核心容器,造成了不必要的重复,增加了工作量。可能我们会想到直接在测试类new一个容器类,这样的话需要我们自己写代码来获取容器。能不能测试时直接就编写测试方法,而不需要手动编码来获取容器呢?答案是肯定的。我们在下面的章节中介绍。 Spring(4)使用 Spring的IoC的实现增删该查 标签:model money turn ace return accounts spring where odi 原文地址:https://www.cnblogs.com/xhbJava/p/12980179.html一、环境搭建
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.0modelVersion>
groupId>com.xhbjavagroupId>
artifactId>Spring02artifactId>
version>0.0.1-SNAPSHOTversion>
packaging>jarpackaging>
name>Spring02name>
url>http://maven.apache.orgurl>
properties>
project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
properties>
dependencies>
dependency>
groupId>org.springframeworkgroupId>
artifactId>spring-contextartifactId>
version>5.0.2.RELEASEversion>
dependency>
dependency>
groupId>org.springframeworkgroupId>
artifactId>spring-testartifactId>
version>5.0.2.RELEASEversion>
dependency>
dependency>
groupId>commons-dbutilsgroupId>
artifactId>commons-dbutilsartifactId>
version>1.4version>
dependency>
dependency>
groupId>mysqlgroupId>
artifactId>mysql-connector-javaartifactId>
version>8.0.19version>
dependency>
dependency>
groupId>c3p0groupId>
artifactId>c3p0artifactId>
version>0.9.1.2version>
dependency>
dependency>
groupId>junitgroupId>
artifactId>junitartifactId>
version>4.12version>
dependency>
dependencies>
project>
create table account(
id int primary key auto_increment,
name varchar(40),
money float
)
package com.xhbjava.pojo;
import java.io.Serializable;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
public class Account implements Serializable {
private Integer id;
private String name;
private Float mmoney;
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 getMmoney() {
return mmoney;
}
public void setMmoney(Float mmoney) {
this.mmoney = mmoney;
}
}
package com.xhbjava.dao;
import java.util.List;
import com.xhbjava.pojo.Account;
/**
* 账户持久层接口
*
* @author mr.wang
*
*/
public interface IAccoutDao {
/**
* 保存账户
*/
void saveAccount(Account account);
/**
* 更新账户
* @param account
*/
void updateAccount(Account account);
/**
* 删除账户
* @param accountId
*/
void deleteAccount(Integer accountId);
/**
* 根据id查询账户
*
* @param accountId
* @return
*/
Account findById(Integer accountId);
/**
* 查询所有账户
* @return
*/
List findAll();
}
package com.xhbjava.dao.impl;
import java.util.List;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import com.xhbjava.dao.IAccountDao;
import com.xhbjava.pojo.Account;
/**
* 用户持久层接口实现类
*
* @author mr.wang
*
*/
public class AccountDaoImpl implements IAccountDao {
private QueryRunner runner;
public void setRunner(QueryRunner runner) {
this.runner = runner;
}
@Override
public void saveAccount(Account account) {
try {
runner.update("insert into account(name,money)values(?,?)", account.getName(), account.getMmoney());
} catch (Exception e) {
throw new RuntimeException(e);
}
}
@Override
public void updateAccount(Account account) {
try {
runner.update("update account set name=?,money=? where id=?", account.getName(), account.getMmoney(),
account.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);
}
}
@Override
public Account findById(Integer accountId) {
try {
return runner.query("select * from account where id=?", new BeanHandler(Account.class),
accountId);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
@Override
public List findAll() {
try {
return runner.query("select * from account", new BeanListHandler(Account.class));
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
package com.xhbjava.service;
import java.util.List;
import com.xhbjava.pojo.Account;
/**
* 账户的业务层接口
*
* @author mr.wang
*
*/
public interface IAccountService {
/**
* 保存账户
*/
void saveAccount(Account account);
/**
* 更新账户
* @param account
*/
void updateAccount(Account account);
/**
* 删除账户
* @param accountId
*/
void deleteAccount(Integer accountId);
/**
* 根据id查询账户
*
* @param accountId
* @return
*/
Account findById(Integer accountId);
/**
* 查询所有账户
* @return
*/
List findAll();
}
package com.xhbjava.service.impl;
import java.util.List;
import com.xhbjava.dao.IAccountDao;
import com.xhbjava.pojo.Account;
import com.xhbjava.service.IAccountService;
/**
* 账户业务层接口实现类
*
* @author mr.wang
*
*/
public class AccountServiceImpl implements IAccountService {
// 此处依赖有待解决
private IAccountDao accountDao;
public void setAccountDao(IAccountDao accountDao) {
this.accountDao = accountDao;
}
@Override
public void saveAccount(Account account) {
accountDao.saveAccount(account);
}
@Override
public void updateAccount(Account account) {
accountDao.updateAccount(account);
}
@Override
public void deleteAccount(Integer accountId) {
accountDao.deleteAccount(accountId);
}
@Override
public Account findById(Integer accountId) {
return accountDao.findById(accountId);
}
@Override
public List findAll() {
return accountDao.findAll();
}
}
xml version="1.0" encoding="UTF-8"?>
beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
bean id="accountService"
class="com.xhbjava.service.impl.AccountServiceImpl">
property name="accountDao" ref="accountDao">property>
bean>
bean id="accountDao" class="com.xhbjava.dao.impl.AccountDaoImpl">
property name="runner" ref="runner">property>
bean>
bean id="runner" class="org.apache.commons.dbutils.QueryRunner"
scope="prototype">
constructor-arg name="ds" ref="dataSource" />
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/ssm?useSSL=true&serverTimezone=UTC&characterEncoding=UTF-8" />
property name="user" value="root">property>
property name="password" value="root">property>
bean>
beans>
二、测试
package com.xhbjava.test;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.xhbjava.pojo.Account;
import com.xhbjava.service.IAccountService;
public class testSpring {
@Test
public void testSaveAccount() {
//1.使用ApplicationContest接口获取srping容器
ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");
//2.根据beanid获取对象
IAccountService accountService = (IAccountService) ac.getBean("accountService");
Account account = new Account();
account.setName("张三");
account.setMmoney(3232.90f);
accountService.saveAccount(account);
}
@Test
public void testUpdateAccount() {
//1.使用ApplicationContest接口获取srping容器
ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");
//2.根据beanid获取对象
IAccountService accountService = (IAccountService) ac.getBean("accountService");
Account account = new Account();
account.setName("张三");
account.setMmoney(5000f);
accountService.updateAccount(account);
}
}
文章标题:Spring(4)使用 Spring的IoC的实现增删该查
文章链接:http://soscw.com/index.php/essay/39890.html