Mybatis的各个标签详解

        目前比较流行的持久层框架,hibernate,mybatis,Spring Data等,hibernate一般还是比较老的项目会使用,spring Data还不是很广泛,只有mybatis是目前使用比较多,也是被经常问的,如果你说你用过mybatis,最喜欢被问两个问题:1.mybatis有哪些标签,2.#{}和${}有什么区别;

     首先说下最最常用的,来说:(官方文档在这里)

Mybatis的各个标签详解_第1张图片

图1-1

虽然比较多,但实际上常用的只有前四个,

id:在命名空间唯一的标识,可以被用来引用这条语句(实际使用时保证id的值与mapper.java 中方法名一致)

parameterType:不是必须的,用来表示传入的参数类型,可以是Integer,String等java的数据类型,也可以是自定义的Person,User等数据类型,还可以是List,Map集合等

resultType:这个和parameterType相对,这个表示返回的数据类型,同样不是必须的,也同样可以是Integer,String,还可以是自定义类型Person,User或者是List和Map集合,

resultMap:这个就比较独特了,一般在自定义映射的时候会用到,与标签合用,如果你返回的数据不是Integer,也不是自定义的Person,也不是List集合,这里就可以使用自定义返回的类型,并将resultMap的值设置为标签的id,(此属性不能和resultType同时存在)

例如:(不过这里最终映射的还是自定义类,只是显示下用法)

Mybatis的各个标签详解_第2张图片

图1-2

下面说说另外三个增删改:

增删改比起select更加简单些,因为它默认返回结果类型是Integer,意思就是返回操作了几行数据。具体参数如下:

Mybatis的各个标签详解_第3张图片

常用的只有id和parameterType,表示的意思也和select中两个参数值意义相同。

下面说说一些辅助类型的标签,包括,,,,

Mybatis的各个标签详解_第4张图片

从上面的例子中可以很容易看出标签的作用,代替一小段sql,经常用在select查询的字段上:查询的方法很多,用标签可以很容易的简化多次要查询写的sql字段名;

,三种标签一般都是一起出现的的。

图1-2已经展示的用法,其中id与result区别是:id 元素表示的结果将是对象的标识属性,这会在比较对象实例时用到。 这样可以提高整体的性能,尤其是进行缓存和嵌套结果映射(也就是连接映射)的时候。如果你不理解这段话,那就直接记住,id的时候使用id标签,其他使用result标签。

下面直接来说说foreach标签,他是个循环标签

foreach元素的属性主要有 item,index,collection,open,separator,close。

item表示集合中每一个元素进行迭代时的别名,

index指 定一个名字,用于表示在迭代过程中,每次迭代到的位置,

collection表示传入的集合

open表示该语句以什么开始,

separator表示在每次进行迭代之间以什么符号作为分隔 符,

close表示以什么结束。

不过要注意的是:

1. 如果传入的是单参数且参数类型是一个List的时候,collection属性值为list
2. 如果传入的是单参数且参数类型是一个array数组的时候,collection的属性值为array
3. 如果传入的参数是多个的时候,我们就需要把它们封装成一个Map了,当然单参数也可
举例:

单参数List的类型:

 

单参数array数组的类型:

      

把参数封装成Map的类型:

 

 

你可能感兴趣的:(java)