首页 > 其他分享 >Mybatis常见知识点

Mybatis常见知识点

时间:2022-10-26 23:12:24浏览次数:87  
标签:知识点 -- 常见 替换 sql Mybatis id select

Mybatis常见知识点

${}和#{}有什么区别

${}是简单的字符串替换,属于静态文本替换,并且并不是在预处理的时候进行替换,实在编译的时候进行替换,可能会存在sql注入的风险。替换后的值不会自动加上单引号。

{}是占位符,是在预编译的时候进行替换成?占位符,执行前才会把参数设置进去,相当于jdbc的PreparedStatement,替换后的变量会自动加上单引号,可以防止sql注入。

-- ${}
-- 替换前
select * from t_user where id = ${id}
-- 替换后
select * from t_user where id = 1
-- #{}
-- 替换前
select * from t_user where id = #{id}
-- 替换后
select * from t_user where id = ?
-- 执行时
select * from t_user where id = '1'

Mybatis常见的标签

Mybatis常见的标签有<select><insert><update><delete><resultMap><sql><include><if><foreach><choose><when><otherwise><where><set>

Mybatis实体类属性名称和数据库表中字段名称不一致,解决方式

  1. 在sql查询语句中是as将数据库字段名称定义为实体类属性名称,保持两者一直,as可以省略。
  2. 定义<resultMap>, sql查询语句设置resultType为对应的<resultMap><resultMap>里面写实体类字段和数据库表中字段的映射关系。

Mybatis中分页的几种方式

  1. 直接传入分页参数,在sql中使用limit进行分页。例如:

    select * from t_users limit 0, 10
    
  2. 使用Mybatis中的RowBounds进行分页

    RowBounds需要传入offset和limit,该方式会把数据全部查询出来,然后进行处理,将offset之前的数据全部跳过,去除offset和limit之间的数据,属于逻辑分页。

  3. 使用Mybatis的分页插件,例如PageHelper

    PageHelper属于是物理分页,会在sql后面添加limit。

  4. 使用Mybatis提供的拦截器,在拦截器中拦截准备执行的sql,之后重新构造sql。

Mybatis获取自动生成的主键

  1. 数据库主键是自动生成的,可以使用useGeneratedKeys和keyProerty获取主键值

    <insert id="insertUser" useGeneratedKeys="true" keyProperty="id">
    
    </insert>
    
  2. 使用selectKey标签中的select LAST_INSERT_ID()获取主键

    keyProperty:是属性名

    order:BEFORE、AFTER,BEFORE是先获取主键,再执行insert,AFTER是先执行insert,再获取主键。

    <insert id="insertUser">
    	<selectKey keyProperty="id" resultType="String" order="BEFORE">
        select REPLACE(UUID(), '-', '')
      </selectKey>
    </insert>
    

关注微信公众号「平哥技术站」, 每日更新,在手机上阅读所有教程,随时随地都能学习。

原文链接:https://monkey.blog.xpyvip.top/archives/mybatis-chang-jian-zhi-shi-dian

标签:知识点,--,常见,替换,sql,Mybatis,id,select
From: https://www.cnblogs.com/aibianchengya/p/16830517.html

相关文章

  • 发现mybatisplus#Wrapper的一个坑
    什么坑?看如下demo代码:publicvoidgetOne(){LambdaQueryWrapper<SbhPlatOrder>wrappers=newLambdaQueryWrapper<>();wrappers.eq(SbhPlatOrd......
  • 面试(三)一点点沾边知识点
             ......
  • Springboot和mybatis-plus支持多数据源(多数据库)
    1、pom添加依赖<dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>3.5.1</version></de......
  • Java 常见数据类型
    数据类型基本类型数值类型整数byte:1个字节short:2个字节int:4个字节long:8个字节浮点float:4个字节double:8个字节字符char:2个字节Boolean类型:占1位......
  • 利用MVC三层架构做一个案例(利用MyBatis实现增删改查)
    查询所有利用昨天学习到的MyBatis知识,再加上servlet页面的跳转,demo1.jspUserMapper.java(接口)servletDemo.javaMyBatisDemo.java(位于service层)index.jsp显......
  • 常见k8s面试
    一、自我介绍现住址、二、k8s网络这方面是怎么处理的。k8s中的pod是有生命周期的,也就是说,它可以在任何时间,死在任何node上。而新生的podip跟之前的pod的ip基......
  • 使用Python时常见的9个错误
    通过应用软件工程最佳实践,可以交付质量更好数据科学的项目。更好的质量可能是更少的错误、可靠的结果和更高的编码效率。最佳实践都是从错误中总结出来的,所以这里我们总结了......
  • MyBatis学习笔记之Mapper文件的foreach标签详解
    0x00概述MyBatis的Mapper文件的foreach标签用来迭代用户传递过来的Lise或者Array,让后根据迭代来拼凑或者批量处理数据。如:使用foreach来拼接in子语句。 在学习MyBatis......
  • 常见键盘操作
    fromseleniumimportwebdriverfromtimeimportsleep#导入对键盘操作的类fromselenium.webdriver.common.keysimportKeysdriver=webdriver.Firefox()driver.g......
  • springboot mybatis-plus dao层调用异常 Invalid bound statement (not found)
    记录一次打包事故。  和同事共同开发项目。开发时访问都是ok。打包后再访问一直报org.apache.ibatis.binding.BindingException:Invalidboundstatement(notfound......