MyBatis

springboot整合mybatis-plus基于纯注解实现一对一(一对多)查询

不问归期 提交于 2020-11-21 04:07:57
因为目前所用mybatis-plus版本为3.1.1,感觉是个半成品,所有在实体类上的注解只能支持单表,没有一对一和一对多关系映射,且该功能还在开发中,相信mybatis-plus开发团队在不久的将来应该会实现此功能。 由于本人开发习惯的原因,实在是太讨厌大量的xml充斥在整个项目中,尤其是表的mapper.xml,虽然有代码生成器可以生成,但是有些复杂的查询还是需要手写配置文件里的动态sql,这点比较反感(至于为什么反感,也是有多方面原因的)。 不过可能是大量的java开发人员已经被虐惯了,已经习惯各种配置文件,虽然有代码生成器,但是本人觉得,这种不是真正的路子,按理说开源出去的东西让别人用的越简单越爽越好,而不是还需要依赖大量的工具配合才能使用(这个观点仁者见仁智者见智吧)。 因为本人采用的是spring-boot进行开发,本身springboot就提倡采用不用配置自动配置的方式,所以真心希望mybatis(不是mybatis-plus)这点需要继续努力。 基于这点,采用了mybatis-plus里的已经实现好的方法来进行了取巧的操作,废话不多说,直接上代码。 数据库是mysql。 demo的思路是这样的:学生表(Student),学生班级表(StudentClass),在学生的实体类里通过班级Id和班级进行一对一关联,主要通过mapper接口来实现,基于@Results、

mybatis-generator-maven-plugin:1.3.2:generate (default-cli) on project ssmTest: XML Parser Error ...

夙愿已清 提交于 2020-11-20 07:05:16
“ ” 这个问题我零零总总几乎用了一天才找到这个bug,正常情况下出现这个问题是配置文件里<generatorConfiguration></generatorConfiguration>中配置元素节点顺序出错,按照提示的顺序重新排列配置文件中的各个元素如<properties resource="dbconfig.properties"></properties>以及 <context id="default" targetRuntime="MyBatis3">下面的元素就可以改好了。 但我不是这个情况,踩到了个大坑 我由于是复制的别人的代码,毕竟是配置文件,完全自己写不太可能基本上都是网上借鉴的。 最后排查出来是这样一个看不见的字符在我的配置文件中。把他删掉就可以逆向工程了。原因是这是一个unique字符格式的字符,虽然我们看不见它。但就是这个字符在配置文件里就导致逆向工程失败。 最后警告看了这篇随笔的朋友,晚上的东西有好有坏,还需仔细着不然浪费的是自己的时间 字符在下面图片的双引号中 来源: oschina 链接: https://my.oschina.net/u/4408961/blog/3339599

mybatis choose标签的使用

 ̄綄美尐妖づ 提交于 2020-11-20 03:57:33
MyBatis 提供了 choose 元素。if标签是与(and)的关系,而 choose 是或(or)的关系。 choose标签是按顺序判断其内部when标签中的test条件出否成立,如果有一个成立,则 choose 结束。当 choose 中所有 when 的条件都不满则时,则执行 otherwise 中的sql。 < select id ="dynamicChooseTest" parameterType ="xxx" resultType ="xxx" > select * from t_blog where 1 = 1 < choose > < when test ="title != null" > and title = #{title} </ when > < when test ="content != null" > and content = #{content} </ when > < otherwise > and owner = "owner1" </ otherwise > </ choose > </ select > 来源: oschina 链接: https://my.oschina.net/u/4382694/blog/4224966

Java面试题2-附答案

只谈情不闲聊 提交于 2020-11-20 03:56:27
JVM的内存结构 根据 JVM 规范,JVM 内存共分为虚拟机栈、堆、方法区、程序计数器、本地方法栈五个部分。 1、Java虚拟机栈: 线程私有;每个方法在执行的时候会创建一个栈帧,存储了局部变量表,操作数栈,动态连接,方法返回地址等;每个方法从调用到执行完毕,对应一个栈帧在虚拟机栈中的入栈和出栈。 2、堆: 线程共享;被所有线程共享的一块内存区域,在虚拟机启动时创建,用于存放对象实例。 3、方法区: 线程共享;被所有线程共享的一块内存区域;用于存储已被虚拟机加载的类信息,常量,静态变量等。 4、程序计数器: 线程私有;是当前线程所执行的字节码的行号指示器,每条线程都要有一个独立的程序计数器,这类内存也称为“线程私有”的内存。 5、本地方法栈: 线程私有;主要为虚拟机使用到的Native方法服务。 强引用,软引用和弱引用的区别 强引用: 只有这个引用被释放之后,对象才会被释放掉,只要引用存在,垃圾回收器永远不会回收,这是最常见的New出来的对象。 软引用: 内存溢出之前通过代码回收的引用。软引用主要用户实现类似缓存的功能,在内存足够的情况下直接通过软引用取值,无需从繁忙的真实来源查询数据,提升速度;当内存不足时,自动删除这部分缓存数据,从真正的来源查询这些数据。 弱引用: 第二次垃圾回收时回收的引用,短时间内通过弱引用取对应的数据,可以取到,当执行过第二次垃圾回收时,将返回null

面了美团我才知道大公司的面试有多恐怖,附上我的美团5面经历,终拿offer!

微笑、不失礼 提交于 2020-11-19 13:26:49
前言 面了美团,越发让我觉得想进大厂还需要很长时间的积累,问的知识点并没有那么多那么宽,但是会比我看到的更深入一点更贴近使用场景一点,自己差的还很远,可能真的要以春招为目标了 1.自我介绍 2.简单说一下项目,项目的问题,难点 3.Mybatis的$和#的区别 4.Mysql的存储引擎有哪些 5.Myisam和Inodb的区别 6.Innodb一定要有主键嘛,原因是什么 7.主键为什么建议使用自增主键,比如是字符串可以做主键嘛 8.Innodb的锁有哪些 9.解释一下间隙锁 10.间隙锁是共享锁还是排它锁 11.共享锁和排它锁对比 12.什么情况触发表锁和行锁和间隙锁(间隙锁没答对被追问了) 13.最左匹配原则,abc,顺序也是abc,什么情况索引肯定会失效,什么情况下整个索引都失效 14.spring mvc的执行流程 15.lock的底层实现原理(忘记了,很尴尬,很急但就是想不起来了) 16.jdk的线程池有哪些,怎么选择使用哪个线程池(只记得概念,怎么选择完全说不出来) 17.核心线程数和最大线程数的数量该设计为多大 18.设计模式了解哪些,工厂模式什么情况会用到 19.哪个框架在什么地方会用到这些模式 20.有用过redis,esmq嘛(后面告诉我我的知识范围宽度广度都需要提高,这些技术还需要去学习 😭😭) 21.jvm什么情况下触发young gc和full gc

Spring Boot + Mybatis Plus 整合——双剑合璧

一笑奈何 提交于 2020-11-19 02:51:20
前言 我前面为了自己的业务开发也写了一套SpringBoot+mybatis整合的自动代码生成工具,并实现了 lombok的使用 ,与 swagger 的整合,但是因为主要只考虑了,自己的编码习惯和业务需求,有很多不支持与问题,后续将持续完善。地址: 自动生成三层代码URL 今天就说说Spring Boot + Mybatis Plus 整合——双剑合璧: POM配置: <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency>

Mybatis一对一关联查询

匆匆过客 提交于 2020-11-19 00:15:05
有两张表,老师表 teacher 和班级表 class ,一个 class 班级对应一个 teacher ,一个 teacher 对应一个 class 需求是根据班级 id 查询班级信息(带老师的信息) 创建 teacher 和 class 表: CREATE TABLE teacher ( t_id INT PRIMARY KEY AUTO_INCREMENT, t_name VARCHAR(20) ); CREATE TABLE class ( c_id INT PRIMARY KEY AUTO_INCREMENT, c_name VARCHAR(20), teacher_id INT ); ALTER TABLE class ADD CONSTRAINT fk_teacher_id FOREIGN KEY (teacher_id) REFERENCES teacher(t_id); INSERT INTO teacher(t_name) VALUES('LS1'); INSERT INTO teacher(t_name) VALUES('LS2'); INSERT INTO class(c_name, teacher_id) VALUES('bj_a', 1); INSERT INTO class(c_name, teacher_id) VALUES('bj_b', 2);

Mybatis关联查询(嵌套查询)

只谈情不闲聊 提交于 2020-11-18 23:59:32
三张表:user article blog 表的存储sql文件: /* Navicat MySQL Data Transfer Source Server : localhost Source Server Version : 50620 Source Host : localhost:3306 Source Database : mybatis Target Server Type : MYSQL Target Server Version : 50620 File Encoding : 65001 Date: 2014-10-19 18:27:31 */ SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for `user` -- ---------------------------- DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `userName` varchar(50) DEFAULT NULL, `userAge` int(11) DEFAULT NULL, `userAddress` varchar(200) DEFAULT NULL

java springmvc+springboot+mybatis+restful b2b2c电子商城

守給你的承諾、 提交于 2020-11-18 03:50:50
电子商务平台源码请加企鹅求求:一零三八七七四六二六。用java实施的电子商务平台太少了,使用spring cloud技术构建的b2b2c电子商务平台更少,大型企业分布式互联网电子商务平台,推出PC+微信+APP+云服务的云商平台系统,其中包括B2B、B2C、C2C、O2O、新零售、直播电商等子平台。 Spring Cloud大型企业分布式微服务云构建的B2B2C电子商务平台源码请加企鹅求求:一零三八七七四六二六 技术解决方案 开发语言: java、j2ee 数据库:mysql JDK支持版本: JDK1.6、JDK1.7、JDK1.8版本 核心技术:分布式、云服务、微服务、服务编排等。 核心架构: 使用Spring Cloud分布式微服务云架构进行服务化开发,所有模块功能完全解耦,提供服务发现、注册、配置中心、消息总线、负载均衡、断路器、数据监控等。 技术列表: Spring Cloud Config 配置管理工具包,让你可以把配置放到远程服务器,集中化管理集群配置,目前支持本地存储、Git以及Subversion Spring Cloud Bus 事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与Spring Cloud Config联合实现热部署 Eureka 云端服务发现,一个基于 REST 的服务,用于定位服务,以实现云端中间层服务发现和故障转移。