dbfound的三层架构

前言

        dbfound的设计思想是简易平台,所以dbfound尽量简化了系统的架构体系。很多情况下我们看到的dbfound是一个两层架构的系统(view+model)。

        dbfound model我们可以在浏览器中直接调用,加上model里面实现了一些简单的逻辑标签,在很多简单的业务场景下两层结构已经可以满足我们的需求。之前我写过几个系统都是一行Java没有就完成的真个系统的开发。

        但真正用于大型应用开发时,我们发现两层架构还是有些力不从心的,这里给大家介绍一下dbfound的三层架构-dbfound mvc。


dbfound mvc的搭建与配置

 1、首先我们在dbfound-conf.xml文件中配置一下dbfound-mvc.xml文件的路径

<?xml version="1.0" encoding="UTF-8"?>
<dbfound xmlns="http://dbfound.googlecode.com/conf">

	<web>
		<encoding>utf-8</encoding>
		<mvcConfigFile>${@projectRoot}/WEB-INF/dbfound-mvc.xml</mvcConfigFile>
	</web>

</dbfound>


2、将dbfound-mvc.xml放入到WEB-INF下面,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<dbfound-mvc xmlns="http://dbfound.googlecode.com/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://dbfound.googlecode.com/mvc http://dbfound.googlecode.com/svn/tags/v2/mvc.xsd">

	<action name="sys/role" class="com.nfwork.demo.sys.RoleControl" />
	
</dbfound-mvc>


3、我们再mvc中配置一个响应的control类,这里我们需要是编写这个类:

package com.nfwork.demo.sys;

import com.nfwork.dbfound.core.Context;
import com.nfwork.dbfound.dto.ResponseObject;
import com.nfwork.dbfound.model.ModelEngine;
import com.nfwork.dbfound.web.base.BaseControl;

public class RoleControl implements BaseControl {

	public ResponseObject query(Context context) throws Exception {
		return ModelEngine.query(context, "sys/role", null);
	}
	
	public ResponseObject delete(Context context) throws Exception {
		return ModelEngine.batchExecute(context, "sys/role", "delete");
	}

	public ResponseObject execute(Context context) {
		return null;
	}
}


4、编写model文件sys/role

<?xml version="1.0" encoding="UTF-8"?>
<model xmlns="http://dbfound.googlecode.com/model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://dbfound.googlecode.com/model http://dbfound.googlecode.com/svn/tags/v2/model.xsd">
	<query pagerSize="10">
		<sql>
		  <![CDATA[
			SELECT
			    r.role_id,
				r.role_code,
				r.role_description,
				r.last_update_by,
				DATE_FORMAT(r.create_date,'%Y-%m-%d') create_date,
				DATE_FORMAT(r.last_update_date,'%Y-%m-%d') last_update_date,
				(select user_code from sys_user where user_id =r.last_update_by) user_code,
			    (select CONCAT(CONCAT(user_code,'-'),user_name) from sys_user where user_id =r.last_update_by) last_update_user
			FROM sys_role r
			#WHERE_CLAUSE#
			order by r.role_code
		   ]]>
		</sql>
		<filter name="timefrom" express="create_date &gt;= ${@timefrom} " />
		<filter name="timeto" express="create_date &lt;= ${@timeto} " />
		<filter name="role_code" express="role_code like ${@role_code} " />
		<filter name="user_id" express="last_update_by = ${@user_id} " />
		<filter name="role_description" express="role_description like ${@role_description} " />
	</query>

	<execute name="delete">
		<param name="role_id" dataType="number" />
		<sqls>
			<executeSql>
			  <![CDATA[
				delete from sys_role where role_id= ${@role_id}
			  ]]>
			</executeSql>
		</sqls>
	</execute>

</model>


  5、到这里整个程序就完成了,我们再浏览器输入.do的请求地址 就可以访问对应的java类了。

dbfound的三层架构_第1张图片

sys/role 为mvc中配置的拦截路径。.do为拦截关键字。!后面的为方法名。


你可能感兴趣的:(dbfound的三层架构)