文档章节

mybatis springmvc velocity环境搭建

buglife
 buglife
发布于 2015/01/02 19:58
字数 994
阅读 4504
收藏 57

前言

轻量级ORM框架MyBatis完美的配合SpringMVC web框架实现了后台action的开发,结合Java模版引擎velocity实现了Java代码与前端代码的隔离。

搭建过程

后台配置mybatis

添加依赖

Spring 3.2.4-RELEASE

<dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${version.spring}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>${version.spring}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
            <version>${version.spring}</version>
        </dependency>

mybatis

        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.2.1</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.2.3</version>
        </dependency>

连接池dbcp

       <dependency>
            <groupId>commons-dbcp</groupId>
            <artifactId>commons-dbcp</artifactId>
            <version>1.4</version>
        </dependency>


配置

mybatis-config.xml,此处只是示例

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>
    <typeAliases>
        <!--系统中持久层对象-->
        <typeAlias type="com.buglife.webutil.model.Test" alias="Test"/>
    </typeAliases>
    <mappers>
        <!--系统中持久层对象对应的Mapper映射XML文件-->
        <mapper resource="com/buglife/webutil/mapper/TestMapper.xml" />
    </mappers>
</configuration>

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
    <!--加载JDBC配置文件-->
    <context:property-placeholder location="classpath:jdbc.properties"/>
    <tx:annotation-driven/>
    <context:component-scan base-package="com.buglife.webutil.web.service.impl"></context:component-scan>

    <!--配置数据源(连接池)-->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="${jdbc.driver}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>
    <bean id="sessionFactory"
          class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="configLocation" value="classpath:config/mybatis-config.xml"/>
        <property name="typeAliasesPackage" value="com.buglife.webutil.model"/>
    </bean>

    <!--配置事务-->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>
    
    <!--通过扫描Mapper所在包名自动注入Mapper-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.buglife.webutil.dao"/>
    </bean>
</beans>

自动生成Model和Mapper

创建generatorConfig.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >
<generatorConfiguration>
<!--加载数据库连接驱动包-->
    <classPathEntry
            location="C:\Users\Administrator\.m2\repository\mysql\mysql-connector-java\5.1.6\mysql-connector-java-5.1.6.jar" />
    <context id="context1" targetRuntime="MyBatis3">
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/webutil?useUnicode=true&amp;characterEncoding=UTF-8"
                        userId="root" password="root" />
                        
       <!--Model存放位置-->
        <javaModelGenerator targetPackage="com.buglife.webutil.model"
                            targetProject="src/main/java" />
       <!--Mapper xml文件存放位置-->
        <sqlMapGenerator targetPackage="com.buglife.webutil.mapper"
                         targetProject="src/main/resources" />
        <!--Mapper 接口存放位置-->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.buglife.webutil.dao" targetProject="src/main/java" />
        
        <!--配置需要用到的数据表-->
        <table schema="webutil" tableName="test" />
    </context>
</generatorConfiguration>

添加mybatis-generate插件

<plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.2</version>
                <configuration>
                    <verbose>true</verbose>
                    <overwrite>true</overwrite>
                    <!--generatorConfig.xml存放位置-->
                    <configurationFile>src\main\resources\config\generatorConfig.xml</configurationFile>
                </configuration>
                <executions>
                    <!--自动生成Mapper和model的生命周期段-->
                    <execution>
                        <id>mapper-generate</id>
                        <phase>generate-resources</phase>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

这时执行maven的命令mvn install则可以生成mybatis所需的model和Mapper


前端搭建velocity

添加依赖

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${version.spring}</version>
        </dependency>
        <!--支持velocity的依赖-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>${version.spring}</version>
        </dependency>
        
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity</artifactId>
            <version>1.7</version>
        </dependency>
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-tools</artifactId>
            <version>2.0</version>
        </dependency>

在SpringMVC中配置velocity

<!-- 配置velocity引擎 -->
    <bean id="velocityConfigurer"
          class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
        <!-- 模板存放的路径 -->
        <property name="resourceLoaderPath" value="/WEB-INF/views/"/>
        <!-- Velocity配置文件 -->
        <property name="configLocation" value="classpath:velocity.properties"/>
    </bean>

    <!-- 配置视图的显示 -->
    <bean id="ViewResolver" class="org.springframework.web.servlet.view.velocity.VelocityLayoutViewResolver">
        <property name="prefix" value="/"/>
        <!-- 视图文件的前缀,即存放的路径 -->
        <property name="suffix" value=".vm"/>
        <!-- 视图文件的后缀名 -->
        
        <!--<property name="toolboxConfigLocation" value="/WEB-INF/tools.xml"/>-->
        <!--toolbox配置文件路径-->
        <property name="dateToolAttribute" value="date"/>
        <!--日期函数名称-->
        <property name="numberToolAttribute" value="number"/>
        <!--数字函数名称-->
        <property name="contentType" value="text/html;charset=UTF-8"/>
        <property name="exposeSpringMacroHelpers" value="true"/>
        <!--是否使用spring对宏定义的支持-->
        <property name="exposeRequestAttributes" value="true"/>
        <!--是否开放request属性-->
        <property name="requestContextAttribute" value="rc"/>
        <!--request属性引用名称-->
        
        <!--指定默认layout文件-->
        <property name="layoutUrl" value="layout/default.vm"/>
    </bean>

velocity配置文件velocity.properties,主要配置输入输出编码格式

#指定宏定义位置
velocimacro.library = /WEB-INF/macros/macros.vm
input.encoding=UTF-8
output.encoding=UTF-8

最后看下web.xml中的配置情况

    <servlet>
        <servlet-name>velocity</servlet-name>
        <servlet-class>org.apache.velocity.tools.view.VelocityLayoutServlet</servlet-class>
        <init-param>
            <param-name>org.apache.velocity.tools.deprecationSupportMode</param-name>
            <param-value>false</param-value>
        </init-param>
        <init-param>
            <param-name>org.apache.velocity.tools.cleanConfiguration</param-name>
            <param-value>true</param-value>
        </init-param>
        <init-param>
            <param-name>org.apache.velocity.tools.userCanOverwriteTools</param-name>
            <param-value>false</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>velocity</servlet-name>
        <url-pattern>*.vm</url-pattern>
    </servlet-mapping>


示例

可访问源码







© 著作权归作者所有

共有 人打赏支持
buglife

buglife

粉丝 82
博文 126
码字总数 44248
作品 4
浦东
架构师
私信 提问
加载中

评论(8)

引用来自“心系某女仔”的评论

讲的太简陋了啊,还有续集么?? velocity没接触过,有什么好处??
楼主总结的很好,给大家推荐一个:http://blog.sina.com.cn/s/blog_150df94af0102vngn.html

引用来自“心系某女仔”的评论

讲的太简陋了啊,还有续集么?? velocity没接触过,有什么好处??
楼主总结的很好,给大家推荐一个:http://blog.sina.com.cn/s/blog_150df94af0102vngn.html
buglife
buglife

引用来自“天下灯火”的评论

讲讲你觉得velocity好在哪?相比传统jsp有什么优势

引用来自“CrazyHarry”的评论

解释jsp需要经过转换成java代码,再编译成class文件等步骤;velocity则在速度上更快,不需要经过像解释jsp页面那么多的步骤,其次velocity也可以用作其它实现的模板技术

引用来自“天下灯火”的评论

你说这个也不对,jsp也只有第一次才需要编译成class,以后就不用了。velocity则每次都需要进行解释。只比jsp少一次编译。这个谈不上优势。再说一个
号称模版引擎,自然最大的优势在于模版的应用
一个大土豆
一个大土豆

引用来自“天下灯火”的评论

讲讲你觉得velocity好在哪?相比传统jsp有什么优势

引用来自“CrazyHarry”的评论

解释jsp需要经过转换成java代码,再编译成class文件等步骤;velocity则在速度上更快,不需要经过像解释jsp页面那么多的步骤,其次velocity也可以用作其它实现的模板技术
你说这个也不对,jsp也只有第一次才需要编译成class,以后就不用了。velocity则每次都需要进行解释。只比jsp少一次编译。这个谈不上优势。再说一个
buglife
buglife

引用来自“天下灯火”的评论

讲讲你觉得velocity好在哪?相比传统jsp有什么优势
解释jsp需要经过转换成java代码,再编译成class文件等步骤;velocity则在速度上更快,不需要经过像解释jsp页面那么多的步骤,其次velocity也可以用作其它实现的模板技术
一个大土豆
一个大土豆
讲讲你觉得velocity好在哪?相比传统jsp有什么优势
buglife
buglife

引用来自“心系某女仔”的评论

讲的太简陋了啊,还有续集么?? velocity没接触过,有什么好处??
java模版引擎,续集在近期会更新,感谢关注
MartinBockZhu
MartinBockZhu
讲的太简陋了啊,还有续集么?? velocity没接触过,有什么好处??
durcframework/easymybatis

简单介绍 easymybatis是一个mybatis增强类库,目的为简化mybatis的开发,让开发更高效。 最新版本:1.4.3 easymybatis的特性如下: 无需编写xml文件即可完成CRUD操作。 支持多表查询、聚合查...

durcframework
2017/09/05
0
0
SpringMVC + MyBatis整合

环境:spring3.1.1+mybatis3.2.8+mybatis-spring1.2.3 网络上关于这个架构的搭建文章,实在是太多了,本文是对于本人初次搭建时的一些注意点的整理。 主要是一些配置文件的内容和架构的目录。...

wangbiglei
2015/08/08
0
4
springMVC+mybatis+mysql学习心得

MyBatis 是一个可以自定义SQL、存储过程和高级映射的持久层框架。 MyBatis 摒除了大部分的JDBC代码、手工设置参数和结果集重获。 MyBatis 只使用简单的XML 和注解来配置和映射基本数据类型、...

magelee
2015/07/14
0
1
解决java.lang.IllegalArgumentException: No converter found for return value of type: class java.util.ArrayList的问题

一、背景   最近闲来无事,想自己搭建一套Spring+SpringMVC+Mybatis+Mysql的环境(搭建步骤会在以后博客中给出),结果运行程序时,适用@ResponseBody注解进行返回List的json数据时出现了:...

hafiz.zhang
2016/08/27
0
0
Spring MVC整合Velocity

Velocity模板(VM)语言介绍 Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。 当Velocity应用于...

张辉原
2017/06/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring应用学习——AOP

1. AOP 1. AOP:即面向切面编程,采用横向抽取机制,取代了传统的继承体系的重复代码问题,如下图所示,性能监控、日志记录等代码围绕业务逻辑代码,而这部分代码是一个高度重复的代码,也就...

江左煤郎
今天
3
0
eclipse的版本

Eclipse各版本代号一览表 Eclipse的设计思想是:一切皆插件。Eclipse核心很小,其它所有功能都以插件的形式附加于Eclipse核心之上。 Eclipse基本内核包括:图形API(SWT/Jface),Java开发环...

mdoo
今天
1
0
SpringBoot源码:启动过程分析(一)

本文主要分析 SpringBoot 的启动过程。 SpringBoot的版本为:2.1.0 release,最新版本。 一.时序图 还是老套路,先把分析过程的时序图摆出来:时序图-SpringBoot2.10启动分析 二.源码分析 首...

Jacktanger
今天
3
0
小白带你认识netty(二)之netty服务端启动(上)

上一章 中的标准netty启动代码中,ServerBootstrap到底是如何启动的呢?这一章我们来瞅下。 server.group(bossGroup, workGroup);server.channel(NioServerSocketChannel.class).optio...

天空小小
今天
3
0
聊聊storm trident batch的分流与聚合

序 本文主要研究一下storm trident batch的分流与聚合 实例 TridentTopology topology = new TridentTopology(); topology.newStream("spout1", spout) .p......

go4it
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部