mybatis注解

Mybatis框架基础知识

霸气de小男生 提交于 2020-01-18 09:33:18
mybatis的官方文档网站 https://mybatis.org/mybatis-3/zh/index.html 目录 什么是框架 三层架构和框架 持久层技术解决方案 MyBatis框架概述 mybatis的环境搭建 获取插入数据的id 模糊查询(两种方式) log4j mybatis的参数深入 当表字段与类属性名不一致时的两种解决方案 Properties标签 typeAliases 连接池 mybatis中的连接池 事务(待写) mybatis中的事务 mybatis中的动态sql语句 抽取重复的sql语句 mybatis中的查询 mybatis中一对一的多表查询 mybatis中一对多的查询 mybatis中的延迟加载 一对一的延迟加载 一对多的延迟加载 mybatis中的缓存 mybatis中的一级缓存和二级缓存 一级缓存 二级缓存 mybaits基于注解的配置 主配置文件 CRUD操作 使用延迟加载,一对一关系 使用延迟加载,一对多关系 基于注解开启二级缓存 什么是框架 框架是某种应用的半成品,就是一组组件,是一套解决方案,供你选用完成自己的系统。框架帮你封装了一些细节,开发者可以使用极简的方式实现功能,可以提高程序的开发效率。 三层架构和框架 持久层技术解决方案 JDBC技术: Connection PreparedStatement ResultSet

MyBatis使用注解执行sql语句

无人久伴 提交于 2020-01-17 13:41:08
首先官方文档中的说明: https://mybatis.org/mybatis-3/zh/java-api.html#directoryStructure 映射器注解 因为最初设计时,MyBatis 是一个 XML 驱动的框架。配置信息是基于 XML 的,而且映射语句也是定义在 XML 中的。而到了 MyBatis 3,就有新选择了。MyBatis 3 构建在全面且强大的基于 Java 语言的配置 API 之上。这个配置 API 是基于 XML 的 MyBatis 配置的基础,也是新的基于注解配置的基础。注解提供了一种简单的方式来实现简单映射语句,而不会引入大量的开销。 注意 不幸的是,Java 注解的的表达力和灵活性十分有限。尽管很多时间都花在调查、设计和试验上,最强大的 MyBatis 映射并不能用注解来构建——并不是在开玩笑,的确是这样。比方说,C#属性就没有这些限制,因此 MyBatis.NET 将会比 XML 有更丰富的选择。也就是说,基于 Java 注解的配置离不开它的特性。 1.在注解上使用sql语句,或者通过xml的形式使用动态sql 2.使用provider的方式来生成sql语句: https://www.cnblogs.com/JoeyWong/p/9457118.html 来源: CSDN 作者: bdlaxx 链接: https://blog.csdn

mybatis介绍

浪子不回头ぞ 提交于 2020-01-17 04:28:58
mybatis简介: MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。 以前叫ibatis,现在的mybatis就第三版。 jdbc:编写sql–>预编译–>设置参数–>执行sql–>封装结果 (目的完成JavaBean与DBRecords数据表的映射) 1.功能简单;sql语句编写在Java代码里面;硬编码高耦合,维护不易。 hebernate:将jdbc过程黑箱操作,上述五步全都不要开发人员做;全自动全映射ORM框架,旨在消除sql。但是框架固定的sql不一定适用;这时候就要定制sql语句需要用上HQL。内部产生的sql不易优化,长难复杂sql处理不易,全映射导致数据库性能下降。 希望:sql语句交给开发人员编写;sql不失去灵活性。 mybatis:半自动持久层框架(把关键步骤留给开发人员),轻量级框架;将sql写入配置文件,其他流程还是自动,sql与Java分离;sql是开发人员控制。解耦。 mybatis下载: https://github.com/mybatis

大剑无锋之不都说面试不问mybatis,为什么我被虐了。。。【mybatis面试题】

廉价感情. 提交于 2020-01-17 02:17:44
1、#{}和${}的区别是什么? 答:${}是Properties文件中的变量占位符,它可以用于标签属性值和sql内部,属于静态文本替换,比如${driver}会被静态替换为com.mysql.jdbc.Driver。 #{}是sql的参数占位符,Mybatis会将sql中的#{}替换为?号,在sql执行前会使用PreparedStatement的参数设置方法,按序给sql的?号占位符设置参数值,比如ps.setInt(0, parameterValue),#{item.name}的取值方式为使用反射从参数对象中获取item对象的name属性值,相当于param.getItem().getName()。 2、Xml映射文件中,除了常见的select|insert|updae|delete标签之外,还有哪些标签? 答:还有很多其他的标签,<resultMap>、<parameterMap>、<sql>、<include>、<selectKey>,加上动态sql的9个标签,trim|where|set|foreach|if|choose|when|otherwise|bind等,其中<sql>为sql片段标签,通过<include>标签引入sql片段,<selectKey>为不支持自增的主键生成策略标签。 3、最佳实践中,通常一个Xml映射文件,都会写一个Dao接口与之对应,请问

[Java复习] 面试突击 - Spring

微笑、不失礼 提交于 2020-01-15 12:06:25
说说你对Spring 的IoC 机制 的理解? 没有Spring之前: 写一套系统,web服务器,tomcat,一旦启动之后,他就可以监听一个端口号的http请求,然后可以把请求转交给你的servlet,jsp,配合起来使用的,servlet处理请求。 比如在我们的一个tomcat + servlet的这样的一个系统里,有几十个地方,都是直接用MyService myService = new MyServiceImpl(),直接创建、引用和依赖了一个MyServiceImpl这样的一个类的对象。 这个系统里,有几十个地方,都跟MyServiceImpl类直接耦合在一起了。 如果我现在不想要用MyServiceImpl了,我们希望用的是NewServiceManagerImpl,implements MyService这个接口的,所有的实现逻辑都不同了,此时我们很麻烦,我们需要在系统里,几十个地方,都去修改对应的MyServiceImpl这个类,切换为NewServiceManagerImpl这个类。 改动代码成本很大,改动完以后的测试的成本很大,改动的过程中可能很复杂,出现一些bug,此时就会很痛苦。 归根结底,代码里, 各种类之间完全耦合在一起,出现任何一丁点的变动,都需要改动大量的代码 ,重新测试,可能还会有bug。 有Spring之后: Spring IoC,

Mybatis知识点总结

旧时模样 提交于 2020-01-15 05:56:52
1.什么是MyBatis? 答:MyBatis是一个可以自定义SQL、存储过程和高级映射的持久层框架。 2.MyBatis的缓存 答:MyBatis的缓存分为一级缓存和二级缓存,一级缓存放在session里面,默认就有,二级缓存放在它的命名空间里,默认是不打开的,使用二级缓存属性类需要实现Serializable序列化接口(可用来保存对象的状态),可在它的映射文件中配置 3.Mybatis是如何进行分页的?分页插件的原理是什么? 1)Mybatis使用RowBounds对象进行分页,也可以直接编写sql实现分页,也可以使用Mybatis的分页插件。 2)分页插件的原理:实现Mybatis提供的接口,实现自定义插件,在插件的拦截方法内拦截待执行的sql,然后重写sql。 举例:select * from student,拦截sql后重写为:select t.* from (select * from student)t limit 0,10 推荐看起来比较清晰的PageHelper分页原理 3)PageHelper首先将前端传递的参数保存到page这个对象中,接着将page的副本存放入ThreadLoacl中,这样可以保证分页的时候,参数互不影响,接着利用了mybatis提供的拦截器,取得ThreadLocal的值,重新拼装分页SQL,完成分页。 4.Mybatis的插件运行原理

Spring(一)开篇

别等时光非礼了梦想. 提交于 2020-01-15 00:45:36
目录 1、Spring 介绍 2、Spring 框架的演变 3、Spring 整体架构 Core Container Data Access/Integration Web AOP Test 最后 1、Spring 介绍 在早期 J2EE 时代,开发一个应用程序非常繁琐,先不说对象的创建及管理,如其它数据库访问、提供 Web 服务等都需耗费我们大量时间。当时一位名为 Rod Johnson 的澳大利亚人率先对这种 J2EE 系统框架臃肿、低效的种种现状提出了质疑,之后 Rod Johnson 编写《Expert one on one J2EE design and development》一书,通过书中阐述的部分理念和原型创建了Spring Framework 。(PS:Rod Johnson 居然是音乐学博士???) Spring Framework 是一个轻量级的 Java开源框架,主要是为了解决企业应用开发的复杂性而创建。它的核心是帮助我们管理对象及其依赖关系,但还提供像通用日志记录、性能统计、安全控制、异常处理等面向切面的能力,还集成了大量的第三方框架,如数据库访问框架 Hibernate ,mybatis、Web 服务框架 Struts 、自身提供的SpringMVC,还有任务调度、Redis 缓存,Mq等。 Spring Framework 还致力于 J2EE

Mybatis框架相关知识详解

旧巷老猫 提交于 2020-01-14 03:17:03
Mybatis框架 1、什么是Mybatis? 2、Mybatis的优点 3、Mybatis的缺点 4、Mybatis框架的适用场合 5、#{}和${}的区别是什么 6、实体类中的属性名和表中的字段名不一样,怎么办? 8、编写模糊查询like语句 9、Dao接口的工作原理 10、Mybatis分页原理 11、Mybatis的映射形式 12、使用MyBatis的mapper接口调用时有哪些要求? 13、resultType与resultMap的区别 14、在mapper中如何传递多个参数? 15、Mybatis的Executor执行器 16、Mybatis的动态sql 17、Mybatis的关联查询和实现方式以及区别 18、Mybatis的Xml映射文件和Mybatis内部数据结构之间的映射关系 19、Mybatis的接口绑定以及其实现方式 20、Mybatis缓存 21、Mybatis延迟加载 22、Mybatis的基本工作流程 23、Mybatis实行一对多的操作方式 24、Mybatis实行一对一的操作方式 1、什么是Mybatis? (1)Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。程序员直接编写原生态sql,可以严格控制sql执行性能

Mybatis架构图,运行流程

ε祈祈猫儿з 提交于 2020-01-14 02:41:31
MyBatis本质 就是代理模式体现;MyBatis作者思想认为JDBC开发流程中所有的步骤都是次要业务,认为SQL编写主要任务。开发人员专注于SQL编写应该忽略JDBC开发流程,轻度体现ORM思想。 MyBatis与Hibernate比较 Hibernate:杜绝开发人员亲自使用JDBC,杜绝亲自编写用sql命令,Hibernate无法SQL优化,Hiberante缓存依赖程度过大,一级缓存如何同步二级缓存 MyBatis:杜绝开发人员亲自使用JDBC,认为开发人员专注于sql优化,MyBatis对于缓存依赖轻 MyBatis架构图 mybatis大体上分为三层: 第一层接口层,提供给开发人员用于操作的接口,要求mybatis操作数据库。(接口层不是真正实现的地方,只是用来与程序员做交互的)。 第二层 数据处理层:其中共有四个模块 1)参数映射:怎么将参数映射到相应的sql占位符上 2)sql解析:怎么将配置文件中的sql命令与当前的接口做关联 3)sql执行:判断是何种sql,完成sql调用 4)结果映射:利用反射机制将查询结果将某个实例做个相关的关联 支撑层:连接管理,事务,缓存等管理,配置信息的加载 大体执行流程 代码如下 public class Main { public static void main ( String [ ] args ) throws

黑马mybatis框架笔记大纲

余生长醉 提交于 2020-01-12 21:32:10
黑马mybatis框架 第一天 mybatis入门 mybatis的概述 mybatis的环境搭建 mybatis的入门案例 自定义mybatis框架 第二天 mybatis基本使用 mybatis的单表CRUD操作 mybatis的参数和返回值 mybatis的dao编写 mybatis配置的细节 几个标签的使用 第三天 mybatis的深入和多表 mybatis的连接池 mybatis的事务控制及设计的方法 mybatis的多表查询 一对多(多对一) 多对多 第四天 mybatis的缓存和注解开发 mybatis中的加载时机(查询的时机) mybatis中的一级缓存和二级缓存 mybatis的注解开发 单表CRUD 多表查询 来源: CSDN 作者: 进击的向东 链接: https://blog.csdn.net/weixin_43353418/article/details/103947651