`
prodream
  • 浏览: 105569 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

freemarker用于生成sql语句实例

    博客分类:
阅读更多

  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);
    }
  }

分享到:
评论

相关推荐

    Freemarker代码生成器实体映射xml的ftl模板文件

    这个`XML.ftl`文件就是核心,它是Freemarker模板的实例,其中定义了如何根据输入数据生成XML实体映射文件的规则。 首先,让我们深入理解Freemarker模板。FTL文件由一系列指令和表达式组成,这些指令和表达式决定了...

    SpringBoot mybatis druid pagehelper freemarker 整合实例

    FreeMarker则是一个模板引擎,用于生成动态Web内容。它与SpringBoot整合后,可以方便地生成HTML页面,将后台数据以模板形式展示给前端。FreeMarker模板语言简洁,易于理解,能够与Java对象进行交互,大大降低了视图...

    maven2项目集成springmvc、spring3、freemarker、ibatis和EasyUI实例

    Freemarker则是一个模板引擎,用于生成动态Web内容。在Spring MVC中,Freemarker通常作为视图解析器,它接收模型数据,并根据预先定义的模板生成HTML页面。这样,开发者可以专注于模板设计,而无需关心数据如何被...

    springmvc+freemarker带sql的登录事例

    对于SQL查询,我们可以在Service层编写,通过SessionFactory获取Session对象,并执行SQL语句。 接下来,创建登录模型类,例如`User`,包含用户名和密码字段。然后,在`dispatcher-servlet.xml`中配置Spring MVC的...

    JFinal+freemarker+maven demo实例

    2. **模型映射**:JFinal的Model类提供了数据库操作的便利,直接映射到数据库表,无需编写SQL语句。 3. **插件化**:JFinal拥有丰富的插件,如Shiro安全框架、MyBatis等,可方便地扩展功能。 4. **高度可定制**:...

    代码自动生成实例

    2. 获取表信息:执行SQL语句,如`DESCRIBE table_name;`,获取表的结构信息。 3. 解析模板:加载FreeMarker模板文件,这个模板定义了实体类的基本结构。 4. 填充模板:用数据库表的元数据填充模板,例如,每个字段...

    maven+SSM+proxool+freemarker+dwr的留言板小实例支持mysql和sqlserver的切换

    - **MyBatis**:MyBatis是一个持久层框架,它简化了SQL操作,将SQL语句与Java代码分离,通过XML或注解配置和映射原生信息,使开发者能够自由地编写SQL。 3. **Proxool**:Proxool是Apache的一个开源数据库连接池,...

    springmvc+mybatis+ehcache+freemarker+sitemesh页面布局(注解)整合实例完美运行

    通过注解或XML配置,MyBatis允许开发者将SQL语句与Java代码紧密集成,提供了一种灵活的数据访问方式。在整合中,MyBatis负责数据库操作,与SpringMVC协同工作,处理数据层的需求。 3. EhCache: EhCache是一个广泛...

    应用实例,可运行maven+springmvc+mybaits+freemarker+velocity

    **MyBatis** 是一个持久层框架,它允许开发者编写SQL语句并与Java对象进行映射,减少了编写大量JDBC代码的繁琐工作。MyBatis通过XML或注解的方式配置SQL映射,使得SQL操作更加灵活,同时支持存储过程和动态SQL。 **...

    Maven2项目集成springmvc,spring3,ibatis和freemarker实例

    iBatis是一个持久层框架,它允许开发者将SQL语句直接写在配置文件中,避免了传统的DAO层代码编写。iBatis与Spring3集成后,可以利用Spring的事务管理,提供更灵活的数据库操作。在本实例中,iBatis作为ORM(对象关系...

    freemarker+ssm+maven整合.rar

    在SSM中,MyBatis作为数据访问层,通过XML或注解方式配置SQL语句,实现了数据库操作的简便化。 4. **Freemarker**:Freemarker是一个基于模板的语言,用于生成动态内容。在Web开发中,它通常与后端框架配合,根据...

    spring+hibernate+freemarker+jQuery 登录注册例子

    Hibernate则是一个对象关系映射(ORM)工具,它允许开发者用Java对象来操作数据库记录,而无需编写SQL语句。在登录注册场景下,Hibernate可以帮助我们创建用户表,持久化用户数据,例如用户名、密码(通常加密存储)...

    ssm-freemarker-demo.zip

    在Web应用中,FreeMarker通常用于生成视图层,与SpringMVC搭配使用,可以将Java对象的数据渲染到页面上。 5. **Maven**:Maven是Java项目的构建工具,它通过配置文件pom.xml管理项目的依赖关系,执行构建过程(如...

    FreeMarker教程

    FreeMarker 是一个强大的模板引擎,主要用于生成文本输出...总的来说,FreeMarker 是一种强大且灵活的模板引擎,适合用于需要动态文本生成的各种应用场景,尤其在 Web 开发中,它能够帮助实现高效、清晰的视图层代码。

    freemarker+struts2+ibatis入门学习摘要

    FreeMarker 是一个模板引擎,用于动态生成 HTML、XML 或其他文本格式的文档。它不直接与数据库或应用程序服务器交互,而是通过Java对象来获取数据,并按照模板来生成输出。FreeMarker 使用简单的语法,允许开发者将...

    springmvc+hibernate+freemarker基于注解

    Hibernate 的注解支持则使得Java对象可以直接映射到数据库表,无需编写繁琐的SQL语句。例如,`@Entity` 表示该类为数据库实体,`@Table` 定义对应的表名,`@Id` 标识主键,`@GeneratedValue` 用于自动生成主键值。...

    spring+hibernate+struts2+freemarker SSH2 新闻发布系统

    在SSH2新闻发布系统中,Hibernate用于管理数据模型,自动处理SQL语句,将对象与数据库表进行映射,实现数据的增删改查操作。它降低了数据库操作的复杂性,提高了开发效率。 4. **Freemarker模板引擎** Freemarker...

    springMVC+ibatis+FreeMarker 连接 mycat 示例

    Ibatis则是一个SQL映射框架,它允许开发者将SQL语句直接写在配置文件中,与Java代码解耦,简化了数据访问层的开发。Ibatis可以很好地与Spring集成,通过Spring的事务管理来实现数据操作的事务控制。 FreeMarker是一...

    springmvc+mybatis+freemarker

    MyBatis 是一个轻量级的持久层框架,它允许开发者将SQL语句直接写在XML配置文件或者Mapper接口中,与Spring整合后,可以实现事务管理和服务层的解耦。MyBatis通过SqlSession对象执行SQL,返回结果集,然后映射成Java...

Global site tag (gtag.js) - Google Analytics