转与拼接:
MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
在mybatis的xml配置文件中,有时可以看到<![ CDATA[ ] ]> ,表示不应由xml解析器进行解析的文本数据,
早在xml中"<,>,&"等 都是非法的,"<"在xml解析中表示新元素开始,
加了cdata[],里面内容会被解析器忽略,
在实际使用中,一般将符号替换
< | < | 小于 |
> | > | 大于 |
& | & | 和号 |
' | ' | 省略号 |
" | " | 引号 |
例子
resultMap
表示结果集是集合类型,
resultType是直接表示返回类型的(对应着我们的model对象中的实体),而resultMap则是对外部ResultMap的引用(提前定义了db和model之间的隐射key-->value关系),
但是resultType跟resultMap不能同时存在。
parameterType设置是参数类型
<select id="currentDateData" resultType="Procurement" >
select
<include refid="allColumn" />
from procurement
<where> <![CDATA[DATEDIFF(NOW(),createDate)<6 and DATEDIFF(NOW(),createDate)>0 ]]> </where>
order by refreshDatetime desc
</select>
################
<resultMap id="UserResultMap" type="com.xixicat.domain.UserInfo">
<result property="id" column="id" />
<result property="username" column="username" />
<result property="sex" column="sex" />
</resultMap>
<select id="getUserInfoMap" resultMap="UserResultMap">
select id,username,sex from user_info
</select>
##################################
trim标识为格式化标识,可以与其他标识完成where和set的功能
prefix 前缀增加 suffix 后缀增加 prefixOverrides 自动判断前置 suffixOverrides 自动判断后置
接着来测试一下,在user.xml中添加
<update id="updateUserTrim" parameterType="User">
UPDATE User
<trim prefix="SET" suffixOverrides="," suffix="WHERE id = #{id}" >
<if test="userName != null and userName != '' ">
userName = #{userName},
</if>
<if test="password != null and password != '' ">
password=#{password},
</if>
</trim>