mybatis直接与数据库交互,实现了数据操作层,对数据库的操作主要有:增加、删除、更改、查询以及存储过程调用等操作。
一、数据操纵(增、删、改、查)
1、新增数据、更改数据传递的参数均为记录类型,mapper配置文件内容如下:
<insert id="insert" parameterType="com.springmvc.entity.SUser" >
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Wed Jan 17 11:25:43 CST 2018.
-->
<!--表示插入之后查询相应的插入数据,无需实现相应操作时可删除-->
<selectKey resultType="java.lang.String" keyProperty="personid" order="AFTER" >
SELECT SCOPE_IDENTITY()
</selectKey>
insert into S_USER (LOGINNAME, PASSWORD, UNTID, ROLEID)
values (#{loginname,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR}, #{untid,jdbcType=VARCHAR},
#{roleid,jdbcType=CHAR})
</insert>
<update id="updateUser" parameterType="com.springmvc.entity.SUser">
update S_USER set LOGINNAME=#{loginname,jdbcType=VARCHAR},PASSWORD=#{password,jdbcType=VARCHAR},UNTID=#{untid,jdbcType=VARCHAR},ROLEID=#{roleid,jdbcType=CHAR} WHERE PERSONID = #{personid,jdbcType=VARCHAR}
</update>
2、删除数据
3、一般数据查询
4、复杂查询
mybatis复杂 查询sql主要有一下几类:
1)、通过if判断动态组织sql;
<select id="findActiveBlogLike" resultType="Blog">
SELECT * FROM BLOG WHERE state = ‘ACTIVE’
<!--通过条件判断动态生成sql-->
<if test="title != null">
AND title like #{title}
</if>
<if test="author != null and author.name != null">
AND author_name like #{author.name}
</if>
</select>
2)、通过choose (when,otherwize) (相当于java 语言中的 switch ,与 jstl 中的choose 很类似)动态组织sql;
<select id="findActiveBlogLike" resultType="Blog"> SELECT * FROM BLOG WHERE state = ‘ACTIVE’ <choose> <when test="title != null"> AND title like #{title} </when> <when test="author != null and author.name != null"> AND author_name like #{author.name} </when> <otherwise> AND featured = 1 </otherwise> </choose> </select>
3)、trim前缀、后缀组织复杂sql;
<select id="getUsertList_if_trim" resultMap="resultMap_User"> SELECT * FROM user u <!--使用trim能够有效避免在依次进行条件判断,组合查询条件时出现where后无条件或者where 后直接连接 and符合等问题--> <!--有trim根据是否有条件确定是否在查询中增加where,也根据条件组合情况自动添加 条件连接符号(and 或者 or)--> <trim prefix="WHERE" prefixOverrides="AND|OR"> <if test="username !=null "> u.username LIKE CONCAT(CONCAT('%', #{