整合spring4.1.7和dorado5

本文介绍了如何将Spring 4.1.7与Dorado5整合来构建一个基于MySQL数据库的项目。项目中,Dorado5的视图与Java类Main.java关联,使用了Spring的相关jar包,包括核心、Dao层和Web层的库。BaseAction作为所有Dorado视图链接的action父类,通过context.getBean()方法实现Spring的IoC注入。在Main.java中,重写了doLoadData方法以处理页面刷新时的数据加载,同时利用Spring的事务管理进行数据操作。

由于公司项目采用了dorado5开发,所以我自己练习了下整合spring和dorado5构建了一个简单的项目。项目采用mysql数据库。dorado5好像只对ie兼容,所以浏览页面的时候推荐使用ie浏览器。
- 新建一个dorado项目。项目搭建请参考Dorado5深入浅出。在dorado的view目录的clazz属性里面添加上我们对应的java类Main.java。这个也是dorado链接后台的关键。
- 导入spring相关的jar包
jar包详情:核心
spring-core: spring-core-4.1.7.RELEASE.jar
commons-logging-1.2.jar

spring-beans: spring-beans-4.1.7.RELEASE.jar

spring-context: spring-context-4.1.7.RELEASE.jar
spring-aop-4.1.7.RELEASE.jar
aopalliance-1.0.jar
spring-expression-4.1.7.RELEASE.jar

Dao层(数据库)
spring-jdbc: spring-jdbc-4.1.7.RELEASE.jar
spring-tx-4.1.7.RELEASE.jar
(包含了spring-tx)

web层
spring-web: spring-web-4.1.7.RELEASE.jar
spring-webmvc:spring-webmvc-4.1.7.RELEASE.jar

  • 新建BaseAction 继承DefaultViewModel。这个类用于作为所有和dorado的view文件链接的action的父类。
private static WebApplicationContext context;
    protected static ApplicationContext getContext(){
        System.out.println("监控下context============"+context);
        if(context==null){
            //获取dorado的对象,用于得到request
            HttpDoradoContext hc = (HttpDoradoContext)DoradoContext.getContext();
            HttpServletRequest request = hc.getRequest();
            context = WebApplicationContextUtils.
                    getRequiredWebApplicationContext(request.getSession().getServletContext());
        }
        return context;
    } 

这个方法是读取spring相关配置的入口。通过context.getBean()方法,我们能获取到spring ioc注入的dao

  • 编辑Main.java继承BaseAction
    我们重写从父类继承过来的doLoadData方法。当页面刷新的时候会调用这个方法。


        UserDao userDao = (UserDao) this.getContext().getBean("userDao");
        if(dataset.getId().equals("dsUser")){
            Map map = new HashMap(); //作为存入条件的容器,可以是对象
            ParameterSet parameters = dataset.parameters();
            DOUtils.variantSetToDO(parameters, map);
            List<UserT> users = userDao.queryUser(map.get("userName")==null?null:map.get("userName").toString());
            dataset.fromDO(users);
        }


  • 查询表,可以使用spingTemplate

        // TODO Auto-generated method stub
        String sql = "select * from t_user where 1=1";
        if(userName!=null && !"".equals(userName)){
            sql +=" and user_name='"+userName+"'";
        }
        final List<UserT> lists = new ArrayList<UserT>();
        jdbcTemplate.query(sql, new RowCallbackHandler(){

            @Override
            public void processRow(ResultSet rs) throws SQLException {
                // TODO Auto-generated method stub
                UserT user = new UserT();
                user.setUserId(rs.getLong(1));
                user.setUserName(rs.getString(2));
                user.setPassword(rs.getString(3));
                user.setCreateDate(rs.getDate(4));
                lists.add(user);
            }

        });
        return lists;

当然事务是不可缺少的
通过声明式事务解决

 <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
         <property name="dataSource" ref="dataSource" />  
        </bean>  

        <tx:advice id="txAdvice" transaction-manager="txManager">  
            <tx:attributes>  
                <tx:method name="add*" propagation="REQUIRED" />  
                 <tx:method name="insert*" propagation="REQUIRED" />  
                <tx:method name="save*" propagation="REQUIRED" />  
                <tx:method name="del*" propagation="REQUIRED" />  
                <tx:method name="update*" propagation="REQUIRED" />  
                <tx:method name="get*" propagation="NOT_SUPPORTED" read-only="true" />  
            </tx:attributes>  
        </tx:advice>    
        <aop:config proxy-target-class="true">
            <aop:pointcut id="servicePointcut" expression="execution(* com.zwq.dao.impl.*.*(..))" />

            <aop:advisor pointcut-ref="servicePointcut" advice-ref="txAdvice" order="1" />
        </aop:config>

详细代码点我下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值