mybatis学习总结

springboot配置文件和整合mybatis配置文件 springboot配置文件模板:包括多环境开发布置,端口号配置,全局jackson配置,mysql数据库配置,oracle数据库配置,连接池配置,redis配置,redis链接池的配置,设置上传文件大小限制配置,全局格式化时间配置,https证书配置示例 立即下载

mybatis总结

1、流程

  1. 创建一个maven项目

  2. 导入依赖

  3. 创建Mybatis核心配置文件

    • properties属性

      • 可以引入外部配置文件
    • settings设置

      • 设置日志
      • 设置全局缓存
      • 设置延迟加载
    • typeAliases类型别名

      • 通过指定包将包内类全部起别名
      • 直接指定javabean为其起别名
    • plugins插件

    • environments(环境配置)

      • 可配置多套环境,用于连接不同的数据库,SqlSessionFactory 实例只能选择一种环境

      • environment(环境变量)

        • transactionManager(事务管理器)
        • dataSource(数据源)
    • mappers映射器

      • 绑定Mapper.xml文件
  4. 创建javaBean、接口、Mapper.xml文件

  5. 绑定Mapper.xml或者绑定接口

    • 使用class绑定接口
    • 使用resource绑定Mapper

2、Mapper.xml文件

  1. 修改基本配置,namespace中的包名要和接口中的包名相同
  2. 编写CRUD语句

1、SQL映射文件中的顶级元素:

  • cache – 该命名空间的缓存配置。
  • cache-ref – 引用其它命名空间的缓存配置。
  • resultMap – 描述如何从数据库结果集中加载对象,是最复杂也是最强大的元素。
  • sql – 可被其它语句引用的可重用语句块。

2、元素中的属性:

  • id - 代码块的名
  • parameterType - 传入的参数类型
  • resultType - 语句返回结果的类名(返回类型,若是集合则返回集合包含的类型)
  • resultMap - 对外部 resultMap 的命名引用
  • flushCache - 设置为true且被调用后会导致本地缓存和二级缓存被清空,默认false
  • useCache - 设置为true后会导致语句的结果被二级缓存起来,默认true

3、resultMap的使用

对于联表查询可以使用结果集映射的方式获得返回结果

  • 在查询语句块中使用resultMap,引用外部的resultMap

  • 外部resultMap 使用某一个javabean当做返回类型

  • 在外部resultMap将数据库查询的字段映射成javabaen的属性中

  • 复杂的javabaen属性可以继续使用association或collection对其进行进一步的映射

  • association符合多对一的情况

    • <resultMap id="StudentsTeacher2" type="student">
          <result property="id" column="sid"/>
          <result property="name" column="sname"/>
          <association property="teacher" javaType="teacher">
              <result property="id" column="tid"/>
              <result property="name" column="tname"/>
          </association>
      </resultMap>
      
  • collection符合一对多的情况

    • <resultMap id="teacherStudent" type="teacher">
          <id property="id" column="tid"/>
          <result property="name" column="tname"/>
          <collection property="students" ofType="student">
              <id property="id" column="sid"/>
              <result property="name" column="sname"/>
              <result property="tid" column="tid"/>
          </collection>
      </resultMap>
      
  • javaType 用来指定实体类中的属性类型

  • ofType 用来指定映射到List或集合中的pojo类型,泛型中约束的类型

3、动态SQL

  • IF 标签 - 用于判断,成立则执行标签内内容

  • where标签 - 用于where语句拼接的情况,可自动去掉首条件前面的and和or

  • choose标签 - 用于多个条件满足其一足以的情况

    • when标签
    • otherwise标签
  • set标签 - 用于修改语句,可以自动去掉最后一个条件的逗号

  • trim标签 - 格式化的标记,可完成set或where标记的功能

    • prefix:用来定义set元素或where元素的功能
    • prefixoverride:去掉子句第一个and或者or
    • suffixOverrides:去掉最后一个多余的逗号
    • suffix:后缀,可以这样使用suffix=" where id = #{id} "
  • forEach

    • collection=“ids” :集合的引用
    • item=“id” :遍历得到的元素引用
    • open="(" :在前面加入元素
    • separator="," :每次遍历后元素之间的分隔符
    • close=")" :在后面加入元素

4、日志

  1. 导入依赖
  2. 设置日志配置文件
  3. 在mybatis核心配置文件中设置日志
  4. 使用日志

需掌握的日志:

  • LOG4J

    • <settings>
          <setting name="logImpl" value="LOG4J"/>
      </settings>
      
  • COMMONS_LOGGING

    • STDOUT_LOGGING⭐ 标准日志输出

5、注解

简单的CRUD可以使用注解实现,在接口的抽象类上使用

// 使用注解查询
@Select("select * from user")
List<User> getUsers();

注意:使用注解需要在核心配置文件中绑定接口。在复杂的功能面前注解并不适用

6、mybatis中的模糊查询

使用mysql的函数实现:

<select id="fuzzyQuery" resultType="com.bin.pojo.Book">
    select * from mybatis.book where bookName like 
    concat('%',#{info},'%');
</select>

7、错误整理:

1、找不到mapper中的map

Could not find parameter map com.bin.dao.user.UserMapper.map

到mapper配置文件中将parameterMap改成parameterType

2、主键重复

Duplicate entry ‘17’ for key ‘PRIMARY’

3、未写结果集映射

A query was run and no Result Maps were found for the Mapped Statement ‘com.bin.dao.user.UserMapper.getUserCount’. It’s likely that neither a Result Type nor a Result Map was specified

4、mapper注册失败

org.apache.ibatis.binding.BindingException: Type interface com.bin.dao.UserDao is not known to the MapperRegistry.

5、可能遇到的错误:

  1. 配置文件没有注册
  2. 绑定接口错误
  3. 方法名不对
  4. 返回类型不对
  5. resource绑定mapper,需要使用路径
  6. 程序配置文件必须符合规范
  7. NullPointerException没有注册到资源
  8. 输出的xml文件中存在中文乱码问题
  9. maven资源没有导出
LabVIEW通过ActiveX控件实现与三菱FX5U PLC的高效数据交互 本文详细介绍了如何利用LabVIEW的ActiveX控件,通过三菱官方MX Component工具包实现与FX5U PLC的高效数据交互。文章从环境配置、控件插入到实战代码解析,系统讲解了连接建立、数据读写及资源释放的全流程,并提供了关键的避坑指南,帮助工程师快速构建稳定可靠的上位机通讯系统。 阅读详情

相关推荐

手把手教你用ES8311芯片搞定智能音箱TTS播放(附完整寄存器配置清单)

本文详细介绍了如何使用ES8311音频编解码芯片实现智能音箱TTS播放功能,包括芯片特性、硬件连接、寄存器配置及调试技巧。通过完整的寄存器配置清单和实战经验,帮助开发者快速掌握ES8311在智能音箱中的应用,优化音频输出质量和低功耗设计。

weixin_42567497的博客 538

MyBatis报错笔记——Could not find parameter map java.util.List

今天在学习使用MyBatis框架是出现Could not find parameter map java.util.List的报错经过仔细检查,出错问题是 mybatis-config.xml中相应的关键字写错了:将parameterType写错成parameterMap。这才会出错。解决办法就是将写错的parameterMap改为parameterType就ok了...

old_power的博客 1万+

Python Trimesh库实战:5分钟搞定STL文件解析与3D模型可视化

本文介绍了如何使用Python的Trimesh库快速解析STL文件并进行3D模型可视化。通过简洁的代码示例,演示了从环境搭建、模型加载、几何数据提取到基础变换和批量处理的核心流程,帮助开发者和工程师在5分钟内高效完成3D数据处理与可视化任务。

weixin_32005771的博客 133

Mybatis错误——Could not find parameter map java.util.Map

错误信息 org.apache.ibatis.builder.IncompleteElementException: Could not find parameter map java.util.Map at org.apache.ibatis.builder.MapperBuilderAssistant.setStatementParameterMap(MapperBuilder...

weixin_30817749的博客 760

Spring Boot MyBatis报错——Could not find parameter map

Spring Boot MyBatis报错——Could not find parameter map… org.apache.ibatis.builder.IncompleteElementException: Could not find parameter map com.tcrush.entity.employee.Employee 1、parameterMap <insert ...

Xechos 816

MyBatis 实践中遇到的问题

1.org.apache.ibatis.builder.IncompleteElementException: Could not find parameter map

蛾子 350

Mybatis 框架学习

介绍了 Mybatis 框架的概念以及使用方法

一弓虽的博客 1388

Mybatis学习

数据访问篇 流行词:顶层设计 Mybatis 参考代码:https://gitee.com/li-lixiang/learn-mybatis.git 在前面的blog中,已经实现学习了Spring源码,接下来学习当下数据库访问框架Mybatis。 目录 数据访问篇 顶层设计 了解认识Mybatis why mybatis? 顶层设计 数据访问篇主要从以下几个方面学习: 1、了解Mybatis、使用Mybatis 2、掌握Mybatis工作流程、架构分层与模块划分、缓存机制的底层工作原

xiaoyou59的专栏 277

MyBatis学习01】宏观上把握MyBatis框架

  今天开始学习mybatis框架,博客主要记录学习过程中的一些总结,如有错误之处,欢迎留言指正~先用mybatis的鸟鸟来镇个楼,咳咳~~   mybatis框架是一个持久层框架,是Apache下的顶级项目。mybatis可以让开发者的主要精力放在sql上,通过mybatis提供的映射方式,自由灵活的生成满足需要的sql语句。MyBatis可以将向preparedStatement中的输...

学不死的程序员 186

MyBatis框架学习过程中所遇到的问题

在刚开始学习MyBatis的过程中,于我而言,第一个较为头疼的问题就是:难理解。对MyBatis有了一定的了解后,在学习过程中,避免不了的就是会出现各种异常,但由于不够仔细,或者配置映射文件时配置少了,多了、忘了。同时,也需要注意,我们添加的数据中是没有主键值的,我们需要检查该表的主键是否设置了自动增长类型,这样才能保证数据和主键的正常添加。通过日志文件的显示,我们可以知道,配置没有问题,通过错误的类型和提示,我们很快就能发现是因为马虎sql语句里出现了错误,在异常的提示里,已经告诉了我们那里错了。...

weixin_53233753的博客 793

MyBatis学习方案

MyBatis学习方案mybatis的思维导图 mybatis的思维导图 文件链接: 密码: oukv

weixin_42492504的博客 193

开篇:为什么要学习Mybatis

大家好,我是疯一样的码农,长期扎根于一线开发,过去的十多年里,我是Mybatis框架的资深使用者,不仅在日常开发中能熟练地用它来操作数据库,还花了不少时间去研究它的内部源码,包括它是怎么配置、怎么初始化、怎么管理会话、怎么动态生成SQL语句、怎么执行、如何处理返回的结果集,还有它的缓存机制、工具集和插件等等,经历了无数次的挑战与失败,也收获了满满的成长与经验。这一路走来,我踩过不少坑,交了不少学费,但正是这些宝贵的经历,让我对Mybatis的理解愈发深刻。

疯一样的码农 582

MyBatis学习笔记】MyBatis基础学习

MyBatis是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录MyBatis是一个半自动的ORM(Object Relation Mapping)框架建议分成两种情况进行处理实体类类型的参数使用@Param标识参数。

IT小小白的博客 261

mybatis学习资源

以下仅给出一些比较有用的参考资料,待有时间好好进一步研究学习。 1、mybatis文档

Xi__Yuan的专栏 405

MyBatis实战:从入门到精通,一站式学习MyBatis的最佳选择

MyBatis实战:从入门到精通,一站式学习MyBatis的最佳选择 项目介绍 MyBatis实战是一个专注于MyBatis技术学习的开源项目,旨在通过丰富的实战示例代码,帮助开发者从零开始掌握MyBatis的核心概念与高级用法。项目中的示例代码主要来源于刘增辉老师所著的《MyBatis从入门到精通》一书,经过精心整理与实践,确保每一个示例都能帮助开发者深入理解MyBatis的各个方面。 项目技术...

gitblog_00834的博客 1104

mybatis学习总结,mybatis思维导图

最近几天学了mybatis,做了个总结。个人觉得很全,希望有所帮助。

Liveforyourself的博客 496

Mybatis学习记录

Mybatis学习记录 学习资料 B站视频 官方中文文档 什么是Mybatis MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。 简单来说,MyBatisMyBatisMyBatis是一个持久层框架。

Harris-H的博客 466
上一篇: mysql练习题
下一篇: 跟着狂神学习Mybatis的笔记
chen_xionxion
博客等级 码龄7年 9粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值