spring-springmvc-jdbc小案例
此案例是为ssm作铺垫的。
创建一个银行账户和基金账户,然后通过银行账户购买基金。由spring、springmvc、spring自带的c3p0实现。
废话不多说。如下
涉及到的 jar包(多了):
dao层:
package com.bjsxt.dao; import com.bjsxt.pojo.Account; public interface IAccountDao { //新增 void insertAccount(String aname,double balance); //更新 void updateAccount(Account account); }
package com.bjsxt.dao; import com.bjsxt.pojo.Fund; public interface IFundDao { //新增 void insertFund(String fname,int amount); //更新 void updateFund(Fund fund); }
package com.bjsxt.dao.impl; import org.springframework.jdbc.core.support.JdbcDaoSupport; import org.springframework.stereotype.Repository; import com.bjsxt.dao.IAccountDao; import com.bjsxt.pojo.Account; @Repository public class AccountDaoImpl extends JdbcDaoSupport implements IAccountDao { //新增 @Override public void insertAccount(String aname, double balance) { String sql="insert into account(aname,balance) values(?,?)"; this.getJdbcTemplate().update(sql, aname,balance); } //更新 @Override public void updateAccount(Account account) { String sql="update account set balance=balance-? where aname=?"; this.getJdbcTemplate().update(sql, account.getMoney(),account.getAname()); } }
package com.bjsxt.dao.impl; import org.springframework.jdbc.core.support.JdbcDaoSupport; import org.springframework.stereotype.Repository; import com.bjsxt.dao.IFundDao; import com.bjsxt.pojo.Fund; @Repository public class FundDaoImpl extends JdbcDaoSupport implements IFundDao { //新增 @Override public void insertFund(String fname, int amount) { String sql="insert into fund(fname,amount) values(?,?)"; this.getJdbcTemplate().update(sql, fname,amount); } //更新 @Override public void updateFund(Fund fund) { String sql = "update fund set amount=amount+? where fname=?"; this.getJdbcTemplate().update(sql, fund.getCount(),fund.getFname()); } }
handlers层:
package com.bjsxt.handlers; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import com.bjsxt.pojo.Account; import com.bjsxt.pojo.Fund; import com.bjsxt.service.FundService; //后端控制器 @Controller @Scope("prototype") @RequestMapping("/springmvc") public class FundController{ @Autowired private FundService fundService; public FundService getFundService() { return fundService; } public void setFundService(FundService fundService) { this.fundService = fundService; } @RequestMapping("/buyFund") public String buyFund(Account account,Fund fund){ fundService.modify(account, fund); return "welcome"; } }
pojo层:
package com.bjsxt.pojo; public class Account { private String aname; private double money; public String getAname() { return aname; } public void setAname(String aname) { this.aname = aname; } public double getMoney() { return money; } public void setMoney(double money) { this.money = money; } public Account() { super(); // TODO Auto-generated constructor stub } public Account(String aname, double money) { super(); this.aname = aname; this.money = money; } @Override public String toString() { return "Account [aname=" + aname + ", money=" + money + "]"; } }
package com.bjsxt.pojo; public class Fund { private String fname; private int count; public String getFname() { return fname; } public void setFname(String fname) { this.fname = fname; } public int getCount() { return count; } public void setCount(int count) { this.count = count; } public Fund() { super(); // TODO Auto-generated constructor stub } public Fund(String fname, int count) { super(); this.fname = fname; this.count = count; } @Override public String toString() { return "Fund [fname=" + fname + ", count=" + count + "]"; } }
service层:
package com.bjsxt.service; import com.bjsxt.pojo.Account; import com.bjsxt.pojo.Fund; public interface FundService { //新增银行账户 void addAccount(Account account); //新增基金账户 void addFund(Fund fund); //更新(购买基金) void modify(Account account,Fund fund); }
package com.bjsxt.service.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.bjsxt.dao.IAccountDao; import com.bjsxt.dao.IFundDao; import com.bjsxt.pojo.Account; import com.bjsxt.pojo.Fund; import com.bjsxt.service.FundService; @Service public class FundServiceImpl implements FundService { @Autowired private IAccountDao accountDao; @Autowired private IFundDao fundDao; public IAccountDao getAccountDao() { return accountDao; } public void setAccountDao(IAccountDao accountDao) { this.accountDao = accountDao; } public IFundDao getFundDao() { return fundDao; } public void setFundDao(IFundDao fundDao) { this.fundDao = fundDao; } //新增银行账户 @Override public void addAccount(Account account) { accountDao.insertAccount(account.getAname(), account.getMoney()); } //新增基金账户 @Override public void addFund(Fund fund) { fundDao.insertFund(fund.getFname(), fund.getCount()); } //购买基金(更新) @Override public void modify(Account account, Fund fund) { accountDao.updateAccount(account); fundDao.updateFund(fund); } }
src下的配置文件:
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql:///test jdbc.username=root jdbc.password=victor
<?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:mvc="http://www.springframework.org/schema/mvc" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 加载jdbc属性文件 --> <context:property-placeholder location="classpath:jdbc.properties"/> <!-- c3p0数据源 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass" value="${jdbc.driver}"></property> <property name="jdbcUrl" value="${jdbc.url}"></property> <property name="user" value="${jdbc.username}"></property> <property name="password" value="${jdbc.password}"></property> </bean> <!-- 注册dao --> <bean id="accountDaoImpl" class="com.bjsxt.dao.impl.AccountDaoImpl"> <property name="dataSource" ref="dataSource"/> </bean> <bean id="fundDaoImpl" class="com.bjsxt.dao.impl.FundDaoImpl"> <property name="dataSource" ref="dataSource"/> </bean> <!-- 注册组件扫描器 --> <context:component-scan base-package="com.bjsxt.dao.impl"></context:component-scan> <context:component-scan base-package="com.bjsxt.service.impl"></context:component-scan> </beans>
<?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:mvc="http://www.springframework.org/schema/mvc" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 注册组件扫描器 --> <context:component-scan base-package="com.bjsxt.handlers"></context:component-scan> <!-- 注册注解驱动 --> <mvc:annotation-driven/> <!-- 注册视图解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/jsp/"></property> <property name="suffix" value=".jsp"></property> </bean> <!-- 静态资源无法访问第三种解决方案 --> <mvc:resources location="/images/" mapping="/images/**"></mvc:resources> <mvc:resources location="/js/" mapping="/js/**"></mvc:resources> </beans>
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>springmvc-01-primary</display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <!-- 指定spring配置文件的路径及名称 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring.xml</param-value> </context-param> <!-- 注册 ContextLoaderListener:监听ServletContext,当其初始化时,创建spring容器对象--> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- 注册字符编码过滤器 --> <filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>utf-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>CharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 注册springmvc前端控制器(中央调度器) --> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 指定springmvc配置文件的路径以及名称 --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <form action="${pageContext.request.contextPath}/springmvc/buyFund" method="POST"> 银行账户名称:<input type="text" name="aname"><br/> 金额:<input type="text" name="money"><br/> 基金账户名称:<input type="text" name="fname"><br/> 数量:<input type="text" name="count"><br/> <input type="submit" value="提交"><br/> </form> </body> </html>
个人学习笔记,记录日常学习,便于查阅及加深,仅为方便个人使用。