MyBatis常用标签和注解(绝对经典,突围金九银十面试季




### 2、insert – 映射插入语句



insert into User (id,name,sex) values (#{id},#{name},#{sex})




### 3、update – 映射更新语句



update User set

name = #{name},

sex= #{sex}

where id = #{id}




### 4、delete – 映射删除语句



delete from User where id = #{id}




二、动态sql标签

---------



### 1、if



<select id=“findUserByName”

 resultType="User">

SELECT * FROM User

WHERE valid = 1

AND name like #{name}



### 2、choose (when, otherwise)



<select id=“findUser”

 resultType="User">

SELECT * FROM User WHERE age = 26

<when test="name!= null">

  AND name like #{name}

</when>

<when test="sex!= null ">

  AND sex like #{sex}

</when>

<otherwise>

  AND valid = 1

</otherwise>



### 3、trim (where, set)



//prefixOverrides 属性会忽略通过管道分隔的文本序列(注意此例中的空格也是必要的)。它的作用是移除所有指定在 prefixOverrides 属性中的内容,并且插入 prefix 属性中指定的内容。

//set 元素会动态前置 SET 关键字,同时也会删掉无关的逗号




### 4、foreach



//collection=“要遍历的集合”

//item = “可以在元素体内使用的集合项”

//index = “索引”

//open = “开始字符串”

//separator = “分隔符”

//close = “结束字符串”

SELECT *

FROM User

WHERE ID in

<foreach item=“item” index=“index” collection=“list”

  open="(" separator="," close=")">

    #{item}



### 5、bind



//bind可以创建一个变量并将其绑定到上下文

SELECT * FROM User

WHERE name LIKE #{pattern}




### 6、xml中的timestamp比较



第一种写法:

原符号 < <= > >= & ’ "

替换符号 < <= > >= & ' "

例如:sql如下:


create_date_time &gt;= #{startTime} and  create_date_time &lt;= #{endTime}

第二种写法:

大于等于

<![CDATA[ >= ]]>

小于等于

<![CDATA[ <= ]]>

例如:sql如下:


create_date_time <![CDATA[ >= ]]> #{startTime} and  create_date_time <![CDATA[ <= ]]> #{endTime}

<select id=“getUser”

	resultType="java.lang.String" >

	select name from user 

	where birthday &lt; TO_TIMESTAMP(#{start}, 'yyyy-mm-dd hh24:mi:ss') 

	and birthday &gt;= TO_TIMESTAMP(#{end}, 'yyyy-mm-dd hh24:mi:ss') order by start desc LIMIT 1;

</select> 



### 7、@Param



@Param是MyBatis所提供的(org.apache.ibatis.annotations.Param),作为Dao层的注解,作用是用于传递参数,从而可以与SQL中的的字段名相对应,一般在2=<参数数<=5时使用最佳。



(1)原始的方法



当只有一个参数时,没什么好说的,传进去一个值也只有一个参数可以匹配。当存在多个参数时,传进去的值就区分不开了,这时可以考虑用Map,例如接口



public List findRoleByMap(Map<String, Object> parameter);


<select id="findRoleByMap" parameterType="map" resultType="role">

    SELECT id,name FROM t_role

    WHERE roleName=#{roleName}

    AND note=#{note}

<select>

```



(2) 使用@Param



很明显上面的缺点就在于可读性差,每次必须阅读他的键,才能明白其中的作用,并且不能限定其传递的数据类型,下面是使用@Param的情况,需要将接口改为



```

public List<Role> findRoleByAnnotation(@Param("roleName") String roleName, @Param("note") String note);

```



这样我们就可以直接传入对应的值了。



当然也可以使用Java Bean来传递多个参数,定义一个POJO



```

public class RoleParam {

    private String roleName;

    private String note;



## 最后

**码字不易,觉得有帮助的可以帮忙点个赞,让更多有需要的人看到**

又是一年求职季,在这里,我为各位准备了一套Java程序员精选高频面试笔试真题,来帮助大家攻下BAT的offer,题目范围从初级的Java基础到高级的分布式架构等等一系列的面试题和答案,用于给大家作为参考

**[CodeChina开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频】](https://codechina.csdn.net/m0_60958482/java-p7)**

以下是部分内容截图
``

public class RoleParam {

    private String roleName;

    private String note;



## 最后

**码字不易,觉得有帮助的可以帮忙点个赞,让更多有需要的人看到**

又是一年求职季,在这里,我为各位准备了一套Java程序员精选高频面试笔试真题,来帮助大家攻下BAT的offer,题目范围从初级的Java基础到高级的分布式架构等等一系列的面试题和答案,用于给大家作为参考

**[CodeChina开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频】](https://codechina.csdn.net/m0_60958482/java-p7)**

以下是部分内容截图
![架构面试专题及架构学习笔记导图.png](https://img-blog.csdnimg.cn/img_convert/6dbbf91a4f8248435183c221a03c2137.png)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值