Mybatis中xml的有关用法

1、xml映射文件中标签含义:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="admin.modules.sys.mapper.SysUserMapper">
   <!-- 根据用户名查询 -->
   <select id="getUserByName" resultType="admin.modules.sys.entity.SysUser">
      select * from  sys_user  where username = #{username} and del_flag = 0
   </select>
</mapper>

<select>: 映射查询语句使用的标签。
 id:命名空间中的唯一标识符,可用来代表这条语句。
select 标签中的select * from sys_user where id= #{id}是查询语句。
#{username} : MyBatis SQL 中使用预编译参数的一种方式,大括号中的username是传入的参数名。

resultType:当使用resultType做SQL语句返回结果类型处理时,对于SQL语句查询出的字段在相应的pojo中必须有和它相同的字段对应,而resultType中的内容就是pojo在本项目中的位置。

因此对于单表查询的话用resultType是最合适的。但是,如果在写pojo时,不想用数据库表中定义的字段名称,也是可以使用resultMap进行处理对应的。多表连接查询时,若是一对一的连接查询,那么需要新建一个pojo,pojo中包括两个表中需要查询出的所有的字段,这个地方的处理方式通常为创建一个继承一个表字段的pojo,再在里面添加另外一个表内需要查询出的字段即可。若是一对多查询时,若是使用内连接查询,则很可能出现查询出的字段有重复。使用双重for循环嵌套处理即可。

2、有关if test以及==的用法

Mybatis中,通常都要在mapper.xml中写复杂的sql语句,结合页面的查询筛选条件,需要在sql语句中加入<if test=""></if>等的判断

<select id="getUserByDepId" resultType="admin.modules.sys.entity.SysUser">
   select * from sys_user where del_flag = 0 and id in (select user_id from sys_user_depart where dep_id=#{departId})
   <if test="username!=null and username!=''">
      and username = #{username}
   </if>

    <if test="username=='1'"> 
        and username = #{username} 
    </if>
</select>

3、foreach中collection的三种用法

foreach元素的属性主要有 item,index,collection,open,separator,close。
    item表示集合中每一个元素进行迭代时的别名,
    index指定一个名字,用于表示在迭代过程中,每次迭代到的位置,
    open表示该语句以什么开始,
    separator表示在每次进行迭代之间以什么符号作为分隔符,
    close表示以什么结束。

<update id="deleteBathRolePermissionRelation">
   delete from sys_role_permission
   where role_id in
   <foreach item="id" collection="roleIdArray" open="(" separator="," close=")">
      #{id}
   </foreach>
</update>

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值