ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

MyBatis常用的标签和注解

2021-07-22 11:34:58  阅读:188  来源: 互联网

标签:语句 实体类 name 标签 查询 MyBatis 注解 属性


常用标签

1.select:用于编写查询语句用的标签

  • id:表示当前<select>标签的唯一标识
  • parameterType:指定查询限制条件的输入类型,一般使用#{ }实现的是向prepareStatement中的预处理语句中设置参数值
  • resultType:指定查询返回结果的输出类型,如果返回的结果是一个实体类,必须要求实体类的属性和表的字段名称相同
  • resultMap:也是一个输出类型,配合<resultMap>标签使用
  • flushCache:设置查询的时候是否清空缓存,默认为false
  • useCache:将查询结果放入缓存中,默认为true
  • timeout:设置查询返回结果的最大响应时间
  • fetchSize:每次批量返回的结果行数。默认不设置
  • statementType:STATEMENT、PREPARED或CALLABLE的一种,这会让MyBatis使用选择Statement、PreparedStatement或CallableStatement。默认值:PREPARED
  • resultSetType:设置游标FORWARD_ONLY、SCROLL_SENSITIVE、SCROLL_INSENSITIVE中的一种。默认不设置

2.resultMap:用于解决实体类中属性和表字段名不相同的问题

  • id:表示当前<resultMap>标签的唯一标识
  • result:定义表字段和实体类属性的对应关系
  • property:记录实体类的属性
  • column:记录表的字段名称

3.insert – 映射插入语句

4.update – 映射更新语句

5.delete – 映射删除语句

6.if

1 <select id="findUserByName"
2      resultType="User">
3   SELECT * FROM User
4   WHERE valid = 1
5   <if test="name!= null">
6     AND name like #{name}
7   </if>
8 </select>

 

7.choose (when, otherwise)(类似于switch)

 1 <select id="findUser"
 2      resultType="User">
 3   SELECT * FROM User WHERE age = 26
 4   <choose>
 5     <when test="name!= null">
 6       AND name like #{name}
 7     </when>
 8     <when test="sex!= null ">
 9       AND sex like #{sex}
10     </when>
11     <otherwise>
12       AND valid = 1
13     </otherwise>
14   </choose>
15 </select>

8.trim (where, set)

1 //prefixOverrides 属性会忽略通过管道分隔的文本序列(注意此例中的空格也是必要的)。它的作用是移除所有指定在 prefixOverrides 属性中的内容,并且插入 prefix 属性中指定的内容。
2 <trim prefix="WHERE" prefixOverrides="AND |OR ">
3   ...
4 </trim>
5  
6 //set 元素会动态前置 SET 关键字,同时也会删掉无关的逗号
7 <trim prefix="SET" suffixOverrides=",">
8   ...
9 </trim>

9.foreach

 1 //collection="要遍历的集合" 
 2 //item = "可以在元素体内使用的集合项"
 3 //index = "索引"
 4 //open = "开始字符串"
 5 //separator = "分隔符"
 6 //close = "结束字符串"
 7 <select id="selectUser" resultType="User">
 8   SELECT *
 9   FROM User
10   WHERE ID in
11   <foreach item="item" index="index" collection="list"
12       open="(" separator="," close=")">
13         #{item}
14   </foreach>
15 </select>

10.bind

1 //bind可以创建一个变量并将其绑定到上下文
2 <select id="selectUser" resultType="user">
3   <bind name="pattern" value="'%' + _parameter.getTitle() + '%'" />
4   SELECT * FROM User
5   WHERE name LIKE #{pattern}
6 </select>

常见注解

@MapperScan

该注解主要是扫描某个包目录下的Mapper,将Mapper接口类交给Spring进行管理。

 1 package com.tcc;
 2 
 3 import org.mybatis.spring.annotation.MapperScan;
 4 @MapperScan
 5 public class TccApplication {
 6 
 7     public static void main(String[] args) {
 8         SpringApplication.run(TccApplication.class, args);
 9     }
10 
11 }

其实,从名字上就能看出,是用来扫描的Mapper的。

扫描包路径可以是一个或者多个,也可以在路径中可以使用 * 作为通配符对包名进行匹配 。

@Param

作为Dao层的注解,作用是用于传递参数,从而可以与SQL中的的字段名相对应。使用方法:

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

@Autowired

顾名思义,就是自动装配,其作用是为了消除代码Java代码里面的getter/setter与bean属性中的property。

@Service

此注注解属于业务逻辑层,service或者manager层
默认按照名称进行装配,如果名称可以通过name属性指定,如果没有name属性,注解写在字段上时,默认去字段名进行查找,如果注解写在setter方法上,默认按照方法属性名称进行装配。当找不到匹配的bean时,才按照类型进行装配,如果name名称一旦指定就会按照名称进行装配.

@Insert

新增:@Insert("sql语句")

@Update

更新:@Update("sql语句")

@Delete

删除:@Delete("sql语句")

@Select

查询:@Select("sql语句")

@Result

映射查询结果集到实体类属性

@Results

可以与@Result 一起使用,封装多个结果集

@ResultMap

引用@Results 定义的封装

@One

一对一结果集封装

@Many

一对多结果集封装

@CacheNamespace

实现注解二级缓存的使用

@Options

能够设置缓存时间,能够为对象生成自增的key

@Controller

用于指示Spring类的实例是一个控制器。Controller接口的实现类只能处理一个单一请求动作,而@Controller注解的控制器可以支持同时处理多个请求动作,更加灵活。

@RequestMapping

使用 @RequestMapping 来映射请求,也就是通过它来指定控制器可以处理哪些URL请求, 可以在方法和类的声明中使用。

@ResponseBody

用于方便json与string,实体对象之间转换的一个注解。

标签:语句,实体类,name,标签,查询,MyBatis,注解,属性
来源: https://www.cnblogs.com/xlaq/p/15043302.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有