MyBatis 笔记(二)

一、全局配置文件其它配置
1.1 properties数据库文件配置
  1. 概要:在之前学习 JDBC 的时候,配置数据库相关信息如用户名,密码等这些数据就可以单独的放置到一个 db.properties 中,然后在配置文件中调用这个文件中的数据。那么同样的,在全局配置文件中,对于一些相关信息,也可以使用这种方式
  2. 首先,在根目录下创建 db.properties 文件,并以 key = value 的方式录入一些值
    在这里插入图片描述
  3. 在全局配置文件中,获取这个 db.properties 文件,然后,取得其中的键值对
    在这里插入图片描述
1.2 为映射文件中入参,返回参数所用的自定义类型定义别名
  1. 常规情况下,在映射文件中,我们编写一个SQL,其所用到的入参 or 返回参数类型如果非系统自带,是我们自定义的,则需要引用这个实体类的路径,如图所示:在这里插入图片描述
  2. 为了简化这些参数类型的引用,我们考虑在全局配置文件中,对我们可能会用到的实体类起一个别名,从而在映射文件中直接使用别名来代替路径,减少代码,同事也便于理解。如图所示
    在这里插入图片描述
  3. 在映射文件中,如果使用到这个实体类,无论是作为传入参数类型还是返回参数类型,都可以用别名来代替,如图所示:
    在这里插入图片描述
  4. 但是对于上面的情况,我们实际项目中,可能会用到的实体类往往很多,如果对每一个实体类都起别名,则增加了工作量,因此考虑批量起别名,直接对某个包下所有实体类起别名,别名为原名的首字母小写(原名叫:User ,别名:user),在映射文件中使用时候直接写别名即可(首字母小写)
    那么同样需要在全局配置文件中进行配置,如图所示:
    在这里插入图片描述
  5. Mybits自带的别名种类
    在这里插入图片描述
1.3 全局配置文件配置映射文件路径选择(Mapper)
  1. 使用相对路径如:

     < mapper resource="sqlmap/User.xml" />
    
  2. 使用绝对路径如:

     < mapper url="file:///D:\workspace_spingmvc\mybatis_01\config\sqlmap\User.xml" />
    
  3. 使用mapper接口的路径如:

     < mapper class="cn.gyf.mybatis.mapper.UserMapper"/>
     这种配置 xml 文件而是直接配置接口的方法需要在调用的时候加上注解,过于麻烦,冗余,不常使用
    
  4. 配置指定路径下所有映射文件(此种方法要求mapper接口和mapper映射文件要名称相同,且放到同一个目录下)

     < package name="cn.gyf.mybatis.mapper"/>
    
  5. 示例图
    在这里插入图片描述

二、映射文件其他配置
2.1 概要
  1. 关于映射文件,主要包括传入参数类型与返回参书类型的选择
  2. 在映射文件中,涉及到的自定义的参数类型,可以使用别名的方式来声明,上文已经写过。
2.2 输入映射ParameterType
  1. 传递简单类型
    在这里插入图片描述
  2. 传递 POJO 类型(非系统自带的自定义类型)
    在这里插入图片描述
  3. 传递 POJO 包装类型
    1. 开发中通过pojo传递查询条件 ,查询条件是综合的查询条件,不仅包括用户查询条件还包括其它的查询条件(比如将用户购买商品信息也作为查询条件),这时可以使用包装对象传递输入参数

    2. 综合查询用户信息,需要传入查询条件复杂,比如(用户信息、订单信息、商品信息)。
      vo:键值对对象,相对于kv
      po:persist object 持久化对象
      pojo:简单的java对象
      entity:实体

    3. 例如SQL语句中的关联查询,使用到了多个表中的不同属性,最终组合生成目标数据

    4. 此时,因为传入参数类型来自于不同的对象(类型中),而接收时候不能写多个 ParameterType 。因此考虑将需要传递进来的不同的对象组合成一个新的对象

    5. 而 ParameterType 中只需要传递这个新的对象,然后在 SQL 语句中取组成这个新的对象的对象的属性(取了两次值)

    6. 类似于前端 EL 表达式中,取嵌套值

    7. 图片示例
      在这里插入图片描述

  4. 传递 Map 类型
    1. 同样的,传递过来的数据可能不是一个,而是多个(不同于不是一类,这里是同一类型,多个数量共同组成一个传递来的对象),此时,就需要把这些同一类型,不同数量的数据使用 Map 组合起来,整体作为输入映射 ParameterType 接收的参数
    2. 修改UserMapper 增加传递 Map 类型的方法
      在这里插入图片描述
    3. 修改UserMapper.xml 中 ParameterType 接收的类型
      在这里插入图片描述
    4. 测试
      在这里插入图片描述
2.3 输出映射 resultType/resultMap
  1. 输出简单类型,返回值是一个基础的类型,例如 int
    在这里插入图片描述

  2. 输出值类型是 POJO 单个对象(自定义类型)
    在这里插入图片描述
    在这里插入图片描述

  3. 输出值类型是 POJO 列表(与返回 POJO 单个对象映射相同,不同的是接收时候需要用 List<> 接收)
    在这里插入图片描述
    在这里插入图片描述

  4. 对于 2 和 3 的总结

    1. 输出单个pojo对象和pojo列表时,mapper映射文件中的resultType的类型是一样的,mapper接口的方法返回值不同。
    2. 同样的mapper映射文件,返回单个对象和对象列表时,mapper接口在生成动态代理的时候,会根据返回值的类型,决定调用selectOne方法还是selectList方法
  5. 输出 resultMap 类型

    1. 如果查询出来的列名和属性名不一致,通过定义一个resultMap将列名和pojo属性名之间作一个映射关系
    2. 修改 UserMapper
      在这里插入图片描述
    3. 修改 UserMapper.xml
      在这里插入图片描述
    4. 测试
      在这里插入图片描述
三、笔记内容
3.1 对于全局配置文件
  1. properties数据库文件配置
  2. 定义别名 typeAliases
  3. 配置映射文件路径选择
3.2 对于全局配置文件
  1. 输入映射ParameterType
    1. 简单类型
    2. POJO对象
    3. POJO包装对象
    4. Map对象
  2. 输出映射 resultType/resultMap
    1. 简单类型
    2. POJO单个对象
    3. POJO列表
    4. resultMap
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值