实验3---动态sql-爱代码爱编程
动态SQL
1.实验目的及任务
目的:掌握利用mybatis进行java对象数据存取,并使用动态SQL编写SQL语句的方法。
任务:
(1)完成对角色表的增删改查操作。
(2)使用动态SQL中的if+set编写修改角色update操作。
(3)使用if+trim实现根据角色名称模糊查询角色信息列表,并进行分页显示。
2.实验结果
1.Role
@AllArgsConstructor
@NoArgsConstructor
@Data
public class Role {
private Integer id; //id
private String roleCode; //角色编码
private String roleName; //角色名称
private Integer createdBy; //创建者
private Date creationDate; //创建时间
private Integer modifyBy; //更新者
private Date modifyDate;//更新时间
}
2.RoleMapper代码
略
3.RoleMapper.xml文件
<!--
采用trim+if的实现方式
-->
<select id="getRoleListByRoleName" resultType="cn.smbms.pojo.Role">
select * from smbms_role
<trim prefix="where" prefixOverrides="and">
<if test="roleName!=null and roleName!=''">
and roleName like CONCAT('%',#{roleName},'%')
</if>
</trim>
order by creationDate desc
limit #{from},#{pageSize}
</select>
<select id="getUserCountByRoleId" resultType="java.lang.Integer">
SELECT COUNT(*) as count
FROM
smbms_role r
JOIN smbms_user u
ON u.userRole = r.id
WHERE
r.id =#{userRole}
</select>
<!--
新增Role的信息
-->
<insert id="add">
insert into smbms_role(roleCode, roleName, createdBy, creationDate)
values (#{roleCode}, #{roleName}, #{createdBy}, #{creationDate})
</insert>
<!--
修改
动态sql的方式
-->
<update id="modify">
update smbms_role
<set>
<if test="roleCode!=null">
roleCode=#{roleCode},
</if>
<if test="roleName!=null">
roleName=#{roleName},
</if>
<if test="modifyBy!=null">
modifyBy=#{modifyBy},
</if>
<if test="modifyDate!=null">
modifyDate=#{modifyDate},
</if>
</set>
where id=#{id}
</update>
<!--
根据角色id删除用户角色信息
-->
<delete id="deleteRoleById">
delete
from smbms_role
where id = #{id}
</delete>
<!--
foreach的动态删除
-->
<delete id="delete">
delete from smbms_role where 1=1 and id in
<foreach collection="array" item="idx" open="(" separator="," close=")">
#{idx}
</foreach>
</delete>