SSH框架是每个学生毕业前都必须掌握的一门技术,所以这里就用Spring的JDBC模板和自定义异常让事务回滚来做一个练习。主要用到的是spring和struts2框架来操作,这里暂时没用Hibernate来对数据进行操作。
一、练习要求。
要求写一个用户购买股票的项目,用户先开户后登陆,可以在里面买股票和卖股票,当买股票金额超过用户金额时就报异常让事务回滚,用户卖出股票时超过持有数量报异常让事务回滚。
二、数据库表
这里因为没有用到Hibernate所以不能通过配置实体类创建表,所以只能手动创建,表结构如下:
person表;
stock表
三、创建包和配置好所需的配置文件
先导入spring和struts2所需要用到的包,再创建配置文件,然后我们再新建对应的Package。
四、开户和登录
买或卖股票之前每个人都有自己的账户来存自己的金额和信息,这里先设计好jsp页面让用户进行选择是开户还是登录。(这里只是简单的弄了下jsp页面)
点击开户就进到另一个jsp页面来进行操作
到写数据操作语句,这里要先对用户名进行排重下,以免重复账户。先到Dao层写好接口,让DaoImp层实现接口。
DaoImp实现接口时也要继承下JdbcDaoSupport这样才能对数据进行处理。
public class ZhuCeDaoImp extends JdbcDaoSupport implements ZhuCeDao{
@Override
public boolean addUser(Person p) {
System.out.println("进入开户~~~");
//排重,如果为true就直接返回false;
if(this.touser(p.getUserName())){
return false;
}
//如果排除为false,就好进行添加用户,这里我们传实体类就可以获取到对应的参数。
String sql = "insert into person(username,password,money) value (?,?,?)";
//直接this关键字调用继承父类的方法来操作sql语句
int i = this.getJdbcTemplate().update(sql,p.getUserName(),p.getPassWord(),p.getMoney());
if(i!=0){
//判断下,在后台输出看是否成功
System.out.println("开户成功");
return true;
}else{
System.out.println("开户失败");
return false;
}
}
//用户名排重
public boolean touser(String name){
System.out.println("进入排重~~~");
//查找对应的用户名
String sql = "select username from person where username=?";
List s = this.getJdbcTemplate().queryForList(sql, String.class,name);
//存的是List类型,所以list不为空就是该用户名已存在,反之则没有
if(s.size()!=0){
return true;
}
return false;
}
}
再写Service层接口,让ServiceImp层实现,Service层接口的方法就是Dao层接口的方法,所以为了方便集中把所以的Dao层接口方法都写在了一个Service层接口里面,
ServiceImp层也是直接调用Dao层对象来实现全部方法。
Service层