动态sql

1.动态sql-where条件

1.1业务需求

需求:根据对象中不为null的数据,充当where条件,进行查询

用<where></where>标签去除语句中多余的and

2.动态sql-set条件

2.1用<set></set>标签去除语句中多余的逗号

3.动态Sql-choose(不想使用所有条件查询)、when(相当于if)、otherwise(相当于else)







3.1 业务需求说明

说明: 如果不想使用所有的条件可以使用choose 类似于java中的switch 语法
如果name有值,则按照name查询,否则按照sex查询数据.

4.resultMap介绍







4.1需求说明

4.2当表中的字段与POJO中的属性不能完全匹配时, 则需要使用resultMap映射.

4.3一张表对应一个pojo

4.4表中字段的名称与对象中的属性不一致,结果:数据不能映射.

4.5关于返回值属性说明

1.reusltType:只能支持字段名称属性的名称一致才能自动映射

2.resultMap: 可以支持 任意类型的映射

5. Mybatis 关联关系





5.1. 常见关联关系

1.一对一 一个员工对应一个部门
2.一对多 一个部门对应多个员工
3.多对多 一个学生对应多个老师, 一个老师对应多个学生





5.2 一对一封装





5.2.1 表结构封装

规则:

标签:<association>一对一关联封装

      必须指定属性的类型  javaType属性

autoMapping="true" 自动映射

1.如果进行单表关联操作: 一般使用resultType

2.如果进行多表关联操作:一般使用resultMap

3.如果是多表关联操作,则不允许出现重名字段.否则映射失败.

 关于自动映射规则:
            1.没有关联映射时: 如果属性和字段同名,则可以省略不写.
            2.如果有关联映射: 则需要添加自动映射的开关autoMapping="true"
                           该注解只对当前对象有效 如果有多个对象,则需要添加多次

        准则:涉及到关联封装,必须添加autoMapping="true"

知识点:

        1.一对一关联封装 association标签

        2.必须指定属性的类型 javaType属性         

        3.autoMapping="true" 自动映射

6.一对多封装

标签:        <conllection> 一对多关联封装标签

        ofType:一对多封装,固定搭配 ofType=" "

1.一个部门下对应多个员工,主对象是Dept

7.

8. 总结
思想: 面向对象方式!!!
1.动态Sql: 不清楚用户到底传递了什么数据!!!
1.动态查询 2.动态更新 3.分支结构

关联关系
一对一/一对多/多对多(双向一对多)

resultMap 万能的数据封装的结构体系
一对一: association property=“dept” javaType=“Dept”
一对多: collection property=“emps” ofType=“Emp”

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值