成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

Beetl 快速入門(mén)

wushuiyong / 2257人閱讀

摘要:簡(jiǎn)單快速了解是前端視圖填充數(shù)據(jù)的工具,是個(gè)頁(yè)面模板,可以像表達(dá)式那樣操作數(shù)據(jù),那樣公共代碼引用,很多好用的方法。目錄結(jié)構(gòu)快速接入深入了解待續(xù)。。。

簡(jiǎn)單快速了解

Beetl 是前端視圖填充數(shù)據(jù)的工具,是個(gè)頁(yè)面模板,可以像 el 表達(dá)式那樣操作數(shù)據(jù),jsp 那樣公共代碼引用,很多好用的方法。官方模板對(duì)比:

清楚一點(diǎn),beetl 很好用,但是用 beetl,最好就不要再用 jsp 什么的模板了。
BeetlSQL 操作數(shù)據(jù)庫(kù)的框架,類(lèi)似 Hibernate 那樣直接通過(guò)對(duì)象操作數(shù)據(jù)的增刪改查,簡(jiǎn)單操作,而且,像 Mybatis 那樣側(cè)重 sql,你可以在 md 文件(就是 mapper.xml)修改優(yōu)化 sql 語(yǔ)句,而且 sql 語(yǔ)句的拼接判斷語(yǔ)法,可以用 beetl 中的方法表達(dá)式,類(lèi)似 js 使用很方便。官方性能對(duì)比:

官方地址:Beetl官網(wǎng)

快速入門(mén)開(kāi)發(fā)

環(huán)境:

sts (spring官網(wǎng)的eclipse)

jdk8

maven 3.5.4

Spring5 快速接入 Beetl 接入

1.新建 maven 項(xiàng)目,pom.xml 文件:

    
        1.8
        1.8
        1.8
        UTF-8
        5.0.8.RELEASE
        1.2.17
        1.6.11
    

    

        
        
            javax.servlet
            javax.servlet-api
            3.1.0
            provided
        

        
        
            org.springframework
            spring-context
            ${spring.version}
        

        
            org.springframework
            spring-test
            ${spring.version}
        

        
            org.springframework
            spring-core
            ${spring.version}
        

        
            org.springframework
            spring-beans
            ${spring.version}
        

        
            org.springframework
            spring-web
            ${spring.version}
        

        
            org.springframework
            spring-webmvc
            ${spring.version}
        

        
            org.springframework
            spring-expression
            ${spring.version}
        

        
            org.springframework
            spring-context-support
            ${spring.version}
        

        
            org.springframework
            spring-jdbc
            ${spring.version}
        
        

        
        
            log4j
            log4j
            ${log4j.version}
        
        

        
        
            com.ibeetl
            beetl
            2.8.5
        


    

    
        ROOT
        
            
                org.apache.tomcat.maven
                tomcat7-maven-plugin
                2.1
                
                    UTF-8
                    8080
                    /
                
            
        
    

2.java 代替 web.xml的啟動(dòng)類(lèi) 配置:

public class ApplicationInit implements WebApplicationInitializer {
 
    @Override
    public void onStartup(ServletContext servletContext) {
 
        AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
        context.register(AppConfig.class);
        context.setServletContext(servletContext);
 
        ServletRegistration.Dynamic servlet = servletContext.addServlet("dispatcher", new DispatcherServlet(context));
 
        servlet.setLoadOnStartup(1);
        servlet.addMapping("/");
        servlet.setAsyncSupported(true);
    }
}

3.springmvc配置文件用 java 配置:

@Configuration
@EnableWebMvc
@ComponentScan(value = "com.*")
@PropertySource(value = "classpath:config.properties")
public class AppConfig implements WebMvcConfigurer{
    
    private static final Logger logger = LoggerFactory.getLogger(AppConfig.class);
    
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/statics/**")
        .addResourceLocations("/statics")
        .setCachePeriod(31556926);
    }

    /***
     * beetl配置
     */
    @Bean(name = "beetlConfig", initMethod = "init")
    public BeetlGroupUtilConfiguration getBeetlGroupUtilConfiguration() {
        logger.info("##### GENERATE BeetlGroupUtilConfiguration BEAN #####");

        BeetlGroupUtilConfiguration beetlGroupUtilConfiguration = new BeetlGroupUtilConfiguration();
        beetlGroupUtilConfiguration.setRoot("/WEB-INF/view");

        return beetlGroupUtilConfiguration;
    }

    /**
     * beetl視圖解析器
     * 
     * @return
     */
    @Bean(name = "viewResolver")
    public BeetlSpringViewResolver getBeetlSpringViewResolver(BeetlGroupUtilConfiguration beetlConfig) {

        logger.info("##### GENERATE BeetlSpringViewResolver BEAN #####");

        BeetlSpringViewResolver beetlSpringViewResolver = new BeetlSpringViewResolver();
        beetlSpringViewResolver.setConfig(beetlConfig);
        ;
        beetlSpringViewResolver.setContentType("text/html;charset=UTF-8");
        beetlSpringViewResolver.setSuffix(".html");

        return beetlSpringViewResolver;
    }
    
}

4.測(cè)試,寫(xiě)一個(gè) Controller,向 request 放入屬性,解析視圖:
controller

    @GetMapping("/")
    public String test(HttpServletRequest req) {
        req.setAttribute("test", "SUCCESS");
        return "index";//返回 /WEB-INF/view 下的 index.html
    }

index.html





首頁(yè)


Hello

${test}

請(qǐng)求頁(yè)面顯示:

這樣,spring5 已經(jīng)整合了 beetl,好像沒(méi)啥特別的好,沒(méi)有對(duì)比就沒(méi)有傷害,來(lái)個(gè)代碼顯示 beetl 的好用:

@for(user in users){
    ${user.name}${user.age}
@}elsefor{
    沒(méi)有數(shù)據(jù)
@}


    
        ${user.name}${user.age}
    

額不知道寫(xiě)對(duì)了沒(méi),恩還是看個(gè)人喜好吧,@是 beet 語(yǔ)法的開(kāi)始定界符,結(jié)束定界符是回車(chē),默認(rèn)不是這個(gè),可以在 classpath 下的 beetl.properties 中修改:

DELIMITER_STATEMENT_START=@
DELIMITER_STATEMENT_END=
BeetlSQL 接入

1.在 pom 中添加 beetlsql 和數(shù)據(jù)源的依賴(lài):

    
        1.8
        1.8
        1.8
        UTF-8
        5.0.8.RELEASE
        1.2.17
        1.6.11
    

    

        
        
            javax.servlet
            javax.servlet-api
            3.1.0
            provided
        

        
        
            org.springframework
            spring-context
            ${spring.version}
        

        
            org.springframework
            spring-test
            ${spring.version}
        

        
            org.springframework
            spring-core
            ${spring.version}
        

        
            org.springframework
            spring-beans
            ${spring.version}
        

        
            org.springframework
            spring-web
            ${spring.version}
        

        
            org.springframework
            spring-webmvc
            ${spring.version}
        

        
            org.springframework
            spring-expression
            ${spring.version}
        

        
            org.springframework
            spring-context-support
            ${spring.version}
        

        
            org.springframework
            spring-jdbc
            ${spring.version}
        
        

        
        
            org.aspectj
            aspectjrt
            ${aspectj.version}
        

        
            org.aspectj
            aspectjweaver
            ${aspectj.version}
        

        
        
        
            mysql
            mysql-connector-java
            5.0.5
        

        
            com.alibaba
            druid
            1.0.15
        
        

        
        
            log4j
            log4j
            ${log4j.version}
        
        

        
            com.ibeetl
            beetl
            2.8.5
        


        
            com.ibeetl
            beetlsql
            2.10.30
        

    

    
        ROOT
        
            
                org.apache.tomcat.maven
                tomcat7-maven-plugin
                2.1
                
                    UTF-8
                    8080
                    /
                
            
        
    
注意:beetlsql 的版本是 2.10.30,如果用之前的版本,太早的不能逆向生成 dao,有些會(huì)有不兼容的情況,如 beetlsql-2.10.29+druid-1.1.10 會(huì)產(chǎn)生SQLFeatureNotSupportedException 異常等。連接

現(xiàn)在可以測(cè)試逆向生成 pojo 和 mapper 了:
新建一個(gè)測(cè)試類(lèi):

    public static void main(String[] args) throws Exception {
        ConnectionSource source = ConnectionSourceHelper.getSimple("com.mysql.jdbc.Driver", "jdbc:mysql://127.0.0.1:3306/catenate?useUnicode=true&characterEncoding=utf8&useSSL=false", "root", "root");
        DBStyle mysql = new MySqlStyle();
        // sql語(yǔ)句放在classpagth的/mapper 目錄下
        SQLLoader loader = new ClasspathLoader("/mapper");
        // 數(shù)據(jù)庫(kù)命名跟java命名一樣,所以采用DefaultNameConversion,還有一個(gè)是UnderlinedNameConversion,下劃線風(fēng)格的,
        UnderlinedNameConversion unc = new  UnderlinedNameConversion();
        // 最后,創(chuàng)建一個(gè)SQLManager,DebugInterceptor 不是必須的,但可以通過(guò)它查看sql執(zhí)行情況

        SQLManager sqlManager = new SQLManager(mysql,loader,source,unc, new Interceptor[]{new DebugInterceptor()});
//        sqlManager.genPojoCodeToConsole("bg_admin"); //快速生成,顯示到控制臺(tái)
        // 或者直接生成java文件
        //pojo代碼生成配置
        GenConfig config = new GenConfig();
        //忽略表前綴bg_admin默認(rèn)為BgAdmin,忽略bg為Admin
        config.setIgnorePrefix("bg");
        //dao代碼生成配置,無(wú)參構(gòu)造會(huì)有默認(rèn)的模板
        MapperCodeGen mapper = new MapperCodeGen();
        String mapperTemplatePath = mapper.getMapperTemplate();
        //有參構(gòu)造出傳入的是dao生成所在的包,但是沒(méi)有模板,生成后是空白
        mapper=new MapperCodeGen("com.catenate.dao");
        //把有參構(gòu)造的模板位置,放入有參構(gòu)造,這樣可以設(shè)置dao的生成位置,又不會(huì)空白
        mapper.setMapperTemplate(mapperTemplatePath);
        //添加Dao代碼生成
        config.codeGens.add(mapper);
        sqlManager.setBaseMapper(BaseMapper.class);
        //生成所有,慎用,會(huì)覆蓋
        sqlManager.genALL("com.catenate.pojo", config, null);
    }

其實(shí)上面代碼可以直接些模板位置,就在beetlsql依賴(lài)包下,可以寫(xiě)成下面這樣:

MapperCodeGen mapper = new MapperCodeGen("com.catenate.dao");
mapper.setMapperTemplate(new GenConfig().getTemplate("/org/beetl/sql/ext/gen/mapper.btl"));

生成文件:

小測(cè)一下:

ConnectionSource source = ConnectionSourceHelper.getSimple("com.mysql.jdbc.Driver", "jdbc:mysql://127.0.0.1:3306/catenate?useUnicode=true&characterEncoding=utf8&useSSL=false", "root", "root");
        DBStyle mysql = new MySqlStyle();
        // sql語(yǔ)句放在classpagth的/sql 目錄下
        SQLLoader loader = new ClasspathLoader("/mapper");
        // 數(shù)據(jù)庫(kù)命名跟java命名一樣,所以采用DefaultNameConversion,還有一個(gè)是UnderlinedNameConversion,下劃線風(fēng)格的,
        UnderlinedNameConversion unc = new  UnderlinedNameConversion();
        // 最后,創(chuàng)建一個(gè)SQLManager,DebugInterceptor 不是必須的,但可以通過(guò)它查看sql執(zhí)行情況

        SQLManager sqlManager = new SQLManager(mysql,loader,source,unc, new Interceptor[]{new DebugInterceptor()});
        //使用內(nèi)置sql查詢(xún)用戶(hù)
        int id = 1;
        Admin admin = sqlManager.unique(Admin.class,id);
        System.out.println("time==>"+admin.getCreateTime());
        AdminDao mapper = sqlManager.getMapper(AdminDao.class);
        Admin single = mapper.single(1);
        System.out.println("password==>"+single.getPassword());

beetlSql的核心就是SQLManager,包含很多方法,可以閱讀官網(wǎng)文檔

2.添加 java 配置文件,添加數(shù)據(jù)源配置,和 beetlsql 的配置:

@Configuration
@PropertySource({"classpath:config.properties"})
public class DataSourceConfig {


    @Value("${datasource.exam.url}")
    private String examUrl;
    @Value("${datasource.exam.username}")
    private String examUserName;
    @Value("${datasource.exam.password}")
    private String examPassword;

    @Value("${datasource.maxActive}")
    private int maxActive;
    @Value("${datasource.initialSize}")
    private int initialSize;
    @Value("${datasource.maxWaitMillis}")
    private long maxWaitMillis;
    @Value("${datasource.minIdle}")
    private int minIdle;
    @Value("${datasource.timeBetweenEvictionRunsMillis}")
    private long timeBetweenEvictionRunsMillis;
    @Value("${datasource.minEvictableIdleTimeMillis}")
    private long minEvictableIdleTimeMillis;
    @Value("${datasource.validationQuery}")
    private String validationQuery;
    @Value("${datasource.testWhileIdle}")
    private boolean testWhileIdle;
    @Value("${datasource.testOnBorrow}")
    private boolean testOnBorrow;
    @Value("${datasource.testOnReturn}")
    private boolean testOnReturn;



    @Bean(value = "examDB")
    @Primary
    public DataSource getExamDataSource(){
        DruidDataSource druidDataSource=new DruidDataSource();
        druidDataSource.setName("examDB");
        druidDataSource.setUrl(examUrl);
        druidDataSource.setUsername(examUserName);
        druidDataSource.setPassword(examPassword);

        //druidDataSource配置
        druidDataSource.setMaxActive(maxActive);
        druidDataSource.setInitialSize(initialSize);
        druidDataSource.setMaxWait(maxWaitMillis);
        druidDataSource.setMinIdle(minIdle);
        druidDataSource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
        druidDataSource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
        druidDataSource.setValidationQuery(validationQuery);
        druidDataSource.setTestWhileIdle(testWhileIdle);
        druidDataSource.setTestOnBorrow(testOnBorrow);
        druidDataSource.setTestOnReturn(testOnReturn);
        return druidDataSource;

    }
}
@Configuration
public class SQLManagerConfig {

    @Bean(name = "examSqlManager")
    @Primary
    public SqlManagerFactoryBean getSqlManagerFactoryBean(@Qualifier("examDB")DataSource master){
        SqlManagerFactoryBean factoryBean=new SqlManagerFactoryBean();
        BeetlSqlDataSource source=new BeetlSqlDataSource();
        source.setMasterSource(master);
        factoryBean.setCs(source);
        factoryBean.setDbStyle(new MySqlStyle());
        //開(kāi)啟駝峰
        factoryBean.setNc(new UnderlinedNameConversion());
        //sql文件路徑
        factoryBean.setSqlLoader(new ClasspathLoader("/mapper"));
        return factoryBean;
    }

    /**
     * 配置包掃描
     * @return
     */
    @Bean(name = "examSqlScannerConfigurer")
    public BeetlSqlScannerConfigurer getBeetlSqlScannerConfigurer() {
        BeetlSqlScannerConfigurer conf = new BeetlSqlScannerConfigurer();
        conf.setBasePackage("com.catenate.dao");
        conf.setDaoSuffix("Dao");
        conf.setSqlManagerFactoryBeanName("examSqlManager");
        return conf;
    }
}

3.web測(cè)試
修改 Controller

    @Autowired
    private SQLManager sqlManager;
    
    @Autowired
    private AdminDao adminDao;
    

    @GetMapping("/")
    public String test(HttpServletRequest req) {
//        AdminDao adminDao=null;
//        try {
//            adminDao = sqlManager.getMapper(AdminDao.class);
//        } catch (Exception e) {
//            // TODO Auto-generated catch block
//            e.printStackTrace();
//        }
        req.setAttribute("test", adminDao.single(1));
        return "index";
    }

可以直接注入Dao,或者注入 SQLManager,當(dāng) Dao 的方法滿(mǎn)足不了的時(shí)候,可以用 SQLManager 來(lái)執(zhí)行,SQLManager包含 Dao的所有方法

修改 index.html





首頁(yè)


Hello

${test.name}

訪問(wèn),頁(yè)面顯示

admin,就是從數(shù)據(jù)庫(kù) bg_admin中查詢(xún)出來(lái)的主鍵為1的數(shù)據(jù)。
目錄結(jié)構(gòu):

Spring Boot 快速接入 深入了解

待續(xù)。。。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/76710.html

相關(guān)文章

  • spring boot 之旅 - 集成模板引擎beetl

    摘要:之旅系統(tǒng)環(huán)境新建項(xiàng)目使用開(kāi)發(fā)工具直接在官網(wǎng)創(chuàng)建參考博客新建驗(yàn)證訪問(wèn)啟動(dòng)右鍵瀏覽器輸入頁(yè)面顯示正常集成視圖引擎參考文檔參考項(xiàng)目文件導(dǎo)入配置測(cè)試訪問(wèn)學(xué)習(xí)文檔源碼下載百度云盤(pán)地址 spring boot 之旅 系統(tǒng)環(huán)境 JDK 8 Spring Boot 1.5.3 beetl 2.7.15 新建項(xiàng)目 adagio 使用開(kāi)發(fā)工具 Spring Tool Suite - new Spri...

    aikin 評(píng)論0 收藏0
  • SpringBoot非官方教程 | 第五篇:SpringBoot整合 beatlsql

    摘要:整合階段由于沒(méi)有對(duì)的快速啟動(dòng)裝配,所以需要我自己導(dǎo)入相關(guān)的,包括數(shù)據(jù)源,包掃描,事物管理器等。另外它的中文文檔比較友好。源碼下載參考資料中文文檔 BeetSql是一個(gè)全功能DAO工具, 同時(shí)具有Hibernate 優(yōu)點(diǎn) & Mybatis優(yōu)點(diǎn)功能,適用于承認(rèn)以SQL為中心,同時(shí)又需求工具能自動(dòng)能生成大量常用的SQL的應(yīng)用。 beatlsql 優(yōu)點(diǎn) 開(kāi)發(fā)效率 無(wú)需注解,自動(dòng)使用大...

    microelec 評(píng)論0 收藏0
  • Spring boot + beetl + i18n國(guó)際化處理

    摘要:搭配慢慢開(kāi)始火起來(lái)的模板配置國(guó)際化首先需要添加配置設(shè)置攔截器國(guó)際化切換攔截器國(guó)際化切換攔截器國(guó)際化處理器國(guó)際化處理器設(shè)置默認(rèn)區(qū)域然后自定義配置注冊(cè)全局共享變量注冊(cè)國(guó)家化函數(shù)然后配置國(guó)際化函數(shù)最后配置資源文件這個(gè)資源文件路徑也是配出來(lái)的,不多 Spring boot 搭配慢慢開(kāi)始火起來(lái)的 beetl 模板 配置國(guó)際化 首先需要添加WebMvcConfigurer配置 /** ...

    zebrayoung 評(píng)論0 收藏0
  • 使用 jfinal + beetl + bootstrap 實(shí)現(xiàn)商城展示及管理系統(tǒng)

    摘要:使用在線商品展示系統(tǒng)使用使用導(dǎo)入項(xiàng)目安裝依賴(lài)庫(kù)啟動(dòng)項(xiàng)目打開(kāi)開(kāi)始使用吧配置如何開(kāi)發(fā)項(xiàng)目可能會(huì)用到僅供參考持續(xù)開(kāi)發(fā)端所有頁(yè)面端所有頁(yè)面微信分享后臺(tái)商品管理系統(tǒng)后臺(tái)管理使用模板簡(jiǎn)單效果如下歡迎提問(wèn) 使用 jfinal+beetl 在線商品展示系統(tǒng) showImg(https://segmentfault.com/img/remote/1460000009341465);showImg(htt...

    liuyix 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<