上接mybatis基础(二)


开发规范:

1、在mapper.xml中namespace等于mapper接口地址

wKiom1YbXfqiAB9FAADW_XEdJ-k591.jpg

2、mapper.java接口中的方法名和mapper.xml中statement的id一致

3、mapper.java接口中的方法输入参数类型和mapper.xml中statement的parameterType指定的类型一致。

4、mapper.java接口中的方法返回值类型和mapper.xml中statement的resultType指定的类型一致。

wKioL1YbXkHjwOrIAACB9dYnwxg990.jpg

wKiom1YbXtWi7TqCAAJvWxqm82A263.jpg

wKioL1YbXxizYvJNAAGZOR-Qlu4699.jpg

9.properties属性

MyBatis 将按照下面的顺序来加载属性:

properties 元素体内定义的属性首先被读取。

然后会读取properties 元素中resource或 url 加载的属性,它会覆盖已读取的同名属性。

最后读取parameterType传递的属性,它会覆盖已读取的同名属性。

建议:

不要在properties元素体内添加任何属性值,只将属性值定义在properties文件中。

在properties文件中定义属性名要有一定的特殊性,如:XXXXX.XXXXX.XXXX

10.别名用法

在SqlMapConfig.xml中可以给类定义别名,如定义pojo类别名

wKiom1YbYV_w5o_EAAIdn6fKjHY726.jpg

11.定义包装类pojo

完成用户信息的综合查询,需要传入查询条件很复杂(可能包括用户信息、其它信息,比如商品、订单的)

针对上边需求,建议使用自定义的包装类型的pojo。在包装类型的pojo中将复杂的查询条件包装进去。

wKiom1YbYl-CF-w5AAKx0rUP1OI308.jpg

wKiom1YbY4CA0Zw3AAMjBUS4K_U614.jpg

12.输出映射resultType与resultMap

a.使用resultType进行输出映射,只有查询出来的列名和pojo中的属性名一致,该列才可以映射成功。

如果查询出来的列名和pojo中的属性名全部不一致,没有创建pojo对象。

只要查询出来的列名和pojo中的属性有一个一致,就会创建pojo对象。

b.如果查询出来的列名和pojo的属性名不一致,通过定义一个resultMap对列名和pojo属性名之间作一个映射关系。1、定义resultMap;2、使用resultMap作为statement的输出映射类型.

wKiom1YbY-yzzktIAALRg_IhMmk414.jpg

wKiom1YbZC7BC83MAALFCqRxiCA502.jpg

14.sql片段

将上边实现的动态sql判断代码块抽取出来,组成一个sql片段。其它的statement中就可以引用sql片段。

方便程序员进行开发。先定义sql片段:

wKiom1YbZHCj7B6wAAL6D_2wjCU460.jpg

15.foreach标签

向sql传递数组或List,mybatis使用foreach解析。

如SELECT * FROM USER WHERE id=1OR id=10 OR id=16

SELECT * FROM USER WHERE idIN(1,10,16)可以用此标签来遍历id的值

a.在输入参数类型中添加List<Integer>ids传入多个id

wKiom1YbZQGTkRyIAABq3hfo44I229.jpg

wKioL1YbZWKx-XncAAK8Bqrhukg251.jpg