详解SpringBoot快速整合Mybatis(去XML化+注解进阶)

  

序言:使用MyBatis3提供的注解可以逐步取代XML,例如使用@Select注解直接编写SQL完成数据查询,使用@SelectProvider高级注解还可以编写动态SQL,以应对复杂的业务需求。
  

  

  

MyBatis主要提供了以下CRUD注解:

  
      <李> @Select李   <李> @Insert李   <李> @Update李   <李> @Delete李   
  

增删改查占据了绝大部分的业务操作,掌握这些基础注解的使用是很必要的。例如下面这段代码无需XML即可完成数据查询:

        @Mapper   公共接口usermap {   @Select (“select * from t_user”)   List列表();   }      

使用过Hibernate的同学可能会好奇,这里为什么没有配置映射关系也能完成属性注入?在传统项目使用过Mybatis的童鞋可能很会就能反应过来,是因为在配置文件中开启了全局驼峰映射,SpringBoot中同样能够做的到,并且更为简单快捷。

  

虽然开启了全局驼峰映射,但你可能还会质疑,如果不符合下划线转驼峰规则的字段,拿查询回来的实体对象属性将获取为零,比如上述用户对象属性mobileNum和对应的数据库字段phoneNum,则查询结果为:

        (   {   “标识”:“1”,   “用户名”:“管理”,   “密码”:“管理”,   “mobileNum”: null   },   {   “标识”:“2”,   “用户名”:“根”,   “密码”:“根”,   “mobileNum”: null   }   ]   之前      

为了解决对象属性和字段驼峰不一致的问题,我们可以使用映射注解@Results来指定映射关系。

  

  

Mybatis主要提供这些映射注解:

  
      <李> @Results用于填写结果集的多个字段的映射关系。   <李> @Result用于填写结果集的单个字段的映射关系。   <李> @ResultMap根据ID关联XML里面& lt; resultMap>。   
  

例如上面列表的方法,我们可以在查询SQL的基础上,指定返回的结果集的映射关系,其中属性表示实体对象的属性名,表列示对应的数据库字段名。

        @Results ({   @Result(属性=氨晔丁?列=癠SER_ID”),   @Result(属性=坝没?列=坝没?,   @Result(属性=懊苈搿?列=懊苈搿?,   @Result(属性=癿obileNum”,列=癙HONE_NUM”)   })   @Select (“select * from t_user”)   List列出 ();      ,

查询结果如下:

        (   {   “标识”:“1”,   “用户名”:“管理”,   “密码”:“管理”,   “mobileNum”:“15011791234”   },   {   “标识”:“2”,   “用户名”:“根”,   “密码”:“根”,   “mobileNum”:“18812342017”   }   )      

为了方便演示和免除手工编写映射关系的烦恼,这里提供了一个快速生成映射结果集的方法,具体内容如下:

     /* *   * 1。用于获取结果集的映射关系   */公共静态字符串getResultsStr(类起源){   StringBuilder StringBuilder=new StringBuilder ();   stringBuilder.append (“@Results ({\ n”);   (字段字段:origin.getDeclaredFields ()) {   字符串属性=field.getName ();//映射关系:对象属性(驼峰)→数据库字段(下划线)   字符串列=new PropertyNamingStrategy.SnakeCaseStrategy () .translate (field.getName ()) .toUpperCase ();   stringBuilder.append(字符串。格式(“@Result(属性=\“% s \”,列=\ " % s \ "), \ n”,财产,列));   }   stringBuilder.append (}));   返回stringBuilder.toString ();   }   之前      

在当前主方法执行效果如下:然后我们将控制台这段打印信息复制到接口方法上即可。

  

详解SpringBoot快速整合Mybatis(去XML化+注解进阶)

  

  

MyBatis-3主要提供了以下CRUD的高级注解:

  
      <李> @SelectProvider李   <李> @InsertProvider李   <李> @UpdateProvider李   <李> @DeleteProvider李   
  

见名知意,这些高级注解主要用于动态SQL,这里以@SelectProvider为例,主要包含两个注解属性,其中类型表示工具类,方法表示工具类的某个方法,用于返回具体的SQL。

        @Mapper   公共接口usermap {   @SelectProvider(类型=UserSqlProvider。类,方法=" list222”)   List

详解SpringBoot快速整合Mybatis(去XML化+注解进阶)