
MyBatis
MyBatis-第一章 ORM(Object Relational Mapping) 设计模式,思想对象关系映射,是一种数据持久化技术。它在对象模型和关系型数据库之间建立起对应关系,并且提供了一种机制,通过JavaBean对象去操作数据库表中的数据。Object Relation Mapping对象 关系 映射 Object: java的对...
2024-01-10
MyBatis入门程序
什么是mybatisMyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan Old Java Objects,普通的Java对象)映射成数据库中的记录.(一)、程序环境1、jar...
2024-01-10
MyBatis原理介绍
ORM(Object/Relational Mapping),即对象关系映射,它完成面向对象的编程语言到关系数据库的映射。ORM工具的唯一作用是:把持久化对象的保存、修改、删除等操作,转换成对数据库的操作。ORM 基本映射关系:数据表映射类。数据表的行映射对象(实例)。数据表的列(字段)映射对象的属性。MyBatis...
2024-01-10
深入了解MyBatis参数
深入了解MyBatis参数相信很多人可能都遇到过下面这些异常:"Parameter 'xxx' not found. Available parameters are [...]""Could not get property 'xxx' from xxxClass. Cause:"The expression 'xxx' evaluated to a null value.""Error evaluating expression 'xxx'. Return value (xxxxx) was not i...
2024-01-10
Mybatis入参方式
Mybatis 入参方式单个基本类型或String参数在mapper文件中随便写<select id="" resultMap="resultMap">select * from USER_INFO t where t.name = #{sdfa,jdbcType=VARCHAR}</select>List<Student> get(String name);单个Map或者自定义类型的如是Map ,那么参数各是Map的key如果是自定义类型的,参数是属性名,更确切的说是get方法,例如:getNa...
2024-01-10
MyBatis查询缓存实例详解
查询缓存的使用,主要是为了提高查询访问速度。将用户对同一数据的重复查询过程简化,不再每次均从数据库查询获取结果数据,从而提高访问速度。MyBatis的查询缓存机制,根据缓存区的作用域(生命周期)可划分为两种:一级缓存与二级缓存一、一级查询缓存MyBatis一级缓存是基于org.apache.ibatis.c...
2024-01-10
Mybatis之插件分析
前言Mybatis提供了强大的扩展功能,也就是Mybatis的插件(plugins)功能;MyBatis允许你在已映射语句执行过程中的某一点进行拦截调用,拦截之后可以对已有方法添加一些定制化的功能,比如常见的分页功能;试图修改或重写已有方法的行为的时候,你很可能在破坏MyBatis 的核心模块,这些都是更低层的...
2024-01-10
MyBatis生成UUID的实现
1.<selectKey>标签属性说明keyProperty:设置需要自动生成键值的列order:可选值BEFORE和AFTER,设置为BEFORE会先执行selectKey语句,设置keyProperty属性,再执行insert语句;设置为AFTER会先执行insert语句再执行selectKey语句resultType:结果类型,MyBatis 通常可以自己检测到,但这并不影响给它一个确切的类型。MyBatis ...
2024-01-10
MyBatis执行动态SQL的方法
大家基本上都知道如何使用 MyBatis 执行任意 SQL,使用方法很简单,例如在一个 XXMapper.xml 中:<select id="executeSql" resultType="map"> ${_parameter}</select>你可以如下调用:sqlSession.selectList("executeSql", "select * from sysuser where enabled = 1");或者你可以在 XXMapper.java 接口中定义如下方法:List<Map> exec...
2024-01-10
初识MyBatis及基本配置和执行
1.MyBatis简介MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。2. MyBatis...
2024-01-10
Mybatis拦截器实现分页
最终dao层结果:public interface ModelMapper { Page<Model> pageByConditions(RowBounds rowBounds, Model record); }接下来一步一步来实现分页。一.创建Page对象:public class Page<T> extends PageList<T> { private int pageNo = 1;// 页码,默认是第一页 private int pageSize = 15;// 每页显示的记录数,默认是15 pri...
2024-01-10
MyBatis动态SQL,含分页功能
1. 写一个SqlProvider类:public class DynamicSql { public String sql(String sql){ return sql; }}2. 写一个Mapper类:@Mapperpublic interface DynamicMapper { @SelectProvider(type=DynamicSql.class, method = "sql") List< HashMap<String,Object>> get(Stri...
2024-01-10
MyBatis自动生成Where语句
最近监控到类似这样一个慢查询:select delete_flag,delete_timefrom D_OrderInfo WHERE ( OrderId is not null and OrderId = N'xxxx') D_OrderInfo表上有一个OrderId的索引,但OrderId字段是Varchar类型。由于开发框架MyBatis自动生成Where条件不会指定参数类型,字符串类型的参数到了SQLServer里就自动成了NVARCHAR(4000)类型...
2024-01-10
SSM,MyBatis连接池配置问题
现在是这么个问题,我长时间不去使用这个服务,再次调用,就会报连接已关闭,可是我也配置连接池了,是不是等待时间配置的太短造成了,还是说配置有问题,还是说换druid会很好补充····知道什么问题了这个问题,想问怎么设置自动连接,我看网上那些,没太懂,没有提示那个autoReconnect=true...
2024-01-10
MyBatis版本升级引发的线上告警
背景某天晚上,美团到店事业群某项系统服务正在进行常规需求的上线。因为在内部的Plus系统发布时,提示inf-bom版本需要升级,于是我们就将inf-bom版本从1.3.9.6 升级至1.4.2.1,如下图1所示:不过,当服务上线后,开始陆续出现了一些更新系统交互日志方面的报警,这属于系统的辅助流程,报警...
2024-01-10
MyBatis常见报错问题及解决方案
这是一个出错的代码public interface OrderInfoManageMapper { List<GetOrderInfoManageListReq> selectAllOrder(); void modifyDelivery(int id); void removeOrder(int id); List<GetOrderInfoManageListReq> selectOrderById(@Param("id") Integer id);}一、报错:1 There is no gett...
2024-01-10
详解java基于MyBatis使用示例
MyBatis的前身叫iBatis,本是apache的一个开源项目, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis。MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始...
2024-01-10
MyBatis全局映射文件实现原理解析
全局配置文件为mybatis-config.xml1、properties标签<properties resource="dbconfig.properties"></properties>可以使用properties来引入外部properties配置文件的内容引入方式有两种: ①resource:引入类路径下的资源 ②url:引入网络路径或者磁盘路径下的资源2、settings标签 <settings> <setting name="mapUnderscoreToCamelCa...
2024-01-10
MyBatis中多对多关系的映射和查询
先说一下需求: 在页面上显示数据库中的所有图书,显示图书的同时,显示出该图书所属的类别(这里一本书可能同时属于多个类别)创建表: 笔者这里使用中间表连接图书表和图书类别表,图书表中没有使用外键关联图书类别表 而是在中间表中引用了图书主键和类别主键 通过中间表来 表...
2024-01-10
第一个MyBatis程序(博客初写者)
第一个Mybatis程序 一、环境: 1、JDK1.8 2、MYSQL5.7 3、IDEA 4、MAVEN 3.63 二、Mybatis认识: 1、查看官方文档https://mybatis.org/mybatis-3/zh/index.html 2、查看百度百科https://baike.so.com/doc/5582692-5795562.html MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级...
2024-01-10
MyBatis配置文件的写法和简单使用
初识 MyBatis 一最初 Apache 有一个batis的开源项目,放在Google code 中,后来因为一些原因迁移到了github,就是今天的myBatis什么是 MyBatis ?MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手工设置参数以及抽取结果集。MyBatis 使用简单的 XML 或注解...
2024-01-10
MyBatis实现动态查询、模糊查询功能
要实现查询,咱们就先有个数据库,截图如下,其中cityAreaId是外键,本次可以忽略;下面Branches是我的实体类,里面有name和address属性;接口中方法:public List<Branches> finDongTai(@Param("name")String name,@Param("add")String address);//动态public List<Branches> findLike(@Param("name")String name,@Param("add")String ad...
2024-01-10
MyBatis入门初体验之使用大全(2)
MyBatis简介MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)1.所需jar包这里单...
2024-01-10
MyBatis如何实现流式查询的示例代码
基本概念流式查询指的是查询成功后不是返回一个集合而是返回一个迭代器,应用每次从迭代器取一条查询结果。流式查询的好处是能够降低内存使用。如果没有流式查询,我们想要从数据库取 1000 万条记录而又没有足够的内存时,就不得不分页查询,而分页查询效率取决于表设计,如果设计的不好...
2024-01-10
MyBatis缓存实现原理及代码实例解析
一、一级缓存(本地缓存) sqlSession级别的缓存。一级缓存是一直开启的;SqlSession级别的一个Map与数据库同一次会话期间查询到的数据会放在本地缓存中。以后如果需要获取相同的数据,直接从缓存中拿,没必要再去查询数据库; 一级缓存失效情况(没有使用到当前一级缓存的情况,效果就...
2024-01-10
