1.使用Mawen的pom.xml将所需jar包引入工程
2.使用mybatis generator工具生成基本的mapping dao model
3.引入主要的三个配置文件:
a. spring.xml:引入属性properties,自动注入servies层
<span style="white-space:pre"> </span><!-- 引入属性文件 -->
<context:property-placeholder location="classpath:config.properties" />
<!-- 自动扫描(自动注入) -->
<context:component-scan base-package="sy.service" />
b. spring-mybatis.xml:配置数据源,mybatis数据映射
<span style="white-space:pre"> </span><!-- myBatis文件 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<!-- 自动扫描entity目录, 省掉Configuration.xml里的手工配置 -->
<property name="mapperLocations" value="classpath:sy/mapping/*.xml" />
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="sy.dao" />
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
</bean>
c.spring-mvc.xml:自动扫描控制器,请求返回视图前后缀
<span style="white-space:pre"> </span><!-- 自动扫描controller包下的所有类,使其认为spring mvc的控制器 -->
<context:component-scan base-package="sy.controller" />
<span style="white-space:pre"> <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 -->
<span style="white-space:pre"> </span><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/" p:suffix=".jsp" /></span>
4.web.xml将三个配置文件引入:
<span style="white-space:pre"> </span><!--上下文配置-->
<span style="white-space:pre"> </span><context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring.xml,classpath:spring-mybatis.xml</param-value>
</context-param>
<span style="white-space:pre"> </span><!--servlet使用mvc配置-->
<span style="white-space:pre"> </span><servlet>
<description>spring mvc servlet</description>
<servlet-name>springMvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<description>spring mvc 配置文件</description>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
5.创建servies及controller 并在其中使用相应注解以便配置扫描
6.针对复杂sql:需要适当修改model,修改默认生成的mapping:
继承原有baseResultMap
collection:list
association:某字段改为引用其他类
<span style="white-space:pre"> </span><resultMap type="sy.model.User" id="userResultMap3" extends="BaseResultMap">
<collection property="userRoles" javaType="list" ofType="sy.model.UserRole">
<id property="id" column="userrole_id" />
<result column="role_id" property="roleId" />
<result property="userId" column="user_id" />
<association property="role" javaType="sy.model.Role">
<id property="id" column="role_id" />
<result property="text" column="role_text" />
</association>
</collection>
</resultMap>
7.使用junit测试:使用spring注解快速测试
package sy.test;
import java.util.List;
import org.apache.log4j.Logger;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import sy.model.User;
import sy.service.UserServiceI;
import com.alibaba.fastjson.JSON;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:spring.xml", "classpath:spring-mybatis.xml" })
public class TestMybatis {
private static final Logger logger = Logger.getLogger(TestMybatis.class);
private UserServiceI userService;
@Test
public void test4() {
List<User> l = userService.getAll3();
logger.info(JSON.toJSONStringWithDateFormat(l, "yyyy-MM-dd HH:mm:ss"));
}
}