Spring+Mybatis+Freemarker框架搭建

 

基於註解的mybatis整合spring項目html

 

採用了spring-boot,mybatis,freemarker等框架java

 

spring-boot:spirng的快速開發框架,繼承了經常使用的spring庫,且有內置tomcat方便調試。mysql

mybatis:方便快捷的ORM框架,能夠省去編寫dao層代碼的麻煩。相比hibernate更爲輕量級和易於學習。web

freemarker:頁面模板框架,對於動態渲染頁面有很大幫助,尤爲對於填寫數據等能夠下降不少工做量。spring

 

gradle依賴配置以下:sql

 

 

 

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接口,沒必要再另行聲明。tomcat

dao接口代碼以下:mybatis

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語句,就能夠省去編寫配置文件的繁瑣工做,也更便於管理和閱讀。app

 

 

關於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.***}便可訪問。對於數組須要按照數組訪問

相關文章
相關標籤/搜索