mybatis官网中文文档(Mybatis插件和通用Mapper使用)

:暂无数据 2026-07-17 14:20:01 :0

mybatis官网中文文档(Mybatis插件和通用Mapper使用)

这篇文章给大家聊聊关于mybatis官网中文文档,以及Mybatis插件和通用Mapper使用对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

本文目录

Mybatis插件和通用Mapper使用

1、mybatis执行过程分析

2、mybatis插件

3、通用Mapper使用

1.1 getMapper的到MapperProxy实例:

部分源码:

DefaultSqlSession类:

Configuration类:

MapperRegistry类:

MapperProxyFactory类:

1.2 Executor执行的过程:

部分源码:

MapperProxy类:

MapperMethod类:

DefaultSqlSession类:

BaseExecutor类:执行器的实现类:

SimpleExecutor类:

1.3 执行流程描述

执行器:

SimpleExecutor:默认的执行器

BatchExecutor:批处理的执行器

ReuseExecutor:预处理,重用的执行器

MyBatis 允许你在已映射语句执行过程中的某一点进行拦截调用。默认情况下,MyBatis 允许使用插件来拦截的方法调用包括:

1、创建拦截器类:

调试效果:

2、在全局配置文件中注册拦截器:

源码分析:

Plugin类:

3、测试;

2.2、pagehelper分页插件使用:

***隐藏网址***

1、引入jar包:

2、注册拦截器:

参考官网用法

3、使用:

通用Mapper简介:

通用Mapper都可以极大的方便开发人员。可以随意的按照自己的需要选择通用方法,还可以很方便的开发自己的通用方法。

极其方便的使用MyBatis单表的增删改查。

支持单表操作,不支持通用的多表联合查询。

官方文档参考

1、引入依赖:

2、定义实体类型:

泛型实体类的要求:

示例:

3、创建Dao接口:

4、测试:

部分接口说明:

Select

接口:SelectMapper《T》

方法:List《T》 select(T record);

说明:根据实体中的属性值进行查询,查询条件使用等号

接口:SelectByPrimaryKeyMapper《T》

方法:T selectByPrimaryKey(Object key);

说明:根据主键字段进行查询,方法参数必须包含完整的主键属性,查询条件使用等号

Insert

接口:InsertMapper《T》

方法:int insert(T record);

说明:保存一个实体,null的属性也会保存,不会使用数据库默认值

接口:InsertSelectiveMapper《T》

方法:int insertSelective(T record);

说明:保存一个实体,null的属性不会保存,会使用数据库默认值

Update

接口:UpdateByPrimaryKeyMapper《T》

方法:int updateByPrimaryKey(T record);

说明:根据主键更新实体全部字段,null值会被更新

接口:UpdateByPrimaryKeySelectiveMapper《T》

方法:int updateByPrimaryKeySelective(T record);

说明:根据主键更新属性不为null的值

Example 方法

接口:SelectByExampleMapper《T》

方法:List《T》 selectByExample(Object example);

说明:根据Example条件进行查询

重点:这个查询支持通过Example类指定查询列,通过selectProperties方法指定查询

测试之前的准备:

示例1:根据主键进行查询:

没有设置@Id的结果:

设置@Id后的结果1:

示例2:录入测试:

示例3:query by criteria

查询命令如下:

通用Mapper也可以使用MBG自动生成;

1、Mybatis的执行流程分析

2、Mybatis的插件机制

3、通用Mapper使用

mybatis+创建文档实例错误

如果您在使用MyBatis-Plus创建文档实例时出现错误,可能是以下几个方面导致的:

  • 实体类没有继承父类Model
    在使用MyBatis-Plus创建文档实例时,需要保证实体类继承了父类Model,例如:

  • csharpCopy codepublic class User extends Model《User》 {    // ...}

  • 实体类的属性没有添加@TableField注解
    在实体类中需要添加@TableField注解,用于指定实体类的属性对应数据库表中的列名,例如:

  • kotlinCopy codepublic class User extends Model《User》 {    @TableField("user_name")

  •    private String userName;    // ...}

  • 实体类的主键没有添加@TableId注解
    在实体类中需要添加@TableId注解,用于指定实体类的主键对应数据库表中的主键列名,例如:

  • kotlinCopy codepublic class User extends Model《User》 {    @TableId("id")

  •    private Long id;    // ...}

  • 缺少依赖
    使用MyBatis-Plus创建文档实例需要依赖MyBatis-Plus和MyBatis框架,如果您没有正确添加这些依赖,可能会导致出现错误。请确保您的项目中正确添加了以下依赖:

  • phpCopy code《!-- MyBatis-Plus --》《dependency》

  •    《groupId》com.baomidou《/groupId》

  •    《artifactId》mybatis-plus-boot-starter《/artifactId》

  •    《version》最新版本号《/version》《/dependency》《!-- MyBatis --》《dependency》

  •    《groupId》org.mybatis《/groupId》

  •    《artifactId》mybatis《/artifactId》

  •    《version》最新版本号《/version》《/dependency》

  • 如果您仍然无法解决问题,请提供更具体的错误信息或代码,以便更好地帮助您解决问题。

mybatis传值同时传入list和string该怎么弄

您好,这么弄:
① 现在很多学校的老师都在吃老本,不思进取的,或者停留在理论基础上……
② 网上的很多关于mybatis都是过时的,很多方法都是遗留之前的ibatis。其实官方有翻译的中文文档,多看几遍,你就受益匪浅。
③ 使用Mybatis自带的注解@Param 即可轻松解决你的问题!
public interface UserMapper(){

public List《User》 findByNo(@Param("teacher") String teacher,
@Param("noList") List《String》 noList
)
}

hibernate和mybatis能放在一起用吗

第一章 Hibernate与MyBatis
Hibernate 是当前最流行的O/R mapping框架,它出身于sf.net,现在已经成为Jboss的一部分。 Mybatis 是另外一种优秀的O/R mapping框架。目前属于apache的一个子项目。
***隐藏网址***
***隐藏网址***
1.1 Hibernate 简介
Hibernate对数据库结构提供了较为完整的封装,Hibernate的O/R Mapping实现了POJO 和数据库表之间的映射,以及SQL 的自动生成和执行。程序员往往只需定义好了POJO 到数据库表的映射关系,即可通过Hibernate 提供的方法完成持久层操作。程序员甚至不需要对SQL 的熟练掌握, Hibernate/OJB 会根据制定的存储逻辑,自动生成对应的SQL 并调用JDBC 接口加以执行。
1.2 MyBatis简介
iBATIS 的着力点,则在于POJO 与SQL之间的映射关系。然后通过映射配置文件,将SQL所需的参数,以及返回的结果字段映射到指定POJO。 相对Hibernate“O/R”而言,iBATIS 是一种“Sql Mapping”的ORM实现。
第二章 开发对比
开发速度
Hibernate的真正掌握要比Mybatis来得难些。Mybatis框架相对简单很容易上手,但也相对简陋些。个人觉得要用好Mybatis还是首先要先理解好Hibernate。
开发社区
Hibernate 与Mybatis都是流行的持久层开发框架,但Hibernate开发社区相对多热闹些,支持的工具也多,更新也快,当前最高版本4.1.8。而Mybatis相对平静,工具较少,当前最高版本3.2。
开发工作量
Hibernate和MyBatis都有相应的代码生成工具。可以生成简单基本的DAO层方法。
针对高级查询,Mybatis需要手动编写SQL语句,以及ResultMap。而Hibernate有良好的映射机制,开发者无需关心SQL的生成与结果映射,可以更专注于业务流程。
第三章 系统调优对比
Hibernate的调优方案
制定合理的缓存策略;
尽量使用延迟加载特性;
采用合理的Session管理机制;
使用批量抓取,设定合理的批处理参数(batch_size);
进行合理的O/R映射设计
Mybatis调优方案
MyBatis在Session方面和Hibernate的Session生命周期是一致的,同样需要合理的Session管理机制。MyBatis同样具有二级缓存机制。 MyBatis可以进行详细的SQL优化设计。
SQL优化方面
Hibernate的查询会将表中的所有字段查询出来,这一点会有性能消耗。Hibernate也可以自己写SQL来指定需要查询的字段,但这样就破坏了Hibernate开发的简洁性。而Mybatis的SQL是手动编写的,所以可以按需求指定查询的字段。
Hibernate HQL语句的调优需要将SQL打印出来,而Hibernate的SQL被很多人嫌弃因为太丑了。MyBatis的SQL是自己手动写的所以调整方便。但Hibernate具有自己的日志统计。Mybatis本身不带日志统计,使用Log4j进行日志记录。
扩展性方面
Hibernate与具体数据库的关联只需在XML文件中配置即可,所有的HQL语句与具体使用的数据库无关,移植性很好。MyBatis项目中所有的SQL语句都是依赖所用的数据库的,所以不同数据库类型的支持不好。
第四章 对象管理与抓取策略
对象管理
Hibernate 是完整的对象/关系映射解决方案,它提供了对象状态管理(state management)的功能,使开发者不再需要理会底层数据库系统的细节。也就是说,相对于常见的 JDBC/SQL 持久层方案中需要管理 SQL 语句,Hibernate采用了更自然的面向对象的视角来持久化 Java 应用中的数据。
换句话说,使用 Hibernate 的开发者应该总是关注对象的状态(state),不必考虑 SQL 语句的执行。这部分细节已经由 Hibernate 掌管妥当,只有开发者在进行系统性能调优的时候才需要进行了解。
而MyBatis在这一块没有文档说明,用户需要对对象自己进行详细的管理。
抓取策略
Hibernate对实体关联对象的抓取有着良好的机制。对于每一个关联关系都可以详细地设置是否延迟加载,并且提供关联抓取、查询抓取、子查询抓取、批量抓取四种模式。 它是详细配置和处理的。
而Mybatis的延迟加载是全局配置的。
第五章 缓存机制对比
Hibernate缓存
Hibernate一级缓存是Session缓存,利用好一级缓存就需要对Session的生命周期进行管理好。建议在一个Action操作中使用一个Session。一级缓存需要对Session进行严格管理。
Hibernate二级缓存是SessionFactory级的缓存。 SessionFactory的缓存分为内置缓存和外置缓存。内置缓存中存放的是SessionFactory对象的一些集合属性包含的数据(映射元素据及预定SQL语句等),对于应用程序来说,它是只读的。外置缓存中存放的是数据库数据的副本,其作用和一级缓存类似.二级缓存除了以内存作为存储介质外,还可以选用硬盘等外部存储设备。二级缓存称为进程级缓存或SessionFactory级缓存,它可以被所有session共享,它的生命周期伴随着SessionFactory的生命周期存在和消亡。
MyBatis缓存
MyBatis 包含一个非常强大的查询缓存特性,它可以非常方便地配置和定制。MyBatis 3 中的缓存实现的很多改进都已经实现了,使得它更加强大而且易于配置。
默认情况下是没有开启缓存的,除了局部的 session 缓存,可以增强变现而且处理循环 依赖也是必须的。要开启二级缓存,你需要在你的 SQL 映射文件中添加一行: 《cache/》
字面上看就是这样。这个简单语句的效果如下:
映射语句文件中的所有 select 语句将会被缓存。
映射语句文件中的所有 insert,update 和 delete 语句会刷新缓存。
缓存会使用 Least Recently Used(LRU,最近最少使用的)算法来收回。
根据时间表(比如 no Flush Interval,没有刷新间隔), 缓存不会以任何时间顺序 来刷新。
缓存会存储列表集合或对象(无论查询方法返回什么)的 1024 个引用。
缓存会被视为是 read/write(可读/可写)的缓存,意味着对象检索不是共享的,而 且可以安全地被调用者修改,而不干扰其他调用者或线程所做的潜在修改。
所有的这些属性都可以通过缓存元素的属性来修改。

“mybatis” 这个单词怎么读

MyBatis的读音是:,中文音译:麦-波蒂斯,MyBatis的前世是ibatis,这个词是由"internet"和"abatis"组合而成,创始人是Clinton Begin。MyBatis中文官网

关于slf4j不能输出日志到文件,怎么解决

你好,项目采用SpringMVC+Mybatis的架构,日志工具还是最常用的log4j,整合了其他框架之后,发现无法打印SQL语句,然而项目中的显示调用日志却可以正常打印出来,还有当SQL拼写有错误的时候会打印出来
然后开始看Mybatis的官方文档,关于日志这一块是怎么处理的
最近Mybatis有中文文档了,虽然不全,不过已经很好了,这里面发现了项目中存在的问题。项目中引入了shiro框架,集成了slf4j日志,导致了Mybatis无法引用log4j的配置文件打印SQL语句
问题原因:这个是Mybatis默认查找日志的顺序,自上而下,也就是说,如果项目中有前面3个日志框架时,对于Mybatis,log4j就不会生效
SLF4J
Apache Commons Logging
Log4j 2
Log4j
JDK logging
解决办法:在MyBatis的配置文件mybatis-config.xml里面添加一项setting来指定log4j
log4j中对指定内容进行输出,其中example为包名,可以继续细化处理
log4j.logger.example=DEBUG

文章分享结束,mybatis官网中文文档和Mybatis插件和通用Mapper使用的答案你都知道了吗?欢迎再次光临本站哦!

mybatis官网中文文档(Mybatis插件和通用Mapper使用)

本文编辑:admin

本文相关文章:


component name(error Component name “cardinfo“ should always be multi-word)

component name(error Component name “cardinfo“ should always be multi-word)

各位老铁们,大家好,今天由我来为大家分享component name,以及error Component name “cardinfo“ should always be multi-word的相关问题知识,希望对大家有所帮助。如果可以帮助

2026年9月24日 10:30

thinkphp6框架(企业开发用tp6还是hyperf)

thinkphp6框架(企业开发用tp6还是hyperf)

这篇文章给大家聊聊关于thinkphp6框架,以及企业开发用tp6还是hyperf对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

2026年9月22日 18:40

jquery下载实现loading效果(用JQuery实现页面Loading的效果,即:当页面加载完成前显示Loading的进度条,全部加载完成之后进度条消失)

jquery下载实现loading效果(用JQuery实现页面Loading的效果,即:当页面加载完成前显示Loading的进度条,全部加载完成之后进度条消失)

今天给各位分享用JQuery实现页面Loading的效果,即:当页面加载完成前显示Loading的进度条,全部加载完成之后进度条消失的知识,其中也会对用JQuery实现页面Loading的效果,即:当页面加载完成前显示Loading的进度条

2026年9月22日 05:40

浏览器调用webservice接口(如何通过浏览器发送webservice请求)

浏览器调用webservice接口(如何通过浏览器发送webservice请求)

这篇文章给大家聊聊关于浏览器调用webservice接口,以及如何通过浏览器发送webservice请求对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

2026年9月21日 21:20

sqlserver2000sp4补丁(sqlserver 2000 sp4补丁安装失败)

sqlserver2000sp4补丁(sqlserver 2000 sp4补丁安装失败)

大家好,关于sqlserver2000sp4补丁很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于sqlserver 2000 sp4补丁安装失败的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关

2026年9月20日 20:50

jsondecodeerror翻译中文(猫和老鼠出现这个json decode error怎么办)

jsondecodeerror翻译中文(猫和老鼠出现这个json decode error怎么办)

其实jsondecodeerror翻译中文的问题并不复杂,但是又很多的朋友都不太了解猫和老鼠出现这个json decode error怎么办,因此呢,今天小编就来为大家分享jsondecodeerror翻译中文的一些知识,希望可以帮助到大家

2026年9月10日 05:50

cluster bomb unit(cluster bomb 是什么意思)

cluster bomb unit(cluster bomb 是什么意思)

其实cluster bomb unit的问题并不复杂,但是又很多的朋友都不太了解cluster bomb 是什么意思,因此呢,今天小编就来为大家分享cluster bomb unit的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题

2026年9月3日 17:20

js怎么用ajax(js如何通过Ajax的方式提交表单(注意不是以jquery而是以js原生代码的方式提交))

js怎么用ajax(js如何通过Ajax的方式提交表单(注意不是以jquery而是以js原生代码的方式提交))

其实js怎么用ajax的问题并不复杂,但是又很多的朋友都不太了解js如何通过Ajax的方式提交表单(注意不是以jquery而是以js原生代码的方式提交),因此呢,今天小编就来为大家分享js怎么用ajax的一些知识,希望可以帮助到大家,下面我

2026年8月26日 15:20

js代码转换jquery工具(js jquery是怎么转换的)

js代码转换jquery工具(js jquery是怎么转换的)

大家好,今天小编来为大家解答以下的问题,关于js代码转换jquery工具,js jquery是怎么转换的这个很多人还不知道,现在让我们一起来看看吧!

2026年8月26日 05:50

scripture psalms(“christmas worship service” 这个是什么意思,求解释和简单介绍)

scripture psalms(“christmas worship service” 这个是什么意思,求解释和简单介绍)

各位老铁们好,相信很多人对scripture psalms都不是特别的了解,因此呢,今天就来为大家分享下关于scripture psalms以及“christmas worship service” 这个是什么意思,求解释和简单介绍的问题知

2026年8月26日 01:40

更多文章:


mariadb忘记密码(mysql用户密码忘记了怎么办)

mariadb忘记密码(mysql用户密码忘记了怎么办)

大家好,mariadb忘记密码相信很多的网友都不是很明白,包括mysql用户密码忘记了怎么办也是一样,不过没有关系,接下来就来为大家分享关于mariadb忘记密码和mysql用户密码忘记了怎么办的一些知识点,大家可以关注收藏,免得下次来找不

2026年10月15日 07:50

mysql端口号(如何查看自己数据库的端口号)

mysql端口号(如何查看自己数据库的端口号)

“mysql端口号”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看mysql端口号(如何查看自己数据库的端口号)!

2026年10月15日 06:30

printf打印16进制(C语言 十六进制怎么输出)

printf打印16进制(C语言 十六进制怎么输出)

大家好,今天小编来为大家解答以下的问题,关于printf打印16进制,C语言 十六进制怎么输出这个很多人还不知道,现在让我们一起来看看吧!

2026年10月15日 06:00

avantage怎么设置为中文(Avantage安装丢失GIT)

avantage怎么设置为中文(Avantage安装丢失GIT)

大家好,如果您还对avantage怎么设置为中文不太了解,没有关系,今天就由本站为大家分享avantage怎么设置为中文的知识,包括Avantage安装丢失GIT的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

2026年10月15日 03:00

ospf协议的作用是什么(OSPF路由协议的作用是什么)

ospf协议的作用是什么(OSPF路由协议的作用是什么)

“ospf协议的作用是什么”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看ospf协议的作用是什么(OSPF路由协议的作用是什么)!

2026年10月15日 02:40

方案对比特效js(在一个网页中如何实现两个JS特效)

方案对比特效js(在一个网页中如何实现两个JS特效)

各位老铁们好,相信很多人对方案对比特效js都不是特别的了解,因此呢,今天就来为大家分享下关于方案对比特效js以及在一个网页中如何实现两个JS特效的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

2026年10月15日 02:10

activex控件未注册怎么办(登陆视频监控网页时提示activex控件未注册,怎么解决)

activex控件未注册怎么办(登陆视频监控网页时提示activex控件未注册,怎么解决)

今天给各位分享登陆视频监控网页时提示activex控件未注册,怎么解决的知识,其中也会对登陆视频监控网页时提示activex控件未注册,怎么解决进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年10月14日 20:30

学生信息管理系统c语言(用C语言编程学生信息管理系统!)

学生信息管理系统c语言(用C语言编程学生信息管理系统!)

今天给各位分享用C语言编程学生信息管理系统!的知识,其中也会对用C语言编程学生信息管理系统!进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年10月14日 20:20

excel连接sql数据库教程(excel怎么连接sql数据库)

excel连接sql数据库教程(excel怎么连接sql数据库)

本篇文章给大家谈谈excel连接sql数据库教程,以及excel怎么连接sql数据库对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2026年10月14日 19:40

null s brawl(null和空字符有区别吗)

null s brawl(null和空字符有区别吗)

今天给各位分享null和空字符有区别吗的知识,其中也会对null和空字符有区别吗进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年10月14日 19:00

最近更新

热刺vs马赛比赛(热刺赛程比分)
2026-10-15 09:10:01 浏览:0
热门文章

标签列表