ICode9

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

MyBatis常用的标签和注解

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

标签:语句 实体类 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

专注分享技术,共同学习,共同进步。侵权联系[admin#icode9.com]

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

ICode9版权所有