使用Mybatis+Spring框架,需要Mybatis配置文件、Spring配置文件、dao层的各个映射mapper文件。
一、Mybatis配置
<configuration>
<typeAliases>
<typeAlias alias="RoleMember" type="com.domain.RoleMember" />
</typeAliases>
<mappers>
<mapper resource="com/mapper/TestMapper.xml"/>
</mappers>
</configuration>
typeAliases标签用于配置JavaBean的别名。
mappers用于配置dao层的每个mapper映射文件,mapper文件少的情况可以再这里配置mappers,如果mapper
文件比较多的情况,可以配置扫描器自动扫描,而不需要将每个mapper文件在这里配置,具体看spring配置,
mapper下的resource可以用其他的代替,具体百度。
二、spring配置
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driveClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/myDatabase?useUnicode=true&characterEncoding=utf-8" />
<property name="user" value="root" />
<property name="password" value="123456" />
</bean>
<bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="configLocation" value="classpath:com/mapper/config.xml" />
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" value="dataSource" />
</bean>
<bean id="config" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.mapper" />
</bean>
<bean id="testMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
<property name="sqlSessionFactory" ref="sessionFactory" />
<property name="mapperInterface" value="com.mapper.TestMapper" />
</bean>
mybatis+spring的配置文件与hibernate+spring差不多,都是先配置数据源dataSource和session工厂
sessionFactory,不同的是hibernate需要配置对应的持久层访问模板hibernateTemplate,然后把需要的模板注
入给对应的dao,而mybatis则需要把sessionFacotry直接注入给每个dao。
dataSource | 数据源,需要配置数据库驱动,数据库地址,用户名密码等 |
sessionFactory | session的工厂,需要注入数据源和mybatis的配置文件 |
transactionManager | 配置的事务管理器 |
config |
用来配置扫描器的,MapperScannerConfigurer会扫描
basePackage下的所有mapper配置文件,而不需要在
config.xml中的mappers标签下加入每个mapper配置文
件了
|
testMapper | 配置dao,class固定为mybatis的mapperFacotryBean,需 要注入数据源,配置对应的接口文件,mapperInterface的 value需要和mapper的xml配置文件的namespace一样,指 向对应的java的接口文件。 |
此时基本的框架已经搭建完了,之后只需要根据业务需求建立需要的实体类,加上对应的mapper接
口文件,接口文件对应的xml映射文件,然后再spring配置文件中配置对应的bean就可以使用了。
实体类:
package com.domain;
public class RoleMember {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
mapper接口:
package com.mapper;
public interface TestMapper {
public RoleMember getRoleById(int id);
}
接口的配置文件:
<?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">
<mapper namespace="com.gamebean.football.TestMapper">
<select id="getRoleById" parameterType="java.lang.Integer" resultType="RoleMember">
select * from role_member where id = #{id}
</select>
</mapper>