Spring的IOC方式实现账户的CRUD操作案例,基于xml方式
1、需求
实现账户的 CRUD 操作
2、技术选取
使用 spring 的 IoC 实现对象的管理
使用 DBAssit 作为持久层解决方案
使用 c3p0 数据源
3、环境jar包
4、数据库创建和实体类编写
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) values('aaa',1000); insert into account(name,money) values('bbb',1000); insert into account(name,money) values('ccc',1000);
/** * 账户的实体类*/ public class Account implements Serializable { private Integer id; private String name; private Float money; 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; } }
5、持久层代码
public interface IAccountDao { /** * 保存 * @param account */ void save(Account account); /** * 更新 * @param account */ void update(Account account); /** * 删除 * @param accountId */ void delete(Integer accountId); /** * 根据 id 查询 * @param accountId * @return */ Account findById(Integer accountId); /** * 查询所有 * @return */ List<Account> findAll(); }
public class AccountDaoImpl implements IAccountDao { private DBAssit dbAssit; public void setDbAssit(DBAssit dbAssit) { this.dbAssit = dbAssit; } @Override public void save(Account account) { dbAssit.update("insert into account(name,money)values(?,?)",account.getName(),account.getMoney()); } @Override public void update(Account account) { dbAssit.update("update account set name=?,money=? where id=?",account.getName(),account.getMoney(),account.getId()); } @Override public void delete(Integer accountId) { dbAssit.update("delete from account where id=?",accountId); } @Override public Account findById(Integer accountId) { return dbAssit.query("select * from account where id=?",new BeanHandler<Account>(Account.class),accountId); } @Override public List<Account> findAll() { return dbAssit.query("select * from account where id=?",new BeanListHandler<Account>(Account.class)); } }
6、业务层代码
public interface IAccountService { /** * 保存账户 * @param account */ void saveAccount(Account account); /** * 更新账户 * @param account */ void updateAccount(Account account); /** * 删除账户 * @param account */ void deleteAccount(Integer accountId); /** * 根据 id 查询账户 * @param accountId * @return */ Account findAccountById(Integer accountId); /** * 查询所有账户 * @return */ List<Account> findAllAccount(); }
1 public class AccountServiceImpl implements IAccountService { 2 private IAccountDao accountDao; 3 public void setAccountDao(IAccountDao accountDao) { 4 this.accountDao = accountDao; 5 } 6 @Override 7 public void saveAccount(Account account) { 8 accountDao.save(account); 9 } 10 @Override 11 public void updateAccount(Account account) { 12 accountDao.update(account); 13 } 14 @Override 15 public void deleteAccount(Integer accountId) { 16 accountDao.delete(accountId); 17 } 18 @Override 19 public Account findAccountById(Integer accountId) { 20 return accountDao.findById(accountId); 21 } 22 @Override 23 public List<Account> findAllAccount() { 24 return accountDao.findAll(); 25 } 26 }
6、配置文件
<?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"> <!-- 配置 service --> <bean id="accountService" class="service.impl.AccountServiceImpl"> <property name="accountDao" ref="accountDao"></property> </bean> <!-- 配置 dao --> <bean id="accountDao" class="dao.impl.AccountDaoImpl"> <property name="dbAssit" ref="dbAssit"></property> </bean> <!-- 配置 dbAssit 此处我们只注入了数据源,表明每条语句独立事务--> <bean id="dbAssit" class="com.dbassit.DBAssit"> <property name="dataSource" ref="dataSource"></property> </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:///spring_day02"></property> <property name="user" value="root"></property> <property name="password" value="1234"></property> </bean> </beans>
7、测试
public class AccountServiceTest { /** * 测试保存 */ @Test public void testSaveAccount() { Account account = new Account(); account.setName("程序员"); account.setMoney(1000f); ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml"); IAccountService as = ac.getBean("accountService",IAccountService.class); as.saveAccount(account); } /** * 测试查询一个 */ @Test public void testFindAccountById() { ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml"); IAccountService as = ac.getBean("accountService",IAccountService.class); Account account = as.findAccountById(1); System.out.println(account); } /** * 测试更新 */ @Test public void testUpdateAccount() { ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml"); IAccountService as = ac.getBean("accountService",IAccountService.class); Account account = as.findAccountById(1); account.setMoney(203050f); as.updateAccount(account); } /** * 测试删除 */ @Test public void testDeleteAccount() { ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml"); IAccountService as = ac.getBean("accountService",IAccountService.class); as.deleteAccount(1); } /** * 测试查询所有 */ @Test public void testFindAllAccount() { ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml"); IAccountService as = ac.getBean("accountService",IAccountService.class); List<Account> list = as.findAllAccount(); for(Account account : list) { System.out.println(account); } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!