mybatis-xml映射文件配置
简介
mybatis与Hibernate是全自动框架不同,它是半自动框架。因此mybatis拥有优化sql语句空间的同时,也需要手动配置sql语句。但是由于它是半自动的特点,它又比jdbc语句来得省时省力。
select 查询语句
select语句在许多场景下都显得尤为重要。在mybatis中,可以简单的配置select语句。
下面是一个select语句的简单示例。
<select id="selectUser" resultType="User">
select uid,uname,uaddress from user_base_inf
</select>
将resultType属性设置为User(User是在xml配置文件中设置的别名),mybatis能轻松的自动映射结果。
insert 插入语句
下面是一个insert语句的简单示例。
<insert id="insertUser" parameterType="User">
insert into user_base_inf(uid,uname,uaddress)
values(#{uid},#{uname},#{uaddress})
</insert>
update 更新语句
下面是一个uodate语句的简单示例。
<update id="updateUser" parameterType="User">
update user_base_inf set
uname=#{uname},uaddress=#{uaddress} where uid=#{uid}
</update>
delete 删除语句
下面是一个delete语句的简单示例。
<delete id="deleteUserByUid">
delete from user_base_inf where uid=#{uid}
</delete>
sql 可重用语句块
sql可以定义sql语句代码段并在其他语句中使用,从而达到sql语句重用的效果。
下面是一个sql语句使用的简单示例。
<select id="findUserByUid" resultType="User">
select uid,uname,uaddress
from user_base_inf where uid = #{uid}
</select>
<select id="findUser" resultType="User">
select uid,uname,uaddress from
user_base_inf
</select>
容易发现,上面两句select语句中有大量的重复部分,将其抽取成sql语句,
<sql id="userColumns">uid,uname,uaddress from user_base_inf</sql>
<select id="findUserByUid" resultType="User">
select<include refid="userColumns"/> where uid = #{uid}
</select>
<select id="findUser" resultType="User">
select <include refid="userColumns"/>
</select>
这两段代码虽然不同,但是其的作用是完全相同。可以预见,当有成千上万条相似的sql语句时,sql可重用语块的出现能极大的缩小代码量。
#{} 参数占位符
使用#{}可以向语句传递参数。这在大部分的sql语句中都会用到。
${} 字符串替换
使用${}可以向语句传递字符串。字符串将在sql语句调用时不进行转义地替换字符串。值得注意的是, ${}的使用会有潜在的注入风险。
resultMap 结果映射
mybatis对于简单的语句可以进行自动的结果映射。但是面对复杂的语句时,自动结果映射可能会得到意料之外的结果。这时候需要进行配置结果映射。
在进行关联的嵌套select查询时,字段名与属性名相同时不用配置结果映射。
在进行关联的嵌套结果映射时,所有字段都需要配置结果映射。
cache 缓存
mybatis有强大的缓存机制。可以通过cache元素来轻松地修改。
默认情况下只开起本地会话缓存缓存一个会话。
<cache/>
只需要添加这一行代码,即可开启全局二级缓存