零基础学习【Mybatis】这一篇就够了

查询

resultType使用

当数据库返回的结果集中的字段和实体类中的属性名一一对应时, resultType可以自动将结果封装到实体中

在这里插入图片描述

resultMap使用

当数据库返回的结果集中的字段和实体类中的属性名存在不对应情况时,可以使用 resultMap 自定义映射关系

在这里插入图片描述

面试题: resultType和resultMap使用区别

单条件查询

在这里插入图片描述

多条件查询

在这里插入图片描述

模糊查询

在这里插入图片描述

面试题:#和$的区别

  • #表示占位符, 相当于JDBC中的?, 底层工作的是PreparedStetement对象, SQL只编译一次, 而且没有SQL注入问题
  • $ 表示字符串拼接, 底层工作的是Statement对象, 每次SQL都会重新编译, 而且存在SQL注入问题

返回主键

向数据库保存一个用户后, 然后在控制台记录下此用户的主键值(id)

在这里插入图片描述

动态SQL

在Mybatis中,动态SQL是通过下面几个标签来实现的:

  • if,choose 用于条件判断
  • where,set 用于格式控制
  • foreach 用于循环遍历

if

在这里插入图片描述

  • if标签用于单分支条件判断, 相当于java中的if关键字
  • where标签作用:
    1. 当where代码块中的条件都不成立的时候, where代码块不生效
    2. 当where代码块中的条件至少有一个成立的时候
      在代码块之前加入一个where关键字
      当代码块以and | or开头的时候,它会帮你去掉第一个and | or

在这里插入图片描述

choose

在这里插入图片描述

  • choose 用于包含多个条件
  • when 用于编写某个条件
  • otherwise所有的when都判断失败时,进入此分支

在这里插入图片描述

set

  • set标签的作用:
    1. 在代码块之前加入一个set关键字
    2. 删除掉代码块中的最后一个,
    3. set代码块中至少要有一个条件是成立

在这里插入图片描述

foreach

  • foreach 循环遍历
    collection=“collection” 指定要遍历的集合或者数组
    item=“item” 指定临时变量
    separator=“,” 指定分隔符
    open=“(” 指定开始字符
    close=“)” 指定结束字符

  • collection会根据传入参数的类型不同而采用不同的值
    集合—collection
    数组—array
    实体—实体的属性

在这里插入图片描述

sql片段

sql片段的作用是将代码中重复的sql,提取出来达到复用的目的

  • 定义SQL片段: <sql id="selectUser"></sql>
  • 引用SQL片段: <include refid="selectUser"></include>

在这里插入图片描述

配置文件

  • sqlMapConfig.xml 此文件中的标签有严格的顺序要求, 可以省略一部分, 但是不能乱序
  • 主要选项
    properties: 引入外部的properties文件
    typeAlias: 给映射文件中实体类起别名
    environments: 用于配置数据库连接信息和事务管理器
    mappers: 用于引入映射文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

    <!--引入一个properties的配置文件-->
    <properties resource="jdbc.properties" />

    <!--别名: 应用在映射文件中-->
    <typeAliases>
        <!--type 指定原始类型  alias 指定别名-->
        <!--<typeAlias type="com.itheima.domain.User" alias="user" />-->
        <!--指定一个包名: 只要是在这个包之下的类,都会自动产生一个别名, 规则就是类名首字母消息-->
        <package name="com.itheima.domain"/>
    </typeAliases>

    <!--
        环境: environments  可以配置多个数据库配置
        default 用于指定使用哪个环境
    -->
    <environments default="development">
        <!--配置开发环境-->
        <environment id="development">
            <!--事务管理器-->
            <transactionManager type="JDBC"/>

            <!--数据源-->
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>

        <!--配置测试环境-->
        <environment id="test">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="测试驱动"/>
                <property name="url" value="测试数据库连接"/>
                <property name="username" value="测试用户名"/>
                <property name="password" value="测试密码"/>
            </dataSource>
        </environment>
    </environments>

    <!--导入sql映射文件-->
    <mappers>
        <!--方式1: 直接导入映射文件(了解)-->
        <!--<mapper resource="mappers/UserMapper.xml"/>-->
        <!--方式2: 写接口路径-->
        <!--<mapper class="com.itheima.mapper.UserMapper" />-->
        <!--方式3: 直接写mapper接口所在的包(保证最后Mapper接口和Mapper.xml会编译到同一个目录下,并且名字一致)-->
        <package name="com.itheima.mapper"/>
    </mappers>

</configuration>

在这里插入图片描述

注解

使用注解书写SQL其实是对使用XML书写SQL的一种替代方式,其功能基本一致。

两种方式各有优缺点, 没有谁好谁坏之分, 具体看公司选择

在一个项目中是允许xml和注解混用的,但是对于同一个方法来讲,只能使用一种形式

非动态sql,使用注解简单写 但是对于动态sql,xml就相对简单了

增删改查

在这里插入图片描述

结果映射

在这里插入图片描述

  • 28
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值