mybatis基础

本文介绍了在MyBatis中如何处理不同数据库的主键生成,包括自增主键、UUID和Oracle自增序列。同时,讨论了${}与#{}的区别,并在综合查询中给出了示例,包括遇到的奇怪错误,如前端415错误及MyBatis编写错误的解决办法,详细解析了where子句的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在mybatis里面各种符号的使用

 <        <=      >       >=       &        '        "
&lt;    &lt;=   &gt;    &gt;=   &amp;   &apos;  &quot;

查询自增主键

这是给没有自增的数据库使用的

select LAST_INSERT_ID()

在这里插入图片描述

通过uuid来查询主键

在这里插入图片描述

oracle自增序列来查询

在这里插入图片描述

${}和#{}的区别

在这里插入图片描述

综合查询

使用包装对象查询
一般在筛选的时候可以用
在这里插入图片描述
在这里插入图片描述
输入条件循环
ids是对象的一个属性
在这里插入图片描述

奇怪的报错1

前端报错415

  "timestamp": "2019-08-12T08:54:17.113+0000",
  "status": 415,
  "error": "Unsupported Media Type",
  "message": "Content type 'application/octet-stream' not supported",
  "path": "/api/patrol/grid/grid-chief"

原因是Content-Type上面有一个奇怪的空格

put http://localhost:8080/api/patrol/grid/grid-chief

Content-Type: application/json
{   
      "id": 2,
      "name": "网格员11",
      "gridId": 7,
      "state": "LEAVE"
}

奇怪的报错2

keyProperty' must include the parameter name (e.g. 'param.id'). Specified key properties are [id] and available parameters are [patrolPlan, gridId, param1, param2]] with root cause

我的mapper

void insertPatrolPlan(@Param("gridId") int gridId, @Param("patrolPlan") PatrolPlan patrolPlan);

这是因为mybatis写错了

  <!--新增计划-->
  <insert id="insertPatrolPlan" useGeneratedKeys="true" keyProperty="id">
      insert into patrol_patrol_plan (
          grid_id
      ) values (
          #{patrolPlan.gridId}
      )
  </insert>

不知道id是什么
修改后

 <!--新增计划-->
  <insert id="insertPatrolPlan" useGeneratedKeys="true" keyProperty="patrolPlan.id">
      insert into patrol_patrol_plan (
          grid_id
      ) values (
          #{patrolPlan.gridId}
      )
  </insert>

如果只传patrolPlan 就不用写patrolPlan.id,否则就需要

where的用法

<select id="findAllDroneStationLog" resultType="com.swcote.patrol.entity.PatrolDroneStationLog">
        select
            id,
            station_id as "stationId",
            plan_id AS "planId",
            attachment_flight_air_id AS "attachmentFlightAirId",
            start_time AS "startTime",
            end_time AS "endTime",
            state
        from patrol_drone_station_log
        <where>
        <if test="startTime != null ">
            and start_time >= #{startTime}
        </if>
        <if test="endTime != null ">
            and #{endTime} >= end_time
        </if>
        </where>
         order by id desc
    </select>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值