SqlMapConfig.xml中配置的内容和顺序如下:
properties(属性):可提取数据库驱动
设置(全局配置参数)
typeAliases(类型别名)(typeAlias和package)
类型处理器(类型处理器)
objectFactory对象对象(对象工厂)
插件(插件)
环境(环境集合属性对象)
环境(环境子属性对象)
transactionManager的的(事务管理)
数据源(数据源)
mappers(映射器)
注意:顺序固定不可更改
映射配置的几种方法:
方法一:<mapper resource =“”/>
使用相对于类路径的资源(现在的使用方式)
如:<mapper resource =“sqlmap / User.xml”/>
方法二:<mapper class =“”/>
使用映射器接口类路径
如:<mapper class =“cn.itcast.mybatis.mapper.UserMapper”/>
方法三:<包名称=“”/>
指定包下的所有映射接口
如:<package name =“cn.itcast.mybatis.mapper”/>
注意:此种方法要求映射接口名称和映射器映射文件名称相同,且放在同一个目录中。
动态SQL
通过MyBatis的提供的各种标签方法实现动态拼接SQL。
如果标签
举例:
<!-- 根据条件查询用户 -->
<select id="queryUserByWhere" parameterType="user" resultType="user">
SELECT id, username, birthday, sex, address FROM `user`
WHERE 1=1
<if test="sex != null and sex != ''">
AND sex = #{sex}
</if>
<if test="username != null and username != ''">
AND username LIKE
'%${username}%'
</if>
</select>
w ^ 这里标签:可去掉第一个和
<!-- 根据条件查询用户 -->
<select id="queryUserByWhere" parameterType="user" resultType="user">
SELECT id, username, birthday, sex, address FROM `user`
<!-- where标签可以自动添加where,同时处理sql语句中第一个and关键字 -->
<where>
<if test="sex != null">
AND sex = #{sex}
</if>
<if test="username != null and username != ''">
AND username LIKE
'%${username}%'
</if>
</where>
</select>
SQL片段
SQL中可将重复的SQL提取出来,使用时用包括引用即可,最终达到SQL重用的目的。
举例:
<!-- 使用include标签加载sql片段;refid是sql片段id -->
SELECT <include refid="userFields" /> FROM `user`
<!-- where标签可以自动添加where关键字,同时处理sql语句中第一个and关键字 -->
<where>
<if test="sex != null">
AND sex = #{sex}
</if>
<if test="username != null and username != ''">
AND username LIKE
'%${username}%'
</if>
</where>
</select>
<!-- 声明sql片段 -->
<sql id="userFields">
id, username, birthday, sex, address
</sql>
的foreach标签
向SQL传递数组或列表,MyBatis的使用的foreach解析,如下:
根据多个ID查询用户信息
查询sql:SELECT * FROM user WHERE id IN(1,10,24)
设置标签:可去掉最后一个“”