浅谈mybatis

简介: 浅谈mybatis

说说mybaits原理


首先,之前Java连接数据库jdk有定义一套规范JDBC,但是这个规范使用起来太麻烦, 流程大概有加载驱动、连接数据库、执行sql、处理结果、释放资源。 特别是sql是以字符串的形式进行传参的,


所以在写sql时需要在代码里进行各种字符串的拼接,使用连接池也很不方便等等,严重影响开发的效率, 所以mybatis就是基于此诞生。


mybatis时对JDBC的增加,底层还是调用的JDBC接口,但是做一些方便开发者进行数据库操作的事情,


比如 通过mapper文件进行sql的编写,


一是进行sql和业务代码解耦,二是提供很多方便实用标签给开发者编写sql总比字符串拼接方便,三开发时通过接口的方式进行访问数据库,mybatis会自动通过动态代理生成接口的代理,接口被调用时执行相应的sql返回结果。 将数据库返回结果自动与Java对象进行映射,还支持如理驼峰命名这种命名习惯进行转换,省去了很多麻烦。 内置一个连接池的支持,不用开发者自己实现连接池。 通过一二级缓存机制提高访问性能



mybatis中#{}和${}区别?


使用#{}是进行预编译处理的,也就是话无论传什么值都直接加单引号作为参数的值传递,传入命令什么的都当作字符串处理,而${}是直接进行字符串拼接的,假设传入一些命令是会被执行的



mybatis中一二级缓存的工作机制?


首先这个缓存是未了减少进行数据库的查询次数进行缓存的,前提是当查询条件查询参数一样而且期间没有进行增删改时返回的结果时一样的


所以可以进行缓存,下次再查时直接取缓存的数据加快查询速度。


一级缓存时会话级别的,不同的sqlsession是不共享缓存的。


二级缓存是可以跨会话的,作用空间是namespace级别,不同的sqlsession操作同一个mapper是可以共享缓存的,但是一个mapper操作多个表的情况就会有误所以还是有局限的。


一级缓存默认开的,二级默认关闭,当查询是先去查二级缓存没有再查一级缓存。

相关文章
|
SQL Java 数据库连接
MyBatis大全
MyBatis大全
54 0
|
XML Java 数据库连接
|
7月前
|
Java 关系型数据库 数据库连接
Mybatis-plus
Mybatis-plus
|
7月前
|
Java 数据库连接 数据库
mybatis的@MappedTypes
mybatis的@MappedTypes
108 1
|
7月前
|
SQL Java 数据库连接
MyBatis
MyBatis
64 0
|
Java 数据库连接 测试技术
Mybatis-PLUS详解
Mybatis-PLUS详解
245 0
|
SQL Java 关系型数据库
mybatis plus很好,但是我被它坑了!
作者今天在开发一个后台发送消息的功能时,由于需要给多个用户发送消息,于是使用了 mybatis plus 提供的 saveBatch() 方法,在测试环境测试通过上预发布后,测试反应发送消息接口很慢得等 5、6 秒,于是我就登录预发布环境查看执行日志,发现是 mybatis plus 提供的 saveBatch() 方法执行很慢导致,于是也就有了本篇文章。
72 1
|
SQL Java 数据库连接
14MyBatis - MyBatis介绍
14MyBatis - MyBatis介绍
45 0
|
SQL Java 数据库连接
|
SQL Java 数据库连接