转与拼接:
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>