private static Configuration NAMEDSQL_CONFIG = new Configuration();
private static StringTemplateLoader NAMEDSQL_STL = new StringTemplateLoader();
static {
NAMEDSQL_CONFIG.setTemplateLoader(NAMEDSQL_STL);
}
/**
* 获取处理之后的命名SQL。定义命名SQL的文件名:类名.xml,命名SQL以freemarker模板方式定义。
* @param clz
* @param sqlId
* @param beanOrMap
* @return
*/
final public static String takeNamedSql(Class clz,String sqlId,Object beanOrMap) {
String clzName = clz.getCanonicalName();
Template tpl = null;
try {
tpl = NAMEDSQL_CONFIG.getTemplate(sqlId);
} catch (IOException ex) {
//不存在指定id的模板
InputStream is = null;
try {
is = clz.getResourceAsStream(clz.getSimpleName() + ".xml");
Document doc = DocumentHelper.parseText(IOUtils.toString(is));
List<Element> es = doc.selectNodes("sqls/sql");
for(Element e : es)
//以clzName-id 作为名字来保存模板
NAMEDSQL_STL.putTemplate(clzName + "-" + e.attributeValue("id"), e.getTextTrim());
}catch(Exception e) {
throw new IllegalStateException(e);
}finally {
IOUtils.closeQuietly(is);
}
}
if(tpl == null) {
try {
tpl = NAMEDSQL_CONFIG.getTemplate(clzName + "-" + sqlId);
} catch (IOException ex) {
throw new IllegalArgumentException(ex);
}
}
//生成sql
try {
StringWriter sw = new StringWriter();
Map params = asMap(beanOrMap);
tpl.process(params, sw);
return sw.toString();
}catch(Exception e) {
throw new RuntimeException(e);
}
}
分享到:
相关推荐
这个`XML.ftl`文件就是核心,它是Freemarker模板的实例,其中定义了如何根据输入数据生成XML实体映射文件的规则。 首先,让我们深入理解Freemarker模板。FTL文件由一系列指令和表达式组成,这些指令和表达式决定了...
FreeMarker则是一个模板引擎,用于生成动态Web内容。它与SpringBoot整合后,可以方便地生成HTML页面,将后台数据以模板形式展示给前端。FreeMarker模板语言简洁,易于理解,能够与Java对象进行交互,大大降低了视图...
Freemarker则是一个模板引擎,用于生成动态Web内容。在Spring MVC中,Freemarker通常作为视图解析器,它接收模型数据,并根据预先定义的模板生成HTML页面。这样,开发者可以专注于模板设计,而无需关心数据如何被...
对于SQL查询,我们可以在Service层编写,通过SessionFactory获取Session对象,并执行SQL语句。 接下来,创建登录模型类,例如`User`,包含用户名和密码字段。然后,在`dispatcher-servlet.xml`中配置Spring MVC的...
2. **模型映射**:JFinal的Model类提供了数据库操作的便利,直接映射到数据库表,无需编写SQL语句。 3. **插件化**:JFinal拥有丰富的插件,如Shiro安全框架、MyBatis等,可方便地扩展功能。 4. **高度可定制**:...
2. 获取表信息:执行SQL语句,如`DESCRIBE table_name;`,获取表的结构信息。 3. 解析模板:加载FreeMarker模板文件,这个模板定义了实体类的基本结构。 4. 填充模板:用数据库表的元数据填充模板,例如,每个字段...
- **MyBatis**:MyBatis是一个持久层框架,它简化了SQL操作,将SQL语句与Java代码分离,通过XML或注解配置和映射原生信息,使开发者能够自由地编写SQL。 3. **Proxool**:Proxool是Apache的一个开源数据库连接池,...
通过注解或XML配置,MyBatis允许开发者将SQL语句与Java代码紧密集成,提供了一种灵活的数据访问方式。在整合中,MyBatis负责数据库操作,与SpringMVC协同工作,处理数据层的需求。 3. EhCache: EhCache是一个广泛...
**MyBatis** 是一个持久层框架,它允许开发者编写SQL语句并与Java对象进行映射,减少了编写大量JDBC代码的繁琐工作。MyBatis通过XML或注解的方式配置SQL映射,使得SQL操作更加灵活,同时支持存储过程和动态SQL。 **...
iBatis是一个持久层框架,它允许开发者将SQL语句直接写在配置文件中,避免了传统的DAO层代码编写。iBatis与Spring3集成后,可以利用Spring的事务管理,提供更灵活的数据库操作。在本实例中,iBatis作为ORM(对象关系...
在SSM中,MyBatis作为数据访问层,通过XML或注解方式配置SQL语句,实现了数据库操作的简便化。 4. **Freemarker**:Freemarker是一个基于模板的语言,用于生成动态内容。在Web开发中,它通常与后端框架配合,根据...
Hibernate则是一个对象关系映射(ORM)工具,它允许开发者用Java对象来操作数据库记录,而无需编写SQL语句。在登录注册场景下,Hibernate可以帮助我们创建用户表,持久化用户数据,例如用户名、密码(通常加密存储)...
在Web应用中,FreeMarker通常用于生成视图层,与SpringMVC搭配使用,可以将Java对象的数据渲染到页面上。 5. **Maven**:Maven是Java项目的构建工具,它通过配置文件pom.xml管理项目的依赖关系,执行构建过程(如...
FreeMarker 是一个强大的模板引擎,主要用于生成文本输出...总的来说,FreeMarker 是一种强大且灵活的模板引擎,适合用于需要动态文本生成的各种应用场景,尤其在 Web 开发中,它能够帮助实现高效、清晰的视图层代码。
FreeMarker 是一个模板引擎,用于动态生成 HTML、XML 或其他文本格式的文档。它不直接与数据库或应用程序服务器交互,而是通过Java对象来获取数据,并按照模板来生成输出。FreeMarker 使用简单的语法,允许开发者将...
Hibernate 的注解支持则使得Java对象可以直接映射到数据库表,无需编写繁琐的SQL语句。例如,`@Entity` 表示该类为数据库实体,`@Table` 定义对应的表名,`@Id` 标识主键,`@GeneratedValue` 用于自动生成主键值。...
在SSH2新闻发布系统中,Hibernate用于管理数据模型,自动处理SQL语句,将对象与数据库表进行映射,实现数据的增删改查操作。它降低了数据库操作的复杂性,提高了开发效率。 4. **Freemarker模板引擎** Freemarker...
Ibatis则是一个SQL映射框架,它允许开发者将SQL语句直接写在配置文件中,与Java代码解耦,简化了数据访问层的开发。Ibatis可以很好地与Spring集成,通过Spring的事务管理来实现数据操作的事务控制。 FreeMarker是一...
MyBatis 是一个轻量级的持久层框架,它允许开发者将SQL语句直接写在XML配置文件或者Mapper接口中,与Spring整合后,可以实现事务管理和服务层的解耦。MyBatis通过SqlSession对象执行SQL,返回结果集,然后映射成Java...