首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Java数据持久层

    a.解析模块 Mybatis的配置,有三种途径: XML:如Mybatis-config.xml 注解:如DAO接口方法上的@Select 注入:如MybatisConfiguration类 其中,XML...不同于SAX,在StAX 解析方式中,应用程序控制着整个解析过程的推进,可以简化应用处理XML 文档的代码,并且决定何时停止解析,而且StAX 可以同时处理多个XML 文档。...b.反射模块 Mybatis运行过程中,大量使用了反射(如生成DAO对应代理实现类)。Mybatis对Java原生的反射操作进行了进一步的封装,从而提供更加简洁的API。...如TypeParameterResolver#resolveReturnType会返回对应类&方法的返回类型。在Mybatis源码的测试类中,存在对应测试。...// 这里为什么不作为私有方法处理。个人猜测:一方面是命名(命名与语义关联);另一方面是为了更直观展示other的处理方式,提高代码可读性?

    25910

    MyBatis面试题总结「建议收藏」

    1.6 怎么解决实体类中的属性名和表中的字段名不一样的问题? 1.7 如何在mapper中传递多个参数? 1.8 MyBatis的接口绑定有哪些实现方式?...2.2 为什么MyBatis Mapper接口中的方法不支持重载? 2.3 Mybatis动态sql执行原理? 2.4 Mybatis的一级、二级缓存实现原理?...),然后利用代理对象工厂MapperProxyFactory创建实际代理类(MapperProxy),最后在MapperProxy类中通过MapperMethod类对象内保存的中对应方法的信息,以及对应的...2.2 为什么MyBatis Mapper接口中的方法不支持重载?...类中通过MapperMethod类对象内保存的中对应方法的信息,以及对应的sql语句的信息进行分析,最终确定对应的增强方法进行调用。

    97720

    Mybatis_总结_05_用_Java API

    Resources 类正如其名,会帮助你从类路径下、文件系统或一个 web URL 中加载资源文件。看一下这个类的源代码或者通过你的 IDE 来查看,就会看到一整套相当实用的方法。...五、SqlSession 正如上面所提到的,SqlSession 实例在 MyBatis 中是非常强大的一个类。在这里你会看到所有执行语句、提交或回滚事务和获取映射器实例的方法。...extends T> context); } ResultContext 参数允许你访问结果对象本身、被创建的对象数目、以及返回值为 Boolean 的 stop 方法,你可以使用此 stop 方法来停止...2.批量立即更新方法 有一个方法可以刷新(执行)存储在 JDBC 驱动类中的批量更新语句。当你将 ExecutorType.BATCH 作为 ExecutorType 使用时可以采用此方法。...任何在 session 执行过的查询语句本身都会被保存在本地缓存中,那么,相同的查询语句和相同的参数所产生的更改就不会二度影响数据库了。

    92820

    SqlSessionFactoryBuilder、SqlSessionFactory 和 SqlSession

    如果你调用了参数有 properties 实例的方法,那么 MyBatis 就会加载那些 properties(属性配置文件),并在配置中可用。...它们都会自行解释,每一句都使用语句的 ID 属性和参数对象,参数可以是原生类型(自动装箱或包装类)、JavaBean、POJO 或 Map。...extends T> context); } ResultContext 参数允许你访问结果对象本身、被创建的对象数目、以及返回值为 Boolean 的 stop 方法,你可以使用此 stop 方法来停止...批量立即更新方法 有一个方法可以刷新(执行)存储在 JDBC 驱动类中的批量更新语句。当你将 ExecutorType.BATCH 作为 ExecutorType 使用时可以采用此方法。...任何在 session 执行过的查询语句本身都会被保存在本地缓存中,那么,相同的查询语句和相同的参数所产生的更改就不会二度影响数据库了。

    68110

    MyBatis-4.Java API

    extends T> context); } ResultContext参数允许你访问结果对象本身、被创建的对象数目、以及返回值为 Boolean 的 stop 方法,你可以使用此 stop 方法来停止...批量立即更新方法 有一个方法可以刷新(执行)存储在 JDBC 驱动类中的批量更新语句。当你将 ExecutorType.BATCH 作为 ExecutorType 使用时可以采用此方法。...任何在 session 执行过的查询语句本身都会被保存在本地缓存中,那么,相同的查询语句和相同的参数所产生的更改就不会二度影响数据库了。...当执行映射语句的时候,MyBatis 会实例化类并执行方法,类和方法就是填入了注解的值。...如果有 XML 的结果映射,请使用 @ResultMap 注解。如果结果类型在 XML 的 节点中指定了,就不需要其他的注解了。其他情况下则使用此注解。

    1.1K40

    Mybatis拦截器之数据加密解密

    拦截器介绍 Mybatis Interceptor 在 Mybatis 中被当作 Plugin(插件),不知道为什么,但确实是在 org.apache.ibatis.plugin 包下面 既然是拦截器,...,但是返回来的数据要真实可用,所以我们需要针对 Parameter 和 ResultSet 两种类型处理,同时为了更灵活的使用,我们需要自定义注解 自定义注解 类注解,将注解放在实体类上 /** *...核心代码已上传至 Github Demo 问题彩蛋 也许应对当前的业务,看了该文章满足了当下需求,我们目前只看到了什么是 Mybatis 拦截器,怎样简单使用,拦截器的其他用法以及其他很多为什么都没有解决...,关注公众号,回复“人迹罕至” 读完文章 「程序猿为什么要看源码」后 ,我不会满足眼前的这些基本应用,我会有诸多疑问, 我们日常写 CRUD 的业务,为什么 Executor 中只有 R(query)...如 Mybatis Plus, PageHelper 虽然重写了 Inteceptor 接口的 public void setProperties(Properties properties) 方法,但是并没有写什么业务逻辑

    2.7K50

    2021吃透这套Java面试真题200+(附答案解析)

    // true 同样的,当我们进入 String 的 equals 方法,找到了答案,代码如下: public boolean equals(Object anObject) { if (this ==...说一下你熟悉的设计模式? 89. 简单工厂和抽象工厂有什么区别? 90. 为什么要使用 spring? 91. 解释一下什么是 aop 92. 解释一下什么是 ioc?...115. hibernate 中如何在控制台查看打印的 SQL 语句? 116. hibernate 有几种查询方式? 117. hibernate 实体类可以被定义为 final 吗? 118....MyBatis 中 #{}和 ${}的区别是什么? 126. MyBatis 有几种分页方式? 127. RowBounds 是一次性查询全部结果吗?为什么? 128....RabbitMQ 节点的类型有哪些? 148. RabbitMQ 集群搭建需要注意哪些问题? 149. RabbitMQ 每个节点是其他节点的完整拷贝吗?为什么? 150.

    93721

    Java集合面试题&知识点总结(中篇)

    如何在 Java 中使用 Java 8 的 Stream API 处理集合? 问题 40. 如何在 Java 中使用 Java 8 的 forEach 方法遍历集合?...当多个线程对一个集合进行并发操作时,如果一个线程通过迭代器(Iterator)在遍历集合的过程中,其他线程修改了集合的结构(如添加、删除元素),那么正在遍历的线程会立即抛出 ConcurrentModificationException...如果遇到 ConcurrentModificationException 异常,应该检查代码,确保在遍历集合的过程中,没有其他线程对集合进行修改。...以上就是一些使用 Stream API 处理集合的例子,Stream API 还提供了很多其他的方法,如 reduce()、collect()、flatMap() 等,可以满足各种复杂的数据处理需求。...在上述代码中,我们使用了 lambda 表达式和方法引用两种方式来处理集合中的每个元素。

    55620

    MyBatis官方文档-Java API

    Resources 类正如其名,会帮助你从类路径下、文件系统或一个 web URL 中加载资源文件。看一下这个类的源代码或者通过你的 IDE 来查看,就会看到一整套相当实用的方法。...extends T> context); } ResultContext 参数允许你访问结果对象本身、被创建的对象数目、以及返回值为 Boolean 的 stop 方法,你可以使用此 stop 方法来停止...批量立即更新方法 有一个方法可以刷新(执行)存储在 JDBC 驱动类中的批量更新语句。当你将 ExecutorType.BATCH 作为 ExecutorType 使用时可以采用此方法。...任何在 session 执行过的查询语句本身都会被保存在本地缓存中,那么,相同的查询语句和相同的参数所产生的更改就不会二度影响数据库了。...如果有 XML 的结果映射,请使用 @ResultMap 注解。如果结果类型在 XML 的 节点中指定了,就不需要其他的注解了。其他情况下则使用此注解。

    1.9K10

    (Java实习生)每日10道面试题打卡——Java基础知识篇「建议收藏」

    Java是面向对象的编程语言,不同于C语言是面向过程的。...3、为什么说 Java 是一种半解释半编译的程序设计语言呢? 什么是编译形语言,什么又是解释形语言? 编译型语言:把做好的源程序全部编译成二进制代码的可运行程序。然后,就可以直接运行这个程序。...没有经过编译的.java文件,是没办法运行的! 那么为什么又说Java 是解释型语言呢?...除了void之外,其他8种基本数据类型被称为八大基本数据类型。 图中从左向右的转换都是隐式转换,无需再代码中进行强制转换。从右向左均要进行强制类型转换,才能通过编译。强制转换会丢失精度。...5、请你讲讲抽象类和接口有什么区别? 二者相同之处 接口与抽象类都不能被实例化,需要被其他进行实现或继承。 接口与抽象类里面都能包含抽象方法,实现接口或继承抽象类的子类都必须实现这些抽象方法。

    99620

    MyBatis 批量插入数据的 3 种方法!

    :UserController(控制器)、UserServiceImpl(业务逻辑实现类)、UserMapper(数据库映射类),它们的调用流程如下: 注意此方法实现需要先添加 MP 框架,打开...,但在使用的时候记得一定要将上面的 “mybatis-plus-latest-version”替换成换成具体的版本号,如 3.4.3 才能正常的引入框架。...MP 的核心实现代码是 saveBatch 方法,此方法的源码如下: 我们继续跟进 saveBatch 的重载方法: 从上述源码可以看出,MP 是将要执行的数据分成 N 份,每份 1000...3.原生批量插入 原生批量插入方法是依靠 MyBatis 中的 foreach 标签,将数据拼接成一条原生的 insert 语句一次性执行的,核心实现代码如下。...;使用 MyBatis 拼接原生 SQL 一次性插入的方法性能最高,但此方法可能会导致程序执行报错(触发了数据库最大执行 SQL 大小的限制),所以综合以上情况,可以考虑使用 MP 的批量插入功能。

    4.6K10

    mybatis-plus批量插入你用对了吗

    一次代码review,大佬说了算记得有一次我们小组code review,组长看了下我们批量插入是使用mybatis原生的xml foreach实现的,于是二话不说,拍桌子,说这有性能问题。...实践是检验真理的唯一标准,我们分别使用mp批量插入方法和mybatis foreach来验证相关环境准备引入 mybatis-plus 方法的解释是图片 protected long[] executeBatchSerially(int batchTimeout) throws SQLException { synchronized...(可以简单的理解为jdbc和server服务端一次通信的过程),区别在于是否通过遍历一条一条的发送;mybatis foreach 执行过程由于引入的mybatis-plus ,mapper代理类是MybatisMapperProxy...但是,为何在大数据量批量插入场景下不推荐使用,可能就是考虑网络阻塞以及server端处理涉及到长事务问题吧;使用mybatis-plus 批量插入,需要开启rewriteBatchedStatements

    4.6K50

    浅谈MyBatis批量插入方法,10w条数据处理仅需2秒

    :UserController(控制器)、UserServiceImpl(业务逻辑实现类)、UserMapper(数据库映射类),它们的调用流程如下: 注意此方法实现需要先添加 MP 框架,打开 pom.xml...,但在使用的时候记得一定要将上面的 “mybatis-plus-latest-version”替换成换成具体的版本号,如 3.4.3 才能正常的引入框架。...MP 的核心实现代码是 saveBatch 方法,此方法的源码如下: 我们继续跟进 saveBatch 的重载方法: 从上述源码可以看出,MP 是将要执行的数据分成 N 份,每份 1000 条,每满...3.原生批量插入 原生批量插入方法是依靠 MyBatis 中的 foreach 标签,将数据拼接成一条原生的 insert 语句一次性执行的,核心实现代码如下。...;使用 MyBatis 拼接原生 SQL 一次性插入的方法性能最高,但此方法可能会导致程序执行报错(触发了数据库最大执行 SQL 大小的限制),所以综合以上情况,可以考虑使用 MP 的批量插入功能。

    9.6K41

    2021金三银四,啃完这35个Java技术栈,冲刺年薪百万!

    能不能解释一下方法区 什么是JVM字节码执行引擎 堆栈的区别是什么? Java会存在内存泄漏吗?请说明为什么? 垃圾回收器的原理是什么?有什么办法手动进行垃圾回收?...32、Mybatis能执行一对多,一对一的联系查询吗,有哪些实现方法 33、Mybatis是否可以映射Enum枚举类? 34、简述Mybatis的插件运行原理,以及如何编写一个插件。...如确定对 象的锁 ? 现在有 T1、T2、T3 三个线程,你怎样保证 T2 在 T1 执行完后执行,T3 在 T2 执行完后执行? 在 java 中 wait 和 sleep 方法的不同?...除 了 ReetrantLock, 你 还 接 触 过 JUC 中 的 哪 些 并 发 工 具 ? 如 何 让 Java 的 线 程 彼 此 同 步 ? 你 了 解 过 哪 些 同 步 器 ?...请解释 ngx_http_upstream_module 的作用是什么? 解释如何在 Nginx 中获得当前的时间? 解释如何在 Nginx 服务器上添加模块? Nginx的优缺点?

    2.2K22

    牛逼哄哄的Spring是怎么被MyBatis给征服了?

    一、你一定用到过的 MyBatis-Spring 我个人而言,是十分喜欢MyBatis的开发者的,为什么呢?不光是因为他的功能强大,更多的是因为其开发团队的良心!为什么这么说呢?...感兴趣的小伙伴可以进入的MyBatis-Spring的源码中,你会发现一件事,MyBatis-Spring并不是由Spring进行开发的,而是MyBatis自己进行开发的!为什么呢?...基于在 Spring 中对 MyBatis 提供支持的兴趣,MyBatis 社区认为,应该开始召集有兴趣参与其中的贡献者们,将对 Spring 的集成作为 MyBatis 的一个社区子项目。...ClassPathMapperScanner的scan方法,将扫描到的类转换成对应的BeanDefinition注册到容器中,正常来说我们应该关注的是scan方法,但是但是,我们在看scan之前,应该重点的关注一下...* 此方法不会注册注释配置处理器而是将其留给调用方。

    61430

    用了这么多年分页PageHelper,才发现自己一直用错了!

    “ 答: Java8中新特性之一就是为interface接口类增加了static/default方法,即声明方法后,其子类或实现都将默认具有这些方法,可以直接调用 而在此处为Page方法声明default...,在不了解它更多意义上的作用前,可以作为我们分页参数声明的一种规范,而IPage中也只声明了三个方法,分别是pageNum/pageSize/orderBy的Getter方法,另外在源码分析中,我将会提到实现此接口更深层的意义...判断是否为IPage的子类或实现类 如果以上两个if/else 皆不满足,则PageHelper则会在我省略贴出的代码中通过大量的反射代码来获取pageNum/pageSize以及orderBy....那么到此为止,我们也终于解释并知道了为什么PageParam要实现IPage接口了,在此处的代码中可以直接通过接口获取到分页参数,而不需要通过有损性能的反射获取PageHelper需要的参数 ”...MyBatis拦截器,因代码量过多,为了保证不违反本博文文不对题的原则,此处不再做多余讲解,如有需要,我可以另行写一篇博客单独解释并讲解MyBatis拦截器的概念和原理,深度解析MyBatis源码 拓展

    11.2K43

    2019年Java面试经典100问,进入BAT不是梦

    【基础】 7、是否可以继承String 类? 【基础】 8、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?...【基础】 30、当一个线程进入一个对象的 synchronized 方法 A 之后,其它线程是否可进入此对象的 synchronized 方法 B?...【基础】 43、讲解 JSP 中的四种作用域。【基础】 三、SSM框架 44、MyBatis 中使用#和$书写占位符有什么区别?...【中等】 45、解释一下 MyBatis 中命名空间(namespace)的作用。【中等】 46、什么是 IoC 和 DI?DI 是如何实现的?【中等】 47、解释一下什么叫 AOP(面向切面编程)?...【基础】 74、Spring Boot 需要独立的容器运行吗?【基础】 75、如何在 Spring Boot 启动的时候运行一些特定的代码?

    59320

    记一次使用 Lombok 翻车造成的事故!

    最近有粉丝说,涛哥,为什么你写的文章头部要带一个 slogan。我说,这是因为我的文章,被腾讯云,csdn等“同步”走了。加个 slogan,不迷路!...; ....其他属性 } 当我们使用 Mybatis 插入数据的时候,发现,其他属性都能正常的插入,但是就是 nMetaType 属性在数据库一直是 null。...解决 当我 Debug 项目代码到调用 Mybatis 的插入 SQL 对应的方法的时候,我看到 NMetaVerify 对象的 nMetaType 属性还是有数据的,但是执行插入之后,数据库的 nMetaType...Character.isUpperCase(name.charAt(1))) // 属性名字长度大于1,并且第二个(代码中的charAt...要么就等待 easyexcel 的作者替换掉底层的 cglib 或者是其他,反正是支持获取返回值不是 void 的 setxxx 方法就行。

    1.2K31
    领券