• Spring+Mybatis+Freemarker框架搭建


     

    基于注解的mybatis整合spring项目

     

    采用了spring-boot,mybatis,freemarker等框架

     

    spring-boot:spirng的快速开发框架,继承了常用的spring库,且有内置tomcat方便调试。

    mybatis:方便快捷的ORM框架,可以省去编写dao层代码的麻烦。相比hibernate更为轻量级和易于学习。

    freemarker:页面模板框架,对于动态渲染页面有很大帮助,尤其对于填写数据等可以降低很多工作量。

     

    gradle依赖配置如下:

     

     

     

    compile(
    
     
    
                'org.springframework.boot:spring-boot-starter-web:1.3.2.RELEASE',
    
                "org.springframework.boot:spring-boot-starter-web:1.3.2.RELEASE",
    
                "org.springframework.boot:spring-boot-starter-aop:1.3.2.RELEASE",
    
                "org.springframework.boot:spring-boot-starter-test:1.3.2.RELEASE",
    
                "org.springframework.boot:spring-boot-starter-jdbc:1.3.2.RELEASE",
    
                'org.springframework:spring-context-support:4.2.5.RELEASE',
    
     
    
                'com.alibaba:druid:1.0.16',
    
                'mysql:mysql-connector-java:5.1.36',
    
                'org.mybatis:mybatis:3.3.1',
    
                'org.mybatis:mybatis-spring:1.2.4',
    
     
    
                'org.freemarker:freemarker:2.3.23'
    
     
    
     
    
        )
    
    }
    

      

     

     

     

    在spring配置中,注解扫描、数据源配置等略过,关于mybatis的数据源配置如下:

     

        

    <!-- 配置sqlSessionFactory -->
    
        <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    
            <!-- 实例化sqlSessionFactory时需要使用上述配置好的数据源以及SQL映射文件 -->
    
            <property name="dataSource" ref="dataSource" />
    
            <!--使用注解配置sql,可以不用xml文件配置-->
    
            <!--<property name="mapperLocations" value="classpath:/mybatis/*.xml" />-->
    
        </bean>
    
        <!-- 配置扫描器 -->
    
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    
            <!-- 扫描这个包以及它的子包下的所有映射接口类 -->
    
            <property name="basePackage" value="com.xinou.thinkcol.dao" />
    
            <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
    
        </bean>
    

      

     

    配置了扫描器之后,就可以自动扫描dao接口,不必再另行声明。

    dao接口代码如下:

    public interface NewsDao {
    
     
    
        @Insert("insert into news( id,title,time,content) VALUES (#{id},#{title},#{time},#{content})")
    
        void insert(NewsBean ab);
    
     
    
        @Select("select a.* from news a order by time limit #{0},#{1}")
    
        List<NewsBean> pageQuery(int skip, int size);
    
     
    
        @Select("select * from news where id=#{0}")
    
        NewsBean find(String id);
    
     
    
        @Delete("delete from news where id=#{0}")
    
        void delete(String id);
    
     
    
    }
    

      

     

     

     

     

    注解中声明sql语句,就可以省去编写配置文件的繁琐工作,也更便于管理和阅读。

     

     

    关于freemarker,需要声明viewResolver

    <bean id="viewResolver"
    
          class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
    
        <property name="suffix" value=".html"/>
    
        <property name="contentType" value="text/html;charset=UTF-8"/>
    
    </bean>
    
     
    
    <bean id="freemarkerConfig"
    
          class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
    
        <property name="templateLoaderPath" value="/resource/" />
    
        <property name="freemarkerSettings">
    
            <props>
    
                <prop key="template_update_delay">0</prop>
    
                <prop key="default_encoding">UTF-8</prop>
    
                <prop key="number_format">0.##########</prop>
    
                <prop key="datetime_format">yyyy-MM-dd HH:mm:ss</prop>
    
                <prop key="classic_compatible">true</prop>
    
                <prop key="template_exception_handler">ignore</prop>
    
            </props>
    
        </property>
    
    </bean>
    

      

     

     

    可以看到将资源文件均放在了/resource/目录中。后缀仍旧使用.html,若是有部分html不需要经过模板,也可以将后缀名改成.fmt之类

     

    然后就可以在html文件中使用freemarker模板。

     

    关于向模板中添加数据:

    @RequestMapping(value = "listActivity")
    
    public String sqhd(@RequestParam(required = false,defaultValue = "0") int page,ModelMap modelMap){
    
        List<ActivityBean> list = activityService.activityPageQuery(page);
    
        modelMap.addAttribute("activitys",list);
    
        return "sqhd";
    
    }
    

      

     

     

     

    在modelmap中添加数据即可,在页面中使用${activitys.***}即可访问。对于数组需要按照数组访问

  • 相关阅读:
    list页面-按照choice筛选丶传condition过滤筛选项丶筛选与显示同步
    组件添加模糊搜索功能
    B
    51nod 1137矩阵乘法【矩阵】
    NYOJ 2356: 哈希计划【模拟】
    【数学基础】【最小公倍数和最大公约数】
    51 nod 1012 最小公倍数LCM【数论】
    poj 1753【枚举+dfs(位向量法)】
    【算法竞赛入门经典】7.3子集生成【增量构造法】【位向量法】【二进制法】
    1057 N的阶乘 【数论】
  • 原文地址:https://www.cnblogs.com/Ayanami-Blob/p/5282417.html
Copyright © 2020-2023  润新知