MyBatis框架高级应用详解

た 入场券 2023-02-25 08:56 171阅读 0赞

文章目录

      • 一、ORM概述
      • 二、ORM映射
        • 2.1 MyBatis自动ORM失效
        • 2.2 解决方式一:列的别名
        • 2.3 解决方式二:结果映射
      • 三、MyBatis处理关联关系
        • 3.1 映射关系
        • 3.2 映射表分析
        • 3.3 映射关系应用
          • 3.3.1 标签说明
          • 3.3.2 一对一关系应用
          • 3.3.3 一对多关系应用
          • 3.3.4 多对多关系应用
      • 四、动态SQL
        • 4.1 动态SQL概述
        • 4.2 sql标签
        • 4.3 if标签
        • 4.4 where标签
        • 4.5 set标签
        • 4.6 trim标签
        • 4.7 foreach标签
      • 五、缓存
        • 5.1 缓存的重要性
        • 5.2 一级缓存
        • 5.3 二级缓存
        • 5.4 开启全局缓存
        • 5.5 指定Mapper缓存
        • 5.6 缓存清空并重新缓存
      • 六、Durid连接池
        • 6.1 Durid连接池概述
        • 6.2 不同连接池对比
          • 6.2.1 测试环境
          • 6.2.2 基准测试结果对比
          • 6.2.3 测试结论
        • 6.3 Durid连接的开发步骤
          • 6.3.1 引入依赖
          • 6.3.2 替换MyBatis中的默认数据源
          • 6.3.3 配置mybatis-config.xml
      • 七、分页插件(PageHelper)
        • 7.1 PageHelper概述
        • 7.2 官网
        • 7.3 PageHelper开发步骤
          • 7.3.1 引入依赖
          • 7.3.2 配置mybatis-config.xml
        • 7.4 PageInfo对象
        • 7.5 注意事项
        • 7.6 分页查询
          • 7.6.1 创建表
          • 7.6.2 实体类
          • 7.6.3 Dao层
          • 7.6.4 datasource
          • 7.6.5 Service层
          • 7.6.6 工具类
          • 7.6.7 controller
          • 7.6.8 Mapper.xml
          • 7.6.9 index.jsp
          • 7.6.10 pom.xml依赖
          • 7.6.11 各种配置文件
      • 八、MyBatis补充
        • 8.1 MyBatis注解开发
          • 8.1.1 查询
          • 8.1.2 删除
          • 8.1.3 修改
          • 8.1.4 插入
        • 8.2 $符号的应用场景
          • 8.2.1 $符号参数绑定
          • 8.2.2 $符号注入攻击
          • 8.2.3 避免使用$符号注入攻击
        • 9.3 MyBatis处理关联关系-嵌套查询(了解)
          • 9.3.1 主表查询
          • 9.3.2 级联调用
          • 9.3.3 延迟加载
          • mybatis-config.xml中开启延迟加载
          • 9.3.1 主表查询
          • 9.3.2 级联调用
          • 9.3.3 延迟加载
          • mybatis-config.xml中开启延迟加载

MyBatis
项目已托管到GitHub,大家可以去GitHub查看下载!并搜索关注微信公众号 码出Offer 领取各种学习资料!

一、ORM概述

对象关系映射(Object Relational Mapping,简称ORM)是通过使用描述对象和数据库之间映射的元数据,将面向对象语言程序中的对象自动持久化到关系数据库中。本质上就是将数据从一种形式转换到另外一种形式。

ORM

二、ORM映射

2.1 MyBatis自动ORM失效

MyBatis只能自动维护库表“列名”与“属性名”相同时的一一对应关系,二者不同时,无法自动ORM。












自动ORM失效
007

2.2 解决方式一:列的别名

在SQL中使用 as 为查询字段添加列别名,以匹配属性名。

  1. <mapper namespace="com.mylifes1110.dao.ManagerDao">
  2. <select id="selectManagerByIdAndPwd" resultType="com.mylifes1110.bean.Manager">
  3. SELECT mgr_id AS id , mgr_name AS username , mgr_pwd AS password
  4. FROM t_managers
  5. WHERE mgr_id = #{
  6. id} AND mgr_pwd = #{
  7. pwd}
  8. </select>
  9. </mapper>

2.3 解决方式二:结果映射

使用标签来映射,匹配列名与属性名。

注意: property设置属性,column设置别名

  1. <mapper namespace="com.mylifes1110.dao.ManagerDao">
  2. <!--定义resultMap标签-->
  3. <resultMap id="managerResultMap" type="com.mylifes1110.bean.Manager">
  4. <!--关联主键与列名-->
  5. <id property="id" column="mgr_id" />
  6. <!--关联属性与列名-->
  7. <result property="username" column="mgr_name" />
  8. <result property="password" column="mgr_pwd" />
  9. </resultMap>
  10. <!--使用resultMap作为ORM映射依据-->
  11. <select id="selectAllManagers" resultMap="managerResultMap">
  12. SELECT mgr_id , mgr_name , mgr_pwd
  13. FROM t_managers
  14. </select>
  15. </mapper>

三、MyBatis处理关联关系

3.1 映射关系

实体间的关系: 关联关系(拥有 has、属于 belong)

  • OneToOne: 一对一关系(Passenger— Passport)
  • OneToMany: 一对多关系(Employee — Department)
  • ManyToMany: 多对多关系(Student — Subject)

3.2 映射表分析












Table建立外键关系
008











Entity添加关系属性
009_2











Mapper中将属性与列名对应
010

3.3 映射关系应用

3.3.1 标签说明
  • 结果映射标签:

    • 双方均可建立关系属性,建立关系属性后,对应的Mapper文件中需使用完成多表映射
  • id映射标签:
  • 属性映射标签:
  • 映射单一对象标签:

    • 持有对象关系属性使用标签来完成映射,此标签是写在标签内
  • 映射集合对象标签:

    • 持有集合关系属性,使用标签来完成映射,此标签是写在标签内
  • 查询标签:

发表评论

表情:
评论列表 (有 0 条评论,171人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Mybatis 框架详解

    MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程、高级映射和事务等功能,是 Java Web 开发中最受欢迎的 ORM 框架之一。MyBatis 的特点是

    相关 mybatis框架——基本应用

    打个广告,帮朋友卖点东西,东西超便宜的哟【衣服鞋子等】,厂家直接出货,绝对低于市场价!!! 一般都比市场价便宜3—7折【都是牌子货】,如果您感兴趣,可以扫描屏幕下方的二维码,感