|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
Java的B/s开发是通常是javaweb开发,又叫J2EE开发,J2SE是手机开发。C#的C/s和B/s开发是说.net网页编程和Asp开发。。u在这里说明一点;资深一点的Java和C#程序员都明白一点
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<FormAttribute> 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 ;
}
Template t;
try {
t = getConfig("/template").getTemplate("hibernate.ftl");
Writer out = new StringWriter();
t.process(getMapContext(), out);
String xml = out.toString();
createTable(xml);
log.debug(xml);
} catch (IOException e) {
e.printStackTrace();
} catch (TemplateException e) {
e.printStackTrace();
}
}
@SuppressWarnings("unchecked")
Map getMapContext() {
root.put("entity", form);
return root;
}
public void createTable(String xml) {
org.hibernate.cfg.Configuration conf = new org.hibernate.cfg.Configuration();
conf.configure("/hibernate/hibernate.cfg.xml");
Properties extraProperties = new Properties();
extraProperties.put("hibernate.hbm2ddl.auto", "create");
conf.addProperties(extraProperties);
conf.addXML(xml);
SchemaExport dbExport;
try {
dbExport = new SchemaExport(conf, dataSource.getConnection());
// dbExport.setOutputFile(path);
dbExport.create(false, true);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
class hibernateGenerator {
}
<p>
市场分额,java比asp高一点,因为C#是仿照java开发的,所以哦C#能做的java都能做到,但是java能做的,C#不一定都能做到。毕竟是抄袭吗。 |
|