zoukankan      html  css  js  c++  java
  • Mybatis简单使用

    Mybatis 映射文件

    • #{id} ,该形式是采用数据库预处理形式传入查询参数,在SQL中以? 标示,是一个参数占位符

    • ${column} 字符串替换,Mybatis不会对传入的参数进行转义,缺点是有SQL注入的危险

    //常规查询
    @Select("select * from user where id = #{id}")
    User findById(@Param("id") long id);
    
    @Select("select * from user where name = #{name}")
    User findByName(@Param("name") String name);
    
    //Mybatis用${column}进行字符串替换,一句即可替代多句SQL查询语句
    @Select("select * from user where ${column} = #{value}")
    User findByColumn(@Param("column") String column, @Param("value") String value);
    
    • association 关联元素,处理有一个类型关系,一对一

      • 关联的select查询,有N+1 问题(你执行了一个单独的 SQL 语句来获取结果的一个列表(就是“+1”)对列表返回的每条记录,你执行一个 select 查询语句来为每条记录加载详细信息(就是“N”)),解决方案,延迟加载
      • 关联的嵌套查询,将查询结果封装在结果集(resultMap),在association标签体中嵌套resultMap。一对多 情况时,可一使用多个accociation标签,标签体内用columnPrefix属性区别不同的resultMap。从Mybatis3.2.3版本开始可以使用resultSets属性,处理这个问题
    • collection 集合

      • 集合的嵌套Select查询 ofType 属性用来将JavaBean字段的属性类型和集合存储类型区分开来
      • 集合的嵌套结果映射
      • 多结果集(ResultSet)

    缓存

    • 默认开启一级缓存,只对一个会话中的数据进行缓存
    • 开启二级缓存,SQL映射文件中添加<cache/> 标签

    动态SQL

    • if
    • choose (when, otherwise)
    • trim (where, set)
  • 相关阅读:
    fescar源码解析系列(一)之启动详解
    dubbo源码解析二 invoker链
    dubbo源码解析一
    CSP-S 2021 游记
    使用SpEL记录操作日志的详细信息
    Router 重定向和别名是什么?
    vue项目做seo(prerender-spa-plugin预渲染)
    vue3.0初体验有哪些实用新功能
    uniapp弹窗踩坑
    Spring boot application.properties 配置
  • 原文地址:https://www.cnblogs.com/luckyCoder/p/12732349.html
Copyright © 2011-2022 走看看