• Mtbatis------基础应用


    MyBatis

    Mybatis 配置文件

    模板

    
    
    
    
    
        
        
        
        
            
            
            
            
        
    
        
        
            
    
            
            
        
    
    
        
            
                
                
            
        
    
    
        
            
                
                
                    
                    
                    
                    
                
            
        
    
        
            
            
    
            
            
            
            
            
            
            
        
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74

    XML 映射器

    • sql : 可被其它语句引用的可重用语句块
    • insert : 映射插入语句
    • update : 映射更新语句
    • delete : 映射删除语句
    • select : 映射查询语句

    sql

    • SQL片段 是通过 sql 标签定义的, 通过 include 标签 引入 对应的 SQL片段
    
    
        id,  username, password, create_time as createTime
    
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    insert

    • 第一种 插入并获取主键
    
        insert into tb_user(username, password, create_time) values (#{username}, md5(#{password}), now())
    
    
    • 1
    • 2
    • 3
    • 第二种 插入并获取主键
     
        insert into tb_goods(goods_name, goods_price, create_time) values
             (#{goodsName}, #{goodsPrice}, now())
    
        
            select last_insert_id()
        
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    update

    
        update tb_user set
        username = #{username} ,
        password = md5(#{password}) ,
        create_time = #{createTime} ,
        update_time = now()
        where id = #{id}
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    delete

    
        delete from tb_user where id = #{id}  
    
    
    • 1
    • 2
    • 3

    select

    • resultType 来定义返回的结果类型
    
    
    
    • 1
    • 2
    • 3
    • 4
    • ResultMap 高级结果映射
    • 允许用户 定义 查询的字段名 和 实体 属性的对应的关系
    
        
        
        
        
        
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • ResultMap 高级结果映射 返回一个对象
    
        
        
        
        
        
        
            
            
            
            
        
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • ResultMap 高级结果映射 返回一个集合
    
        
        
        
        
        
        
            
            
            
            
        
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    动态 SQL

    • if
    
        update tb_user set
            
                username = #{username} ,
            
            
                password = md5(#{password}) ,
            
            
                create_time = #{createTime} ,
            
            update_time = now()
        where id = #{id}
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • choose、when、otherwise
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • trim、where、set
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • foreach
     
        insert into tb_user(username, password, create_time) values
    
        
        
            ( #{user.username} , md5(#{user.password}) ,  now() )
        
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • bind

    模糊查询 ,需要通过 concat 函数 拼接 % ,
    在 MySQL数据库中,如果查询的条件 使用了 函数,那么 会导致索引失效
    在 mybatis 中, 可以 通过 bind 标签, 来绑定变量 ,
    name 是设置的变量名, value 是 要设置的变量值

    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    MyBatis 中 ${} 和 #{} 的区别

    ‘#{}’ 是一个占位符 ,主要应用于 SQL中 值 的占位, 在执行的时候,会被自定替换成 ? ,
    在底层进行拼接的时候,会自动 在值的前后 添加引号,也可以对值进行转义, 可以用来防止SQL注入

    ‘${}’ 是一个占位符, 主要应用于 SQL中的 结构上(非值), 在执行的时候,不会被替换成 ?
    会将值 原义 输出,作为SQL结构的一部分

    ‘${}’ 不能滥用,因为会产生SQL注入的风险, 能用 #{} 就绝对不要使用 ${} 进行占位

    缓存

    • 一级缓存默认开启 不可关闭
    • 启用二级缓存 , 会对映射文件中所有的 select 添加缓存效果,
    • insert, update, delete 会更新缓存
    • 在 select 标签上 useCache 默认是 true , flushCache 默认是 false
    • 在 insert , update, delete 标签上, useCache 默认是false, flushCache 默认是 true
    • useCache , flushCache 要想生效,必须 启用 二级缓存
  • 相关阅读:
    docker 安装 nessus新版、awvs15-简单更快捷
    el-table 设置固定宽度弹框
    关于MySQL8.0移除PASSWORD()函数
    NFT 交易市场的后起之秀要如何超越 OpenSea?
    【Git】Git 基础
    mongodb
    opencv改变像素点的颜色---------c++
    makefile记录
    bp神经网络预测模型优点,bp人工神经网络模型
    织梦翻译插件-织梦自动采集翻译插件
  • 原文地址:https://blog.csdn.net/weixin_52953038/article/details/128122961