Mybatis 可以说是 ibatis 的升级版 ,MyBatis 提供了更为强大的功能,同时并没有损失其易用性,相反,在很多地方都借助于 JDK 的泛型和注解特性进行了简化
Java EE 框架 这个框架需要提供一个全局配置文件,用于指定程序正常运行所需的设置和参数信息。而针对常用的持久层框架而言(Hibernate、JPA、iBatis 等),则通常需要两个配置文件:
一类用于指定数据源、事务属性以及其他一些参数配置信息(通常是一个独立的文件,可以称之为全局配置文件);
iBatis 一般在命名为 而Mybatis 就要给命名为
另一类则用于指定数据库表和程序之间的映射信息(可能不止一个文件,我们称之为映射文件)。
Mybatis 配置文件需要<properties></properties>
<!--properties标签-->
<properties resource=""></properties>
<!--配置环境-->
<environments default=" ">
<!--配置mysql的环境,可以配置多个数据库-->
<environment >
<!--配置事务的类型-->
<transactionManager type="JDBC"></transactionManager>
<!--配置连接数据库的4个基本信息-->
<dataSource type="POOLED">
<property name="driver" value="${}"/>
<property name="url" value="${}"/>
<property name="username" value="${}"/>
<property name="password" value="${}"/>
</dataSource>
</environment>
</environments>
properties:
=
=
=
=
创建sql以及写sql的时候也会有略微不同
ibatis
<sqlMap namespace="VehLog">
<typeAlias alias="VehLogResult" type="路径"/>
<!-- 用于select查询公用抽取的列,注意将blob与clob对象单独处理 -->
<sql >
<![CDATA[
as lsh,
as clrq,
]]>
</sql>
<!-- 动态SQL -->
<sql >
<dynamic prepend="WHERE">
<isNotEmpty prepend="AND" property="lsh">
= #lsh#
</isNotEmpty>
<isNotEmpty prepend="AND" property="clrqString">
to_char(,'yyyy-mm-dd') = #clrqString#
</isNotEmpty>
</dynamic>
</sql>
<!-- insert操作-->
<insert parameterClass="路径" >
<![CDATA[
INSERT INTO VEH_LOG(
LSH,
CLRQ,
) VALUES (
#lsh:VARCHAR#,
#clrq:TIMESTAMP#,
)
]]>
</insert>
<!-- update操作-->
<update parameterClass="路径">
UPDATE VEH_LOG
SET LSH = #lsh#,
SET CLRQ = #clrq#
<isNotNull prepend="," property="ywlx">
YWLX = #ywlx:CHAR#
</isNotNull>
WHERE
LSH = #lsh#,
CLRQ = #clrq#
</update>
<!-- delete操作-->
<delete parameterClass="">
<![CDATA[
DELETE FROM VEH_LOG A WHERE
= #lsh#,
= #clrq#
]]>
</delete>
<!-- 取所有数据 -->
<select parameterClass="" resultClass="VehLogResult">
SELECT <include ref />
FROM VEH_LOG A
<include ref/>
<isNotEmpty property="sortColumns">
ORDER BY $sortColumns$
</isNotEmpty>
</select>
<!-- 通过主键读取VehLog对象 -->
<select parameterClass="" resultClass="VehLogResult">
SELECT <include ref />
<![CDATA[
FROM VEH_LOG A
WHERE
= #lsh#,
= #clrq#
]]>
</select>
<!-- 按字段取数据 -->
<select parameterClass="" resultClass="VehLogResult">
SELECT <include ref />
FROM VEH_LOG A
<include ref/>
<isNotEmpty property="sortColumns">
ORDER BY $sortColumns$
</isNotEmpty>
</select>
<!-- 取总数 -->
<select parameterClass="" resultClass="long">
SELECT count(*) FROM VEH_LOG A
<include ref/>
</select>
<!-- 分页查询 -->
<select parameterClass="" resultClass="VehLogResult">
SELECT <include ref />
FROM VEH_LOG A
<include ref/>
<isNotEmpty property="sortColumns">
ORDER BY $sortColumns$
</isNotEmpty>
</select>
<!-- 多记录查询 -->
<select parameterClass="" resultClass="VehLogResult">
SELECT <include ref />
FROM VEH_LOG A
WHERE , IN
<iterate property="idsList" open="(" close=")" conjunction=",">
#idsList[]#
</iterate>
<isNotEmpty property="sortColumns">
ORDER BY $sortColumns$
</isNotEmpty>
</select>
<!-- 按字段delete操作-->
<delete parameterClass="" >
DELETE FROM VEH_LOG A <include ref/>
</delete>
<!-- 业务工作量统计 -->
<select parameterClass="" resultClass="">
SELECT ,COUNT(*) AS NUM
FROM VEH_LOG A
<include ref/>
GROUP BY
ORDER BY ASC
</select>
</sqlMap>
mybatis
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-////DTD Mapper 3.0//EN" "/dtd/">
<mapper namespace="">
<resultMap type="">
<!--
WARNING - @
-->
<id column="id" jdbcType="INTEGER" property="id" />
<result column="img_file_name" jdbcType="VARCHAR" property="imgFileName" />
<result column="title" jdbcType="VARCHAR" property="title" />
<result column="subtitle" jdbcType="VARCHAR" property="subtitle" />
<result column="price" jdbcType="DECIMAL" property="price" />
<result column="distance" jdbcType="INTEGER" property="distance" />
<result column="number" jdbcType="INTEGER" property="number" />
<result column="desc" jdbcType="VARCHAR" property="desc" />
<result column="city" jdbcType="VARCHAR" property="city" />
<result column="category" jdbcType="VARCHAR" property="category" />
<result column="star_total_num" jdbcType="INTEGER" property="starTotalNum" />
<result column="comment_total_num" jdbcType="INTEGER" property="commentTotalNum" />
</resultMap>
<select resultMap="BaseResultMap">
SELECT * FROM business WHERE city=#{city}
</select>
<select resultMap="BaseResultMap">
SELECT * FROM business WHERE id =#{id}
</select>
<select resultMap="BaseResultMap">
SELECT * FROM business
<where>
<if test="keyword!=null and keyword!=''">
and title LIKE CONCAT('%',#{keyword},'%')
</if>
<if test="city!=null and city!=''">
AND city=#{city}
</if>
<if test="category!=null and category!='' and category!='all'">
AND category=#{category}
</if>
</where>
</select>
<select resultType="map">
SELECT ,c.`comment`,,, FROM business b INNER JOIN orders o ON =o.business_id
INNER JOIN member m ON o.member_id =
INNER JOIN `comment` c ON = c.orders_id
where =#{id}
</select>
<select resultType="">
SELECT * FROM business
<where>
<if test="title!=null and title!=''">
title LIKE CONCAT('%',#{title},'%')
</if>
</where>
</select>
<insert parameterType="" useGeneratedKeys="true" keyProperty="id">
INSERT INTO business(id,img_file_name,title,subtitle,price,distance,number,`desc`,city,category,star_total_num,comment_total_num)
VALUES(null,#{imgFileName},#{title},#{subtitle},#{price},#{distance},#{number},#{desc},#{city},#{category},#{starTotalNum},#{commentTotalNum})
</insert>
<update parameterType="">
UPDATE business SET img_file_name=#{imgFileName},title=#{title},subtitle=#{subtitle},price=#{price},distance=#{distance},number=#{number},
`desc`=#{desc},city=#{city},category=#{category},star_total_num=#{starTotalNum},comment_total_num=#{commentTotalNum} WHERE id=#{id}
</update>
<select resultType="">
SELECT * FROM business WHERE id=#{id}
</select>
<select resultType="">
SELECT FROM business b INNER JOIN dic d WHERE = AND d.`name`=#{name}
</select>
</mapper>
以上是个人在开发中jue得的不同之处