mybatis--3 CRUD续

#{}:更丰富的用法:
规定参数的一些规则:
javaType、jdbcType、 mode (存储过程)、numericScale、resultMap、typeHandler、 jdbcTypeName、 expression (未来准备支持的功能) ;
jdbcType通常需要在某种特定的条件下被设置:
在我们数据为null的时候,有些数据库可能不能识别mybatis对nu11的默认处理。比如Oracle (报错) ;
JdbcType OTHER: 无效的类型;因为mybatis对所有的null都映射的是原生Jdbc的OTHER类型,由于全局配置中: jdbcTypeForNull=OTHER; oracle不支持;

两种办法
1、#{email,jdbcType=OTHER};


2、jdbcTypeForNull=NULL
<setting name= "jdbcTypeForNull" value="NULL"/>

返回值为map,List类型:

多条记录封装一个map: Map< Integer , Employee> :键是这条记录的主键,值是记录封装后的javaBean
告诉mybatis封装这个map的时候使用哪个属性作为主键

自定义某个javaBean的封装规则:type:自定义规则的Java类型。id:唯一id方便引用

联合查询:级联属性封装结果集

第二种方法:
association可以指定联合的javaBean对象
property="dept";指定哪个属性是联合的对象
javaType:指定这个属性对象的类型[不能省略]

association定义关联对象的封装规则
select :表明当前属性是调用select指定的方法查出的结果
column:指定将哪- -列的值传给这个方法
流程:使用select指定的方法(传入column指定的这列参数的值)查出对象,并封装给property

可以使用延迟加载:
Employee==>Dept:
我们每次查询Employee对象的时候,都将一起查询出来。
部门信息在我们使用的时候再去查询;
分段查询的基础之上加上两个配置:

扩展:多列的值传递过去:
将多列的值封装map传递;
column= "{key1=col umn1, key2=column2}"
fetchType="lazy":表示使用延迟加载:
- lazy:延迟
- eager:立即

<discriminator javaType= ""></discriminator>
鉴别器: mybatis可以使用discriminator判断某列的值,然后根据某列的值改变封装行为封装Employee:
如果查出的是女生:就把部( ]信息查询出来,否则不查询:
如果是男生,把last_ name这列的值赋值给email ;

if标签:

遇见特殊符号应该去写转义字符,
&&:

猜你喜欢

转载自blog.csdn.net/XiaoXiao_Lin/article/details/109585519
今日推荐