MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。
iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)。
官方语言结束。
在实际项目中,Mybatis的配置文件是集成到Spring中的,所以你只需要关心的只有dao接口还有对应的mapper文件。形如如下目录结构:
+--dao
+----IUserDao.java
+----IuserDao.xml
…………………………
注意:dao接口和mapper文件名必须一致!多说无意下面看代码:
首先是spring的配置文件:
applicationContext.xml
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- mapper.xml文件对应的接口 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.cmicroentropy.soa.dao" />
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
</bean>
然后是mapper文件,懒得写直接从项目里copy了一个:
ICdeCompanyInfoBoxDao.xml
<?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.cmicroentropy.soa.dao.homemap.ICdeCompanyInfoBoxDao">
<!-- 带缓存 -->
<cache type="org.mybatis.caches.oscache.OSCache"/>
<resultMap type="com.cmicroentropy.soa.vo.homemap.CdeCompanyInfoBoxVo" id="CdeCompanyInfoBoxVo">
<result property="compsid" column="compsid" jdbcType="INTEGER" javaType="java.lang.Integer" />
<result property="compname" column="compname" jdbcType="VARCHAR" javaType="java.lang.String" />
<result property="parentcompid" column="parentcompid" jdbcType="VARCHAR" javaType="java.lang.String" />
</resultMap>
<select id="getCdeCompanyInfoList" resultMap="CdeCompanyInfoBoxVo" parameterType="java.lang.Integer">
select c.compsid,c.compname,c.parentcompid
from
vw_cde_company_info c
where c.compsid =#{compsid} or
c.parentcompid=#{compsid}
</select>
</mapper>
这里加了缓存,如果不需要删除
<cache type="org.mybatis.caches.oscache.OSCache"/>
即可,当然如果你加了,那么一定要在执行删除或者修改、添加的地方加上 flushCache="true"来刷新缓存。
最后再看看dao接口,也是项目里直接粘的,对应上面的mapper:
ICdeCompanyInfoBoxDao.java
/**
*
* @ClassName: ICdeCompanyInfoBoxDao
* @Description: 公司信息接口
* @author scc
* @date 2015年5月5日 上午11:12:41
*
*/
public interface ICdeCompanyInfoBoxDao {
/**
*
* @Title: getCdeCompanyInfoList
* @Description: 获取公司信息列表
* @param compsid
* @return
*/
List<CdeCompanyInfoBoxVo> getCdeCompanyInfoList(int compsid);
}
有兴趣的可以看看注解方式,项目需要这里只能是xml方式。数据库链接使用的是druid,下篇讲解。
还有pom.xml忘了写了,再加上
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.7</version>
</dependency>
<dependency>
<groupId>org.mybatis.caches</groupId>
<artifactId>mybatis-oscache</artifactId>
<version>1.0.1</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.2</version>
</dependency>
我就不测试,实际项目运行的,不会出错。