MyBatis

推荐几个IDEA插件,Java开发者撸码利器。

冷暖自知 提交于 2020-11-22 21:38:26
作者:纪莫 链接:www.cnblogs.com/jimoer 这里只是推荐一下好用的插件,具体的使用方法不一一详细介绍。 JRebel for IntelliJ 一款热部署插件,只要不是修改了项目的配置文件,用它都可以实现热部署。收费的,破解比较麻烦。不过功能确实很强大。算是开发必备神器了。热部署快捷键是control+F9/command+F9。 .ignore git提交时过滤掉不需要提交的文件,很方便,有些本地文件是不需要提交到Git上的。 CamelCase 将不是驼峰格式的名称,快速转成驼峰格式,安装好后,选中要修改的名称,按快捷键shift+alt+u。 Lombok plugin 开发神器,可以简化你的实体类,让你i不再写get/set方法,还能快速的实现builder模式,以及链式调用方法,总之就是为了简化实体类而生的插件。 Mybatis plugin 可以在mapper接口中和mapper的xml文件中来回跳转,就想接口跳到实现类那样简单。 codehelper.generator 可以让你在创建一个对象并赋值的时候,快速的生成代码,不需要一个一个属性的向里面set,根据new关键字,自动生成掉用set方法的代码,还可以一键填入默认值。 GenAllSetter 特性 在Java方法中, 根据 new 关键词, 为Java Bean 生成所有Setter方法。

面试官:你分析过mybatis工作原理吗?

♀尐吖头ヾ 提交于 2020-11-22 17:28:33
Mybatis工作原理也是面试的一大考点,必须要对其非常清晰,这样才能怼回去。本文建立在Spring+SpringMVC+Mybatis整合的项目之上。 我将其工作原理分为六个部分: 读取核心配置文件并返回 InputStream 流对象。 根据 InputStream 流对象解析出 Configuration 对象,然后创建 SqlSessionFactory 工厂对象 根据一系列属性从 SqlSessionFactory 工厂中创建 SqlSession 从 SqlSession 中调用 Executor 执行数据库操作&&生成具体SQL指令 对执行结果进行二次封装 提交与事务 先给大家看看我的实体类: 1 /** 2 * 图书实体 3 */ 4 public class Book { 5 6 private long bookId; // 图书ID 7 8 private String name; // 图书名称 9 10 private int number; // 馆藏数量 11 12 getter and setter ... 13 } 1. 读取核心配置文件 1.1 配置文件mybatis-config.xml 1 <?xml version="1.0" encoding="UTF-8" ?> 2 <! DOCTYPE configuration 3 PUBLIC "

一位8年Java工作经验的高级架构师的学习路线图谱

允我心安 提交于 2020-11-22 09:52:15
从小白级到工作8年需要掌握的技术栈大概如下: 0-1年入门: Java基础复盘(面向对象+Java的超类+Java的反射机制+异常处理+集合+泛型+基础IO操作+多线程+网络编程+JDK新特性) Web编程初探(Servlet+MySQL数据库+商品管理系统实战) SSM从入门到精通(Spring+SpringMVC+Mybatis+商品管理系统实战-SSM版+Git+Maven) SpringBoot快速上手(SpringBoot+基于SpringBoot的商品管理系统实战) 零距离互联网项目实战(Linux+Redis+双十一秒杀实战系统) 1-3年高工: 并发编程进阶(并发工具类实战+CAS+显示锁解析+线程池内部机制+性能优化) JVM深度剖析(理解运行时数据区+堆外内存解读+JDK+内存泄漏问题排查+Arthas+GC算法和垃圾回收器+类加载机制等) MySQL深度进阶 深入Tomcat底层(线程模型+性能调优) 3-5年资深: 数据库(调优+事务+锁+集群+主从+缓存等) Linux(命令+生产环境+日志+Nginx等) 中间件&分布式(dubbo+MQ/kafka、ElasticSearch、SpringCloud等组件) 5-8年架构: 开源框架(Spring5源码+SpringMVC源码+Mybatis源码) 分布式架构(Zk实战+RabbitMQ

推荐几个IDEA插件,Java开发者撸码利器。

十年热恋 提交于 2020-11-22 07:50:28
这里只是推荐一下好用的插件,具体的使用方法不一一详细介绍。 JRebel for IntelliJ 一款热部署插件,只要不是修改了项目的配置文件,用它都可以实现热部署。收费的,破解比较麻烦。不过功能确实很强大。算是开发必备神器了。热部署快捷键是control+F9/command+F9。 .ignore git提交时过滤掉不需要提交的文件,很方便,有些本地文件是不需要提交到Git上的。 CamelCase 将不是驼峰格式的名称,快速转成驼峰格式,安装好后,选中要修改的名称,按快捷键shift+alt+u。 Lombok plugin 开发神器,可以简化你的实体类,让你i不再写get/set方法,还能快速的实现builder模式,以及链式调用方法,总之就是为了简化实体类而生的插件。 Mybatis plugin 可以在mapper接口中和mapper的xml文件中来回跳转,就想接口跳到实现类那样简单。 codehelper.generator 可以让你在创建一个对象并赋值的时候,快速的生成代码,不需要一个一个属性的向里面set,根据new关键字,自动生成掉用set方法的代码,还可以一键填入默认值。 GenAllSetter 特性 在Java方法中, 根据 new 关键词, 为Java Bean 生成所有Setter方法。 按GenAllSetter键两次,

Mybatis学习系列(三)动态SQL

和自甴很熟 提交于 2020-11-22 06:55:29
  在mapper配置文件中,有时需要根据查询条件选择不同的SQL语句,或者将一些使用频率高的SQL语句单独配置,在需要使用的地方引用。Mybatis的一个特性:动态SQL,来解决这个问题。 mybatis动态sql语句是基于OGNL表达式的,主要有以下几类: 1. if 语句 (简单的条件判断) 2. choose (when,otherwize) ,相当于java 语言中的 switch ,与 jstl 中的choose 很类似 3. trim (对包含的内容加上 prefix,或者 suffix 等,前缀,后缀) 4. where (主要是用来简化sql语句中where条件判断的,能智能的处理 and or ,不必担心多余导致语法错误)、 5. set (主要用于更新时) 6. foreach (在实现 mybatis in 语句查询时特别有用) if标签语句   if标签用来实现根据条件拼接sql语句,下面示例用来判断参数如果不为null,则拼接sql 示例: < select id ="ifTest" resultType ="com.sl.po.Product" > select * from products where < if test ="ProductName!=null" > name like #{ProductName} </ if > < if

1.spring boot起步之Hello World【从零开始学Spring Boot】

妖精的绣舞 提交于 2020-11-21 23:56:17
【视频&交流平台】 à SpringBoot视频 http://study.163.com/course/introduction.htm?courseId=1004329008&utm_campaign=commission&utm_source=400000000155061&utm_medium=share à SpringCloud视频 http://study.163.com/course/introduction.htm?courseId=1004638001&utm_campaign=commission&utm_source=400000000155061&utm_medium=share à Spring Boot源码 https://gitee.com/happyangellxq520/spring-boot à Spring Boot交流平台 http://412887952-qq-com.iteye.com/blog/2321532 网易云课堂视频最新更新 : 第十一章 Spring Boot 日志 1、spring boot日志—理论 2、Spring Boot日志-logback 3、Spring Boot日志-log4j2 第十二章 Spring Boot 知识点2 1、spring boot 服务配置和部署 2、Spring Boot

基于SpringBoot+uni-app 网易音乐云村项目

为君一笑 提交于 2020-11-21 13:29:01
功能简介 微信登录,发文本动态,发图文动态,发视频动态,关注,转发,评论,点赞,收藏等等 截图 技术栈 后端:Java,SpringBoot,MyBatis,MySQL,Redis 前端:uni-app 开发环境 后端:IntelliJ IDEA 前端:HbuilderX,微信开发者工具,QQ小程序开发者工具 项目运行 源码: 点击即可免费获取基于SpringBoot+uni-app 网易音乐云村项目 小结 开源不易,请尊重作者的付出,感谢!项目的发展离不开你的支持,请作者喝杯咖啡吧。 来源: oschina 链接: https://my.oschina.net/u/4309418/blog/4732157

拼多多四面(Java岗):多线程+算法+网络+MySQL+Redis+分布式

心已入冬 提交于 2020-11-21 12:36:38
一面 线程池由哪些组件组成,有哪些线程池,分别怎么使用,以及拒绝策略有哪些 写一题算法,层次遍历树并输出每层的层级 写一道题,二叉树的后序遍历,非递归算法。 什么时候多线程会发生死锁,写一个例子 说一说jdk1.8中,对hashMap的优化,对concurrentHashMap的优化 如何解决hash冲突的,以及如果冲突了,怎么在hash表中找到目标值 有1000个数据存在hashmap中,实际的数量是多少,考虑负载因子和扩容 常见的RPC有哪些?对应的区别和性能比较? 操作系统的用户态和核心态切换条件以及为什么要切换 线程间的通信方式,异步队列,消息延迟获取 二面 MySQL的主从复制怎么做 MySQL的索引,使用B+树索引的好处 MySQL性能查看以及如何优化 Redis是怎么做缓存的 Redis的持久化操作 如何利用redis处理热点数据 TCP三次握手的过程,如果没有第三次握手有什么问题。 分布式锁怎么实现 三面 cap了解么,分别指什么 网络编程nio和netty相关,netty的线程模型,零拷贝实现 Redis是单线程还是多线程?Redis的分布式集群怎么做? 分布式消息队列有哪些(Kafka等)?有使用过哪些?具体应用在什么场景? 负载均衡怎么做的呢,为什么这么做,了解过集群雪崩么。 谈谈高并发场景下削峰,限流的实现? 四面(HR) 为什么跳槽? 期望的薪资是多少?

如何理解mybatis框架?

浪子不回头ぞ 提交于 2020-11-21 11:10:00
https://www.cnblogs.com/weibanggang/p/9759018.html 特点: mybatis是一种持久层框架,也属于ORM映射。前身是ibatis。 相比于hibernatehibernate为全自动化,配置文件书写之后不需要书写sql语句,但是欠缺灵活,很多时候需要优化; mybatis为半自动化,需要自己书写sql语句,需要自己定义映射。增加了程序员的一些操作,但是带来了设计上的灵活,并且也是支持hibernate的一些特性,如延迟加载,缓存和映射等;对数据库的兼容性比hibernate差。移植性不好,但是可编写灵活和高性能的sql语句。 简单易学 :本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。 灵活 :mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql基本上可以实现我们不使用数据访问框架可以实现的所有功能,或许更多。 解除sql与程序代码的耦合 :通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。 提供映射标签,支持对象与数据库的ORM字段关系映射 提供对象关系映射标签

使用MyBatis在控制台动态打印执行的sql语句

牧云@^-^@ 提交于 2020-11-21 05:05:23
  使用MyBatis进行数据库操作的时候,sql语句都是写在相应的mapper文件中,参数也是使用占位符取值表示的,mapper文件中看不到实时执行的完整sql,有时候sql语句错误或者参数类型不对的时候,由于看不到完整执行的sql,所以无法确定到底是sql的问题,还是参数数值或者类型的问题。   为了方便快速确定动态执行sql的问题,我们可以把动态执行的sql和参数打印到控制台,这时候通过控制台就可以看到执行的完整sql和相应的参数,可以快速定位到问题。   在MyBatis的核心配置文件SqlMapConfig.xml中添加如下配置即可: <? xml version="1.0" encoding="UTF-8" ?> <! DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd" > < configuration > < settings > <!-- 控制台打印sql语句 --> < setting name ="logImpl" value ="STDOUT_LOGGING" /> </ settings > </ configuration >   再执行sql时完整的sql语句和参数就会打印到控制台: