Eclipse中 搭建 Spring+SpringMVC+Mybatis整合(下)
2016-01-08 09:34
766 查看
通过前面的步骤可以搭建好 Maven 以及下载依赖框架,那么接下来就是编写框架的配置文件了,配置分为以下三个步骤:
配置 SpringMVC
配置 Mybatis
配置 log
以下配置 SpringMVC:
确定包结构,以及每个包的作用
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/19/7e67345a86bbc01de3a9940552da336e.png)
配置 web.xml 启用 SpringMVC
Xml代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/23/99dd0a550a7fe52fc0e8d85ece4c7054.png)
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>SSM</display-name>
<!-- Spring MVC -->
<context-param>
<!-- 指定配置文件位置(非默认) -->
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/spring-mvc.xml</param-value>
</context-param>
<servlet>
<servlet-name>springMvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 通知 Web 容器, 启动时初始化 Spring MVC -->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springMvc</servlet-name>
<!-- 指定拦截以 .do 结尾的配置, 如果配置为 "/" 则需要在配置文件中排除静态资源, 如: .css, .jsp, .png等等 -->
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
配置 spring-mvc.xml
Xml代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/23/99dd0a550a7fe52fc0e8d85ece4c7054.png)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
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/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
<!-- 配置资源文件 -->
<!-- * 指定 classPath 相对路径 * -->
<context:property-placeholder location="classpath:jdbc.properties" />
<!--
* 指定文件(绝对)路径 *
<context:property-placeholder location="file:D:/home/appadmin/config/jdbc.properties" />
-->
<!-- 加载组件配置 -->
<import resource="classpath:spring-dao.xml" />
<!-- 启用spring mvc 注解, conversion-service 用于注册 Handler 的参数类型转换器 -->
<mvc:annotation-driven conversion-service="conversionService" />
<!-- 注册参数转换器 -->
<bean id="conversionService"
class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<property name="converters">
<set>
<!-- 枚举转换器: 支持 ordinal 和 name(区分大小写) -->
<bean class="org.hy.ssm.web.converter.StringToEnumConverterFactory" />
<!-- 日期转换器: 支持的模式列表查看源码, 可支持毫秒值(字符串) -->
<bean class="org.hy.ssm.web.converter.StringToDate" />
</set>
</property>
</bean>
<!-- 启用spring mvc 注解扫描 -->
<context:annotation-config />
<!-- 自动扫描注解 -->
<context:component-scan base-package="org.hy.ssm" />
<!-- 完成请求和注解POJO的映射 -->
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
<!--
* 将 webapp(WEB-INF同级) 静态资源映射新路径,
* 当前示例 /wabapp/statics/
* statics/ 为静态资源文件夹, 如: csss/templates/images/js/等等
-->
<mvc:resources location="/statics/" mapping="/resource/**" cache-period="31536000" />
<!--
* 视图解析器, (必须)
* 前缀 /WEB-INF/
* 后缀 .jsp
* 示例: handler 返回字符串(视图映射路径)为 user/list, 则映射路径为: /WEB-INF/user/list.jsp
-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/" p:suffix=".jsp" />
<!--
* 配置 JSON 转换器(必须)
* handler 返回 Model 数据时需要用到
* 与 @ResponseBody 联合使用
-->
<bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>
<!-- 注册 JSON 转换器 -->
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="mappingJacksonHttpMessageConverter" /><!-- json转换器 -->
</list>
</property>
</bean>
<!-- 文件上传 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding">
<value>UTF-8</value>
</property>
<property name="maxUploadSize">
<value>32505856</value><!-- 上传文件大小限制为31M -->
</property>
<property name="maxInMemorySize">
<value>4096</value>
</property>
</bean>
<!--
* 注册验证拦截器(非 javax.servlet.Filter),
* 拦截器实现需要继承: org.springframework.web.filter.OncePerRequestFilter
-->
<bean id="loginFileter" class="org.hy.ssm.web.filter.LoginFilter"></bean>
<!--
* Spring 邮件配置
* 注意:这里的参数(如用户名、密码)都是针对邮件发送者的
-->
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="${email.stmp.server}" />
<property name="defaultEncoding" value="utf-8" />
<property name="username" value="${email.username}" />
<property name="password" value="${email.password}" />
<property name="port" value="${email.stmp.port}" />
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">true</prop>
<prop key="mail.smtp.timeout">25000</prop>
</props>
</property>
</bean>
</beans>
spring-dao.xml 配置 (包含Mybatis)
Xml代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/23/99dd0a550a7fe52fc0e8d85ece4c7054.png)
<?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:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
">
<!-- 配置 alibaba 数据源 -->
<bean name="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
<property name="url" value="${jdbc_url}" />
<property name="username" value="${jdbc_username}" />
<property name="password" value="${jdbc_password}" />
<property name="initialSize" value="0" />
<property name="maxActive" value="20" />
<property name="minIdle" value="0" />
<property name="maxWait" value="60000" />
<property name="validationQuery" value="${validationQuery}" />
<property name="testOnBorrow" value="false" />
<property name="testOnReturn" value="false" />
<property name="testWhileIdle" value="true" />
<property name="timeBetweenEvictionRunsMillis" value="60000" />
<property name="minEvictableIdleTimeMillis" value="25200000" />
<property name="removeAbandoned" value="true" />
<property name="removeAbandonedTimeout" value="1800" />
<property name="logAbandoned" value="true" />
<property name="filters" value="mergeStat" />
</bean>
<!-- MyBits 的 SessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 数据源 -->
<property name="dataSource" ref="dataSource" />
<!-- 数据访问接口对应的 SQL 实现 -->
<property name="mapperLocations" value="classpath:mapping/*.xml" />
<!-- Mybatis 其他配置 -->
<property name="configLocation" value="classpath:mybatis/mybatis-config.xml" />
</bean>
<!-- Mybatis 托管给 Spring 的接口与扫描配置 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!--
* 当前数据源所管理的数据访问接口包
* 如果项目中配置了多个数据源时,
* 应避免相同数据访问接口包
-->
<property name="basePackage" value="com.cnp.catalog.dao" />
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
</bean>
<!-- 开启spring的事物管理功能 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 使用注解管理事物 -->
<tx:annotation-driven transaction-manager="transactionManager" />
</beans>
(如何配置多个数据源:1、jdbc.properties 中新增一套jdbc配置[url/username/pwd];3、配置唯一的dataSource、transactionManager;3、修改 MapperScannerConfigurer.basePackage 的值为新的数据访问接口包,一个数据访问接口包只能绑定一个数据源;4、修改 SqlSessionFactoryBean.mapperLocations 的值为新的数据访问接口 SQL 实现配置,推荐为每个数据源指定不同的实现包)
配置 Mybatis
mybatis-config.xml
Xml代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/23/99dd0a550a7fe52fc0e8d85ece4c7054.png)
<?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>
<!--
* 在ParameterType或ResultType中直接使用类名,
* 首字母大小写均可
-->
<package name="org.hy.ssm.model.entities"/>
<!-- 或指定类型, 指定别名 -->
<typeAlias type="org.hy.ssm.model.entities.User" alias="user"/>
</typeAliases>
<!-- 枚举类型处理器 -->
<typeHandlers>
<!--
* handler: 枚举类型转换器, 当前使用 Ordinal, 如: Gender.MALE.ordinal(), 所以数据库应该是短整型
* javaType: 目标枚举类型(Copy Qualified Name)
-->
<typeHandler
handler="org.apache.ibatis.type.EnumOrdinalTypeHandler"
javaType="org.hy.ssm.model.entities.User$Gender"
/>
<!-- 多个枚举时配置多套 typeHandler 标签即可 -->
<!--
<typeHandler
handler="org.apache.ibatis.type.EnumOrdinalTypeHandler"
javaType="org.hy.ssm.model.entities.User$JobTitle"
/>
-->
</typeHandlers>
</configuration>
mapper 示例(UserMapper.xml)
Xml代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/23/99dd0a550a7fe52fc0e8d85ece4c7054.png)
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC
"-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"
>
<!-- namespace 通常使用 DAO 接口的权限命名 -->
<mapper namespace="org.hy.ssm.dao.UserDao">
<!--
* 这里能使用 resultType="user" 是因为配置了 package name="org.hy.ssm.model.entities"
*
* 小技巧:
* 1. 如果查询的数据非常确认只有一条时, 可在SQL的尾部明确的指出: LIMIT 1
* 2. 有 WHERE 的情况下, 先判断条件是否成立而后再使用, 可以提高 SQL 接口复用率
* 以上仅个人观点
-->
<!-- 指定用户账户查询用户 -->
<select id="selectUserByAccount" parameterType="string" resultType="user">
SELECT
*
FROM
ssm_user u
<if test="account != null and account != ''">
<where>
u.account = #{account}
</where>
</if>
LIMIT
1
</select>
</mapper>
到目前为止必要的配置已经完成 80%,还剩下最后一项日志,本例使用的日志框架为:log4j, slf4j,配置文件(log4.properties):
Java代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/23/99dd0a550a7fe52fc0e8d85ece4c7054.png)
log4j.rootLogger=DEBUG, stdout, R
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[catalog] [%5p] [%d{yyyy-MM-dd HH:mm:ss}] (%F:%L) %m%n
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=/home/appadmin/logs/catalog.log
log4j.appender.R.MaxFileSize=5012KB
log4j.appender.R.MaxBackupIndex=50
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=[catalog][%5p] [%d{yyyy-MM-dd HH:mm:ss}] (%F:%L) %m%n
log4j.logger.org.apache=DEBUG
log4j.logger.com.opensymphony=DEBUG
log4j.logger.org.springframework=DEBUG
log4j.logger.org.mybatis=DEBUG
log4j.logger.org.apache.commons.httpclient=ERROR
当前说明只能让你快速搭建项目,如果想要了解更深层次的原理及其应用则需要更多的其他相关资料。
ssm.zip (25.3 KB)
配置 SpringMVC
配置 Mybatis
配置 log
以下配置 SpringMVC:
确定包结构,以及每个包的作用
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/19/7e67345a86bbc01de3a9940552da336e.png)
配置 web.xml 启用 SpringMVC
Xml代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/23/99dd0a550a7fe52fc0e8d85ece4c7054.png)
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>SSM</display-name>
<!-- Spring MVC -->
<context-param>
<!-- 指定配置文件位置(非默认) -->
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/spring-mvc.xml</param-value>
</context-param>
<servlet>
<servlet-name>springMvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 通知 Web 容器, 启动时初始化 Spring MVC -->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springMvc</servlet-name>
<!-- 指定拦截以 .do 结尾的配置, 如果配置为 "/" 则需要在配置文件中排除静态资源, 如: .css, .jsp, .png等等 -->
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
配置 spring-mvc.xml
Xml代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/23/99dd0a550a7fe52fc0e8d85ece4c7054.png)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
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/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
<!-- 配置资源文件 -->
<!-- * 指定 classPath 相对路径 * -->
<context:property-placeholder location="classpath:jdbc.properties" />
<!--
* 指定文件(绝对)路径 *
<context:property-placeholder location="file:D:/home/appadmin/config/jdbc.properties" />
-->
<!-- 加载组件配置 -->
<import resource="classpath:spring-dao.xml" />
<!-- 启用spring mvc 注解, conversion-service 用于注册 Handler 的参数类型转换器 -->
<mvc:annotation-driven conversion-service="conversionService" />
<!-- 注册参数转换器 -->
<bean id="conversionService"
class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<property name="converters">
<set>
<!-- 枚举转换器: 支持 ordinal 和 name(区分大小写) -->
<bean class="org.hy.ssm.web.converter.StringToEnumConverterFactory" />
<!-- 日期转换器: 支持的模式列表查看源码, 可支持毫秒值(字符串) -->
<bean class="org.hy.ssm.web.converter.StringToDate" />
</set>
</property>
</bean>
<!-- 启用spring mvc 注解扫描 -->
<context:annotation-config />
<!-- 自动扫描注解 -->
<context:component-scan base-package="org.hy.ssm" />
<!-- 完成请求和注解POJO的映射 -->
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
<!--
* 将 webapp(WEB-INF同级) 静态资源映射新路径,
* 当前示例 /wabapp/statics/
* statics/ 为静态资源文件夹, 如: csss/templates/images/js/等等
-->
<mvc:resources location="/statics/" mapping="/resource/**" cache-period="31536000" />
<!--
* 视图解析器, (必须)
* 前缀 /WEB-INF/
* 后缀 .jsp
* 示例: handler 返回字符串(视图映射路径)为 user/list, 则映射路径为: /WEB-INF/user/list.jsp
-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/" p:suffix=".jsp" />
<!--
* 配置 JSON 转换器(必须)
* handler 返回 Model 数据时需要用到
* 与 @ResponseBody 联合使用
-->
<bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>
<!-- 注册 JSON 转换器 -->
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="mappingJacksonHttpMessageConverter" /><!-- json转换器 -->
</list>
</property>
</bean>
<!-- 文件上传 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding">
<value>UTF-8</value>
</property>
<property name="maxUploadSize">
<value>32505856</value><!-- 上传文件大小限制为31M -->
</property>
<property name="maxInMemorySize">
<value>4096</value>
</property>
</bean>
<!--
* 注册验证拦截器(非 javax.servlet.Filter),
* 拦截器实现需要继承: org.springframework.web.filter.OncePerRequestFilter
-->
<bean id="loginFileter" class="org.hy.ssm.web.filter.LoginFilter"></bean>
<!--
* Spring 邮件配置
* 注意:这里的参数(如用户名、密码)都是针对邮件发送者的
-->
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="${email.stmp.server}" />
<property name="defaultEncoding" value="utf-8" />
<property name="username" value="${email.username}" />
<property name="password" value="${email.password}" />
<property name="port" value="${email.stmp.port}" />
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">true</prop>
<prop key="mail.smtp.timeout">25000</prop>
</props>
</property>
</bean>
</beans>
spring-dao.xml 配置 (包含Mybatis)
Xml代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/23/99dd0a550a7fe52fc0e8d85ece4c7054.png)
<?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:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
">
<!-- 配置 alibaba 数据源 -->
<bean name="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
<property name="url" value="${jdbc_url}" />
<property name="username" value="${jdbc_username}" />
<property name="password" value="${jdbc_password}" />
<property name="initialSize" value="0" />
<property name="maxActive" value="20" />
<property name="minIdle" value="0" />
<property name="maxWait" value="60000" />
<property name="validationQuery" value="${validationQuery}" />
<property name="testOnBorrow" value="false" />
<property name="testOnReturn" value="false" />
<property name="testWhileIdle" value="true" />
<property name="timeBetweenEvictionRunsMillis" value="60000" />
<property name="minEvictableIdleTimeMillis" value="25200000" />
<property name="removeAbandoned" value="true" />
<property name="removeAbandonedTimeout" value="1800" />
<property name="logAbandoned" value="true" />
<property name="filters" value="mergeStat" />
</bean>
<!-- MyBits 的 SessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 数据源 -->
<property name="dataSource" ref="dataSource" />
<!-- 数据访问接口对应的 SQL 实现 -->
<property name="mapperLocations" value="classpath:mapping/*.xml" />
<!-- Mybatis 其他配置 -->
<property name="configLocation" value="classpath:mybatis/mybatis-config.xml" />
</bean>
<!-- Mybatis 托管给 Spring 的接口与扫描配置 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!--
* 当前数据源所管理的数据访问接口包
* 如果项目中配置了多个数据源时,
* 应避免相同数据访问接口包
-->
<property name="basePackage" value="com.cnp.catalog.dao" />
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
</bean>
<!-- 开启spring的事物管理功能 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 使用注解管理事物 -->
<tx:annotation-driven transaction-manager="transactionManager" />
</beans>
(如何配置多个数据源:1、jdbc.properties 中新增一套jdbc配置[url/username/pwd];3、配置唯一的dataSource、transactionManager;3、修改 MapperScannerConfigurer.basePackage 的值为新的数据访问接口包,一个数据访问接口包只能绑定一个数据源;4、修改 SqlSessionFactoryBean.mapperLocations 的值为新的数据访问接口 SQL 实现配置,推荐为每个数据源指定不同的实现包)
配置 Mybatis
mybatis-config.xml
Xml代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/23/99dd0a550a7fe52fc0e8d85ece4c7054.png)
<?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>
<!--
* 在ParameterType或ResultType中直接使用类名,
* 首字母大小写均可
-->
<package name="org.hy.ssm.model.entities"/>
<!-- 或指定类型, 指定别名 -->
<typeAlias type="org.hy.ssm.model.entities.User" alias="user"/>
</typeAliases>
<!-- 枚举类型处理器 -->
<typeHandlers>
<!--
* handler: 枚举类型转换器, 当前使用 Ordinal, 如: Gender.MALE.ordinal(), 所以数据库应该是短整型
* javaType: 目标枚举类型(Copy Qualified Name)
-->
<typeHandler
handler="org.apache.ibatis.type.EnumOrdinalTypeHandler"
javaType="org.hy.ssm.model.entities.User$Gender"
/>
<!-- 多个枚举时配置多套 typeHandler 标签即可 -->
<!--
<typeHandler
handler="org.apache.ibatis.type.EnumOrdinalTypeHandler"
javaType="org.hy.ssm.model.entities.User$JobTitle"
/>
-->
</typeHandlers>
</configuration>
mapper 示例(UserMapper.xml)
Xml代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/23/99dd0a550a7fe52fc0e8d85ece4c7054.png)
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC
"-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"
>
<!-- namespace 通常使用 DAO 接口的权限命名 -->
<mapper namespace="org.hy.ssm.dao.UserDao">
<!--
* 这里能使用 resultType="user" 是因为配置了 package name="org.hy.ssm.model.entities"
*
* 小技巧:
* 1. 如果查询的数据非常确认只有一条时, 可在SQL的尾部明确的指出: LIMIT 1
* 2. 有 WHERE 的情况下, 先判断条件是否成立而后再使用, 可以提高 SQL 接口复用率
* 以上仅个人观点
-->
<!-- 指定用户账户查询用户 -->
<select id="selectUserByAccount" parameterType="string" resultType="user">
SELECT
*
FROM
ssm_user u
<if test="account != null and account != ''">
<where>
u.account = #{account}
</where>
</if>
LIMIT
1
</select>
</mapper>
到目前为止必要的配置已经完成 80%,还剩下最后一项日志,本例使用的日志框架为:log4j, slf4j,配置文件(log4.properties):
Java代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/23/99dd0a550a7fe52fc0e8d85ece4c7054.png)
log4j.rootLogger=DEBUG, stdout, R
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[catalog] [%5p] [%d{yyyy-MM-dd HH:mm:ss}] (%F:%L) %m%n
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=/home/appadmin/logs/catalog.log
log4j.appender.R.MaxFileSize=5012KB
log4j.appender.R.MaxBackupIndex=50
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=[catalog][%5p] [%d{yyyy-MM-dd HH:mm:ss}] (%F:%L) %m%n
log4j.logger.org.apache=DEBUG
log4j.logger.com.opensymphony=DEBUG
log4j.logger.org.springframework=DEBUG
log4j.logger.org.mybatis=DEBUG
log4j.logger.org.apache.commons.httpclient=ERROR
当前说明只能让你快速搭建项目,如果想要了解更深层次的原理及其应用则需要更多的其他相关资料。
ssm.zip (25.3 KB)
相关文章推荐
- Java用String 截取方式解析xml文件、处理大xml文件
- Eclipse中 搭建 Spring+SpringMVC+Mybatis整合(上)
- spring整合hibernate
- JAVA开发之压缩图片并打成ZIP文件
- Java扫描指定包中所有类
- Java异常处理机制难点解惑-用代码说话
- Java异常处理机制难点解惑-用代码说话
- java中的排序方法
- 在eclipse中开发web项目配置maven源码和JavaDoc
- JavaBean入门及简单的例子
- SpringMVC之多文件上传表单
- springMVC之单文件上传
- springMVC之普通表单提交
- java160105FlowerNumber
- java160105FirstRabbit
- Java关键字
- Spring Security对Acl的支持
- Java IO流分析与整理
- maven eclipse
- java中Math的一些用法