浅谈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操作多个表的情况就会有误所以还是有局限的。


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

相关文章
|
8月前
|
SQL Java 数据库连接
MyBatis大全
MyBatis大全
32 0
|
8月前
|
Java 数据库连接 mybatis
|
6天前
|
SQL Java 数据库连接
从0开始回顾Mybatis
Mybatis 1、什么是Mybatis? 概念: 1. Mybatis 是一个半 ORM(对象关系映射)框架,它内部封装了 JDBC,开发时只需要关注 SQL 语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement 等繁杂的过程。程序员直接编写原生态 sql,可以严格控制 sql 执行性能,灵活度高。 2. MyBatis 可以使用 XML 或注解来配置和映射原生信息,将 POJO 映射成数据库中的记录,避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。 缺点: 1. SQL语句的编写工作量较大,尤其当字段多、关联表多时,对开发人员编写SQL语句的功底有一定要求
|
8月前
|
SQL 安全 Java
Mybatis
参数传递 单个普通参数:Mybatis可以直接使用这个值,取值#{ },不会对它进行处理 多个参数:任意多个参数,都会被Mybatis封装成一个Map传入,map的key时param1,param2,或者0.1.2.......,就是参数的值
28 1
|
8月前
|
SQL Java 数据库连接
|
11月前
|
SQL XML 存储
Mybatis总结
Mybatis总结
88 0
|
11月前
|
SQL 缓存 IDE
|
12月前
|
算法 Java 关系型数据库
MyBatis-Plus基本的使用
MyBatis-Plus基本的使用
|
SQL Oracle Java
|
XML SQL Java
Mybatis使用问题汇总
JDK1.8分组问题产生的SQL需求
82 0