ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java实验之转账

2021-10-26 23:33:27  阅读:182  来源: 互联网

标签:转账 java String money void 实验 import public name


了解基于XML、注解的声明式AspectJ开发案例代码的编写,了解 Spring JDBC 的配置,了解Spring JdbcTemplate 的常用方法,了解基于XML方式和基于Annotation方式的声明式事务管理的实现。

controller类  
package gsg.controller;
import javax.annotation.Resource;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import gsg.service.AccountService;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class AccountController {
	@Resource(name="accountService")
	private AccountService accountService;
@Test
	public void demo1(){
		accountService.insertaccount("张三", 100000d);
		System.out.println("存款成功");
	}
	@Test
	public void demo2(){
		accountService.transfer("张三", "张二", 2d);
		System.out.println("转账成功");
	}
	@Test
	public void demo3(){
		accountService.insertaccount("张六", 100000d);
		accountService.transfer("张56", "张5", 1d);
		System.out.println("转账失败");}	}
  dao类
package gsg.dao;

public interface AccountDao {
	public void insertaccount(String name, Double money);
	public String findaccount(String name);
	public void outMoney(String from ,Double money);
	public void inMoney(String to ,Double money);
}
package gsg.dao;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.support.JdbcDaoSupport;
import gsg.entity.Account;
public class AccountDaoImpl extends JdbcDaoSupport implements AccountDao {
	@Override
	public void outMoney(String from, Double money) {
		this.getJdbcTemplate().update("update account set money = money - ? where name = ?", money, from);
	}
	@Override
	public void inMoney(String to, Double money) {
		this.getJdbcTemplate().update("update account set money = money + ? where name = ?", money, to);
	}
	@Override
	public void insertaccount(String name, Double money) {
		// TODO Auto-generated method stub
		this.getJdbcTemplate().update("insert into account values (null,?,?)", name, money);
	}
	@Override
	public String findaccount(String name) {
		// TODO Auto-generated method stub
		Account account = this.getJdbcTemplate().queryForObject("select * from account where name = ?",
				new MyRowMapper(), name);
		return account.toString();
	}

	class MyRowMapper implements RowMapper<Account> {

		@Override
		public Account mapRow(ResultSet rs, int rowNum) throws SQLException {
			Account account = new Account();
			account.setId(rs.getInt("id"));
			account.setName(rs.getString("name"));
			account.setMoney(rs.getDouble("money"));
			return account;	}	}}
entity类
package gsg.entity;
public class Account {
	@Override
	public String toString() {
		return "Account [id=" + id + ", name=" + name + ", money=" + money + "]";
	}
	private int id;
	private String name;
	private double money;
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public double getMoney() {
		return money;
	}
	public void setMoney(double money) {
		this.money = money;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	
	}
service类
package gsg.service;
public interface AccountService {
	public void insertaccount(String name,Double money);
	public String findaccount(String name);
	public void transfer(String from,String to,Double money);
	
}
package gsg.service;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import gsg.dao.AccountDao;
@Transactional(isolation=Isolation.DEFAULT,propagation=Propagation.REQUIRED)
public class AccountServiceImpl implements AccountService {
	// 注入DAO:
	private AccountDao accountDao;
	public void setAccountDao(AccountDao accountDao) {
		this.accountDao = accountDao;
	}
	@Override
	public void transfer( String from,  String to,  Double money) {
		
		accountDao.outMoney(from, money);
		//int d = 1/0;
		accountDao.inMoney(to, money);
			}
	@Override
	public void insertaccount(String name, Double money) {
		// TODO Auto-generated method stub
		accountDao.insertaccount(name, money);
	}
	@Override
	public String findaccount(String name) {
		// TODO Auto-generated method stub
		String text=accountDao.findaccount(name);
		return text;	}}
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"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx"
	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
	http://www.springframework.org/schema/aop
	http://www.springframework.org/schema/aop/spring-aop.xsd
	http://www.springframework.org/schema/tx 
	http://www.springframework.org/schema/tx/spring-tx.xsd">
	<context:gsgponent-scan
		base-package="gsg" />
	<aop:aspectj-autoproxy />
	<bean id="accountDao" class="gsg.dao.AccountDaoImpl">
		<property name="dataSource" ref="dataSource" />
	</bean>
	<bean id="accountService" class="gsg.service.AccountServiceImpl">
		<property name="accountDao" ref="accountDao"/>
	</bean>
	<context:property-placeholder
		location="classpath:jdbc.properties" />
	<bean id="dataSource"
	class="gsg.mchange.v2.c3p0.gsgboPooledDataSource">
		<property name="driverClass" value="${jdbc.driverClass}" />
		<property name="jdbcUrl" value="${jdbc.url}" />
		<property name="user" value="${jdbc.username}" />
		<property name="password" value="${jdbc.password}" />
	</bean>
	<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
		<property name="dataSource" ref="dataSource" />
	</bean>
	<bean id="transactionManager"	class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource" />
	</bean>
	<tx:annotation-driven
		transaction-manager="transactionManager" />

</beans>
jdbc配置文件
jdbc.driverClass=gsg.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///practice1?characterEncoding=utf-8
jdbc.username=root
jdbc.password=root
log4j.properties配置文件



log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.err
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=c\:mylog.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

log4j.rootLogger= info, stdout

标签:转账,java,String,money,void,实验,import,public,name
来源: https://blog.csdn.net/aiaias/article/details/120983637

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有