基于注解的Mybatis mapper 接口注意事项

基于注解的Mybatis mapper 接口功能没有mapper xml配置文件丰富,而且动态sql语句的灵活性不能和xml配置相比。

这里只说一下基于注解的动态sql注意事项:

  • Mybatis提供注解 @InsertProvider, @UpdateProvider,@DeleteProvider和 @SelectProvider来提供动态sql功能。
  • 提供动态sql的方法参数只有2种可能:无参数和一个参数。一个参数又分为2种情况:参数类型和mapper 接口方法参数相同,另一个就是Map<String,Object>类型参数。这也就是说,你的mapper接口方法参数很多很多,而Mybatis会把他们放到map里面。这样提供动态sql的方法中,可以从map里面获取。
  • 提供动态sql的方法和xml配置动态sql很大区别。提供动态sql的方法,大多是自己组装sql(Mybatis提供的org.apache.ibatis. jdbc.SQL 功能也是很有限制的),而xml配置的(mybatis有一套自己的动态sql语法)动态sql,Mybatis会解析,自己组装sql。
  • mapper 接口方法的参数如果有多个,需要@Param  注解(没有的话,Mybatis自动生成parm{i}等这样的名字),因为直到java8
    通过开启编译参数-parameters ,反射才会得到参数名称,所以Mybaitis只有通过方法参数注解获得。Spring MVC里面的方法参数是通过字节码操作的。
  • 尽量用xml配置结合mapper 接口。
  • 如果是动态创建表功能,要用${},字符串直接替换,而不是用#{}(Mybatis用typeHandlers赋值取值)
  • 如果Mybatis对应的java类型和数据库类型没有对应的映射关系(取值赋值),就只能通过自己写typeHandlers,给Mybatis配置实现。例如java8 的新增的时间类型Mybatis现在还没支持。
  • 建议大家多读几遍英文版的Java
    Persistence with MyBatis 3

发表在:http://www.oschina.net/question/2254200_235052

时间: 2024-09-30 09:04:27

基于注解的Mybatis mapper 接口注意事项的相关文章

SpringBoot入门之基于注解的Mybatis

今天学习下SpringBoot集成mybatis,集成mybatis一般有两种方式,一个是基于注解的一个是基于xml配置的.今天先了解下基于注解的mybatis集成. 一.引入依赖项 因为是mybatis嘛,肯定是要有mybatis相关的,同时用的是mysql,所以也需要引入mysql相关的. <!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter --> <d

myBatis mapper接口方法重载问题

在mybatis框架中,写dao层的mapper接口时,是不可以进行方法的重载的,下面是截图证明: 当mapper接口中有方法的重载时,会出现异常, 这是mapper接口中定义的两个方法,进行重载: 这是mapper.xml中进行的映射: 这是运行后出现的异常: 当不进行方法的重载时,即:每个方法都有唯一的命名时,在xml中进行映射后,就可以执行,不会出现异常. 所以mybatis中mapper.xml是不会准确映射到Java中的重载方法的.最好不要在mapper接口中使用方法重载. 原文地址:

mybatis mapper接口开发注意事项

Spring boot 学习六 spring 继承 mybatis (基于注解)

MyBatis提供了多个注解如:@InsertProvider,@UpdateProvider,@DeleteProvider和@SelectProvider,这些都是建立动态语言和让MyBatis执行这些语言使用基于注解的mybatis的方法,还是比较好用的. 一 首先是定义mapper, @ SelectProvider去声明类(CitySqlProvide)和方法名(findByState), public interface CityMapper { @SelectProvider(ty

05_MyBatis基于注解的开发

 要想开发基于注解的MyBatis应用.需要先写一个带有注解的接口. PersonDao.java的写法如下: package com.rl.dao; import java.util.List; import java.util.Map; import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.

Spring boot聚合项目mapper接口无法注入问题

错误异常 java.lang.IllegalStateException: Failed to load ApplicationContext at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:125) at org.springframework.test.context.

Mybatis 基于注解Mapper源码分析

目前Mybatis除了可以通过XML配置SQL外还可以通过注解的形式配置SQL,本文中主要介绍了Mybatis是如何处理注解SQL映射的,通过源码分析处理过程 XML配置 <configuration> <settings> <setting name="defaultExecutorType" value="SIMPLE"/> <setting name="useGeneratedKeys" value

SQL映射器Mapper接口(MyBatis)

SQL映射器Mapper接口 MyBatis基于代理机制,可以让我们无需再写Dao的实现.直接把以前的dao接口定义成符合规则的Mapper. 注意事项: 1.接口必须以Mapper结尾,名字是DomainMapper 2.mapper.xml文件要和Mapper接口建立关系,通过namespace:要能连接到Mapper接口   3.mapper.xml中写查询语句的标签的传入参数类型(parameterType).返回结果类型(resultType)必须和mapper接口中对应方法的传入参数

【Mybatis】基于注解实现增删查改和多参数列表查询

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 在[Mybatis]Mybatis入门概述及第一个Mybatis实例实现增删改查和[Mybatis]Mybatis接口编程方式实现增删改查演示了如何使用XML来操作Mybatis实现CRUD,但是大量的XML配置文件的编写是非常烦人的.因此Mybatis也提供了基于注解的配置方式,下面我们来演示一下使用接口加注解来实现CRUD的的例子. 一.创建数据库.数据表 use test; creat