【SSH框架/国际物流商综平台】-02 框架搭建 s2sh 概览模型-数据建模 深入分析系统框架 部门管理 BaseDao SqlDao applicationContext-**.xml

1.回顾

学习心态

项目需求(界面原型法获取需求,UML用例图描述需求)
系统功能模块结构图(分工,报价)
系统架构(s2sh,ssh2)+Mysql+Maven
maven,本次项目主要是导jar

框架搭建(Hibernate+Spring, Spring+struts2)

1.导入jar包
2.PO 类及映射文件
3.hibernate配置文件
4.applicationContext.xml文件
5.struts.xml配置文件
6.web.xml配置文件

数据库设计与建模

使用PD实现数据库建模

概念模型

在这里插入图片描述

数据建模 Physical Data Model

用户-角色-模块

在这里插入图片描述

购销合同-货物-附件

在这里插入图片描述

报运单-商品明细-商品附件

在这里插入图片描述

报运单-home装箱单/装箱单

在这里插入图片描述

装箱单-委托单-发票-财务报运单

在这里插入图片描述

厂家-产品-系统代码(数据字典)

在这里插入图片描述

其他-意见反馈-action访问日记-投票记录

在这里插入图片描述

深入分析系统框架

为什么访问index.jsp就可以显示主页

index.jsp->login.action->success->/WEB-INF/pages/home/fmain.jsp->frameset(top_frame,leftFrame,main)

主页面加载的分析过程

top_frame->homeAction_title->title->/WEB-INF/pages/home/title.jsp

leftFrame->homeAction_toleft.action?moduleName=home->toleft->/WEB-INF/pages/${moduleName}/left.jsp

main->homeAction_tomain.action?moduleName=home->tomain->/WEB-INF/pages/${moduleName}/main.jsp

为什么顶部菜单点击后,左侧和中间区域页面发生改变?

在这里插入图片描述

为什么点击左侧菜单显示结果在中间区域?

在这里插入图片描述

实现部门管理

思路:Action----------Service---------------Dao----------------Domain(PO类映射文件)
调用过程与编码过程正好相反

BaseDao分析

BaseDao是本次项目中的一个通用DAO,它可以操作任何一张表的CRUD及分页查询。可以作用于任何一张表。
它的实现原理:
1.泛型
2.反射

applicationContext-dao.xml
	<!-- BaseDao -->
	<bean id="baseDao" class="cn.itcast.jk.dao.impl.BaseDaoImpl">
	     <property name="sessionFactory" ref="sessionFactory"></property>
	</bean>
	
	<!-- jdbcTemplate模板的配置 -->
	<bean id="jdbcTemplate"  class="org.springframework.jdbc.core.JdbcTemplate">
	     <property name="dataSource" ref="dataSource"></property>
	</bean>
	
	<!-- sqlDao的配置 -->
	<bean id="sqlDao" class="cn.itcast.jk.dao.common.SqlDao">
	     <property name="jdbcTemplate" ref="jdbcTemplate"></property>
	</bean>
sqlDao.java <—jdbcTemplate
/**
 * @Description:
 * @Author:		传智播客 java学院	传智.宋江
 * @Company:	http://java.itcast.cn
 * @CreateDate:	2014年10月31日
 */
/*
 * 执行sql语句类
 * 调用方法:
 * 引入配置问题 
 * 
 */
public class SqlDao {
	private static Logger log = Logger.getLogger(SqlDao.class);
	private UtilFuns utilFuns = new UtilFuns();
    private JdbcTemplate jdbcTemplate;


	public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
		this.jdbcTemplate = jdbcTemplate;
	}
	
	public List executeSQL(String sql, Object[] objs){
		log.debug(sql);
		List aList = new ArrayList();
		List jlist = null;
		if(utilFuns.arrayValid(objs)){
			jlist = jdbcTemplate.queryForList(sql, objs);
		} else {
			jlist = jdbcTemplate.queryForList(sql);
		}
		Iterator ite = jlist.iterator();
		while(ite.hasNext()){
            Map map = (Map)ite.next();
            for(Object o:map.keySet()){
            	aList.add((String)map.get(o));
            }
        }
        return aList;
	}
BaseDao.java
public interface BaseDao {

	//查询所有,带条件查询
	public <T> List<T> find(String hql, Class<T> entityClass, Object[] params);
	//获取一条记录
	public <T> T get(Class<T> entityClass, Serializable id);
	//分页查询,将数据封装到一个page分页工具类对象
	public <T> Page<T> findPage(String hql, Page<T> page, Class<T> entityClass, Object[] params);
	
	//新增和修改保存
	public <T> void saveOrUpdate(T entity);
	//批量新增和修改保存
	public <T> void saveOrUpdateAll(Collection<T> entitys);
	
	//单条删除,按id
	public <T> void deleteById(Class<T> entityClass, Serializable id);
	//批量删除
	public <T> void delete(Class<T> entityClass, Serializable[] ids);

}
BaseDaoImpl.java
public class BaseDaoImpl implements BaseDao{
	private SessionFactory sessionFactory;
	public void setSessionFactory(SessionFactory sessionFactory) {
		this.sessionFactory = sessionFactory;
	}
	public Session getSession() {
		return sessionFactory.getCurrentSession();
	}

	//带条件查询
	public <T> List<T> find(String hql, Class<T> entityClass, Object[] params) {
		Query query = this.getSession().createQuery(hql);
		if(params!=null){
			for (int i = 0; i < params.length; i++) {
				query.setParameter(i, params[i]);
			}
		}
		return (List<T>) query.list();
	}
	
	//获取一条,根据主键id
	public <T> T get(Class<T> entityClass, Serializable id) {
		return (T) this.getSession().get(entityClass, id);
	}
	
	//新增和修改,hibernate根据id是否为null自动判断
	public <T> void saveOrUpdate(T entity) {
		this.getSession().saveOrUpdate(entity);
	}
	
	//按主键id删除
	public <T> void deleteById(Class<T> entityClass, Serializable id) {
		this.getSession().delete(get(entityClass, id));
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值