动态表单及动态建表实现原理Java认证考试

文章作者 100test 发表时间 2010:01:01 15:48:22
来源 100Test.Com百考试题网


  1应用场景

  项目中往往需要动态的创建一个表单,或者添加一个新的数据模板,这时候因为需要在运行时动态的创建表以及动态的维护表字段甚至表关系 使得普通java解决方案变得困难重重。

  2实现工具

  Hibernate Spring Groovy Freemarker

  Hibernate 作用很简单负责创建数据库表这样可以避免我们自己去写复杂的sql和判断。

  Spring 作为桥梁起到连接纽带的作用。

  Groovy做为动态语言,在项目运行时根据模板创建访问数据库,或者控制层代码。

  Freamker 可以根据提前定义好的模板生成 hibernate配置文件,以及Groovy代码。

  3实现原理

  首先创建Form 和 FromAttribute 两张表关系一对多。Form表记录表单的名称,类别,甚至是作为在动态生成表单时的css样式信息。FromAttribute记录表单字段信息,如名称,类别等。有了表单以及表单项的信息后就可以创建数据库表了。

  测试代码:

  public void testGenerator(){

  Form form = formService.getAll()。get(0);

  List list = formAttributeService

  。 getAttributeListByFormId(form.getId());form.setFormAttributeList(list);DbGenerator dg = new DbGenerator(form, dataSource);dg.generator();

  }

  DbGenerator

  import java.io.IOException;import java.io.StringWriter;import java.io.Writer;import java.sql.SQLException;import java.util.HashMap;import java.util.Map;import java.util.Properties;

  import javax.sql.DataSource;

  import org.hibernate.tool.hbm2ddl.SchemaExport;import org.slf4j.Logger;import org.slf4j.LoggerFactory;

  import freemarker.template.Configuration;import freemarker.template.Template;import freemarker.template.TemplateException;

  public class DbGenerator {

  private DataSource dataSource;

  protected Map root = new HashMap();

  private static Logger log = LoggerFactory.getLogger(FormGenerator.class);

  protected String path;

  protected String packageName;

  private Form form;

  protected Configuration getConfig(String resource){

  Configuration cfg = new Configuration();

  cfg.setDefaultEncoding("UTF-8");cfg.setClassForTemplateLoading(this.getClass(), resource);

  return cfg;

  }

  public DbGenerator(Form form ,DataSource dataSource) { this.form = form;this.dataSource = dataSource;

  }

  public void generator(){

  if(null == form.getFormAttributeList() || form.getFormAttributeList()。size() == 0){

  return;

  }


相关文章


struts2中使用token避免重复提交Java认证考试
用JAVA做的一个石头,剪刀,布的游戏Java认证考试
2009年的Java技术趋势Java认证考试
JavaAIO初探(异步网络IO)Java认证考试
动态表单及动态建表实现原理Java认证考试
Java设计模式之Singleton单例模式Java认证考试
Mechanize使用cookies模拟登录Java认证考试
正则表达式在java程序中的应用分析Java认证考试
Java的泛型原来这样让人不舒服Java认证考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛