MyBatis

微服务分布式企业框架

我的梦境 提交于 2020-04-21 20:22:05
微服务分布式企业框架 Springmvc+mybatis+shiro+Dubbo+ZooKeeper+Redis+KafKa - 知乎 https://zhuanlan.zhihu.com/p/28978979 roncoo-pay: 龙果支付系统(roncoo-pay)是国内首款开源的互联网支付系统,拥有独立的账户体系、用户体系、支付接入体系、支付交易体系、对账清结算体系。目标是打造一款集成主流支付方式且轻量易用的支付收款系统,满足互联网业务系统打通支付通道实现支付收款和业务资金管理等功能。 https://gitee.com/roncoocom/roncoo-pay Exrick/xmall: 基于SOA架构的分布式电商购物商城 前后端分离 前台商城:Vue全家桶 后台管理系统:Dubbo/SSM/Elasticsearch/Redis/MySQL/ActiveMQ/Shiro/Zookeeper等 https://github.com/Exrick/xmall 来源: oschina 链接: https://my.oschina.net/u/4274145/blog/3290475

java操作数据库的几种方式

心不动则不痛 提交于 2020-04-21 18:56:15
历史就是一面镜子 回顾自己开发的历程,见证了时代变迁史记,下面我针对java连接数据库的方式说起 0 原生jdbc 先普及下jdbc,怕新入行的人早已沉浸在包装库和框架中,甚至都没用过原生jdbc。 Java数据库连接,全称是Java Database Connectivity,简称JDBC,是 J ava语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。我们通常说的JDBC是面向关系型数据库的。百科这样解释的 Java数据库连接 。 开发人员要做的几个步骤: 开发步骤:   1、注册驱动.,告知JVM使用的是哪一个数据库的驱动   2、获得连接.,使用JDBC中的类,完成对MySQL数据库的连接   3、获得语句执行平台,通过连接对象获取对SQL语句的执行者对象   4、执行sql语句,使用执行者对象,向数据库执行SQL语句 获取到数据库的执行后的结果   5、处理结果   6、释放资源. 注意写代码之前,要导入数据库驱动包,连接不同厂商的数据库要用不同的驱动包 对应的驱动包 新建项目,普通的java项目就行,导入第三方jar太简单了,自行百度 示例代码如下: import java.io.BufferedInputStream; import java.io

Java工程师连斩五份offer,工资20k+,全靠这份PDF面试题!

耗尽温柔 提交于 2020-04-21 17:42:53
由于内容太过全面,所有这里只题目目录截出来粗略的介绍一下,这份PDF文档有将近五百页,内容覆盖了:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Spring、Spring Boot、Spring Cloud、RabbitMQ、Kafka、Linux 等技术栈: ( 如果觉得对你有帮助,记得点赞,关注,分享, 三连,非常感谢!!!) 文末可领取: MyBatis(27道) ZooKeeper(28道) Dubbo(30道) Elasticsearch(24道) Memcached(23道) Redis(40道) MySQL(50道) Java 并发编程(一)Java 并发编程(二)(123道) Java面试题(一)Java面试题(二)(228道) Spring 面试题(一)Spring 面试题(二)(119道) 微服务(20道) Linux(45道) Spring Boot(22道) Spring Cloud(8道) RabbitMQ(12道) kafka(18道) 文末有读者福利,往下翻: 答案,关注公众号下面二维码,即可 来源: oschina 链接: https://my.oschina.net/u/4506875/blog/3290565

MyBatis-Plus学习笔记(1):环境搭建以及基本的CRUD操作

故事扮演 提交于 2020-04-21 08:29:49
MyBatis-Plus是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,使用MyBatis-Plus时,不会影响原来Mybatis方式的使用。 SpringBoot+MyBatis-Plus环境搭建 SQL脚本: CREATE TABLE `tb_user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `real_name` varchar(20) DEFAULT NULL, `email` varchar(50) DEFAULT NULL, `phone` varchar(20) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO tb_user (real_name,email,phone) VALUES ('小花','cf1@qq.com','18711111111'); INSERT INTO tb_user (real_name,email,phone) VALUES ('小菊','cf2@qq.com','18322222222'); INSERT INTO tb_user (real_name,email,phone) VALUES ('小熊','cf3@qq.com',

一文看尽Java-并发编程知识点

笑着哭i 提交于 2020-04-21 07:15:49
一、前言 从7月份开始一直加班比较多,一直到双11结束,博客没跟上写,接下来写一点总结性的东西,比如Java并发编程总结、Mybatis源码总结、Spring源码和基础知识总结,首先来看下并发编程总结,几乎容纳所有并发编程的知识点中重要的部分,花了我很久的时间总结的; 二、Java并发编程脑图 总体分为12个部分,包括基础(Thread相关)、同步原语(synchronized、volatile、final)、内存模型(JMM)、LOCK(常见的锁)、原子锁(乐观锁)、并发容器、多线程中常用的一些概念、并发工具类(CountDownLatch等)、Fork-join、阻塞队列、FutureTask,基本覆盖了Java并发体系的知识,相信大家还是能在里面收获一些东西,这也是我源码以后的一些总结,也参考很多博客,也盗了很多图,愿大家能够借助这份脑图,踏破Java并发编程这条路,加油。以后时间不太紧张的时候也会一点一点写成博客,在并发的这条路上我们一同成长。图片有点长,大家要是看不清晰,可以关注我公众号,回复 Java并发编程 ,我会把整体重新排版,编辑成为PDF,供大家下载。 三、结束 欢迎大家加群438836709!欢迎大家关注我! 原文出处:https://www.cnblogs.com/wtzbk/p/12008172.html 来源: oschina 链接: https:/

MyBatis 示例-联合查询

雨燕双飞 提交于 2020-04-21 06:22:20
简介 MyBatis 提供了两种联合查询的方式,一种是嵌套查询,一种是嵌套结果。先说结论:在项目中不建议使用嵌套查询,会出现性能问题,可以使用嵌套结果。 测试类:com.yjw.demo.JointQueryTest,提供了对 嵌套查询 和 嵌套结果 的测试。 数据库表模型关系 学生信息级联模型关系: 链接 学生信息级联模型关系是一个多种类型关联关系,包含了如下几种情况: 其中学生表是我们关注的中心,学生证表和它是一对一的关联关系; 而学生表和课程成绩表是一对多的关系,一个学生可能有多门课程; 课程表和课程成绩表也是一对多的关系; 学生有男有女,而健康项目也有所不一,所以女性学生和男性学生的健康表也会有所不同,这些是根据学生的性别来决定的,而鉴别学生性别的就是鉴别器。 关联关系 在联合查询中存在如下几种对应关系: 一对一的关系; 一对多的关系; 多对多的关系,实际使用过程中是把多对多的关系分解为两个一对多的关系,以降低关系的复杂度; 还有一种是鉴别关系,比如我们去体检,男女有别,男性和女性的体检项目并不完全一样; 所以在 MyBatis 中联合分为这么3种:association、collection 和 discriminator。 association:代表一对一关系; collection:代表一对多关系; discriminator:代表鉴别器

在实施分布式服务化架构过程中如何解决关于分布式事务问题的困扰--常用的分布式事务解决方案介绍

巧了我就是萌 提交于 2020-04-21 05:04:02
为了解决大家在实施分布式服务化架构过程中关于分布式事务问题的困扰,本教程将基于支付系统真实业务中的经典场景来对“可靠消息的最终一致性方案”、“TCC两阶段型方案”和“最大努力通知型方案”这3种柔性事务解决方案进行具体设计实现和详细讲解。 教程提供的 分布式事务解决方案的设计思路 在所有微服务架构项目中都适用,与编程语言无关,教程中会重点讲解方案的设计思路。 样例项目基于龙果学院开源的微支付系统进行实现,使用Dubbo作为服务化框架,教程中所实现的分布式事务解决方案在Java体系中的微服务架构系统都能通用,与具体的开发框架无关。 教程样例项目中用到的技术及相应的环境: Dubbo、Spring、SpringMVC、MyBatis、Druid、JDK7(或JDK8)、MySQL5.6、Tomcat 扩展阅读: https://www.roncoo.com/view/20 来源: oschina 链接: https://my.oschina.net/u/4386758/blog/3275942

Mybatis的简介

此生再无相见时 提交于 2020-04-21 04:14:21
1.1、什么是Mybatis MyBatis 是一款优秀的 持久层框架 它支持定制化 SQL、存储过程以及高级映射。 MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。 MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。 MyBatis 本是 apache 的一个开源项目 iBatis , 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。 2013年11月迁移到Github。 如何获得Mybatis? maven仓库: <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --> < dependency > < groupId > org.mybatis </ groupId > < artifactId > mybatis </ artifactId > < version > 3.5.2 </ version > </ dependency > Github : https://github.com/mybatis/mybatis-3/releases 中文文档

mybatis递归,一对多代码示例

你离开我真会死。 提交于 2020-04-20 16:00:21
今天需要做一个功能,根据专业,有不同的章节,章节下面有对应的习题, 由于只有这么两级,可以不用使用递归,直接查询父集,之后foreach查询子集放入对应的list集合。 虽然实现了,感觉毕竟,太low。 有同事跟我说可以使用mybatis的递归实现,就学习了下。 对应的bean里面需要有对应的list<bean> lists的引用。 直接上代码 对应的sql语句 CREATE TABLE `goods_category` ( `goodscateid` int ( 11 ) NOT NULL AUTO_INCREMENT, `name` varchar ( 255 ) DEFAULT NULL , `parentid` int ( 11 ) DEFAULT NULL , `description` varchar ( 255 ) DEFAULT NULL , `displayorder` int ( 11 ) DEFAULT NULL , `commissionrate` double DEFAULT NULL , `enabled` int ( 11 ) DEFAULT NULL , PRIMARY KEY (`goodscateid`) ) ENGINE = InnoDB AUTO_INCREMENT = 11 DEFAULT CHARSET = utf8; /* Data

Mybatis04--动态SQL

喜你入骨 提交于 2020-04-20 09:55:07
前言: 在以前我们使用JDBC或者其它框架时,一件很痛苦的事情是根据不同条件拼接 SQL 语句。拼接的时候要确保不能忘了必要的空格,还要注意省掉列名列表最后的逗号。然而现在,我们利用动态 SQL 这一特性就可以彻底摆脱这种痛苦。 通常使用动态SQL不可能是独立的一部分,MyBatis当然使用一种强大的动态SQL语言来改进这种情形,这种语言可以被用在任意映射的SQL语句中。 动态SQL元素和使用JSTL或其它相似的基于XML的文本处理器相似,在MyBatis之前的版本中,有很多元素需要了解,MyBatis3大大地提升了它们,现在用不到原先一半的元素就能工作了,MyBatis采用功能强大的基于OGNL的表达式来消除其他元素。 if: 动态 SQL 通常要做的事情是有条件地包含 where 子句的一部分。比如: < select id= "findBlog" resultType= "Blog" > SELECT * FROM BLOG WHERE state = ‘ACTIVE’ < if test= "title != null" > AND title like #{title} </ if > </ select > 这条语句提供了一个可选的文本查找类型的功能。 如果没有传入“title”,那么所有处于“ACTIVE”状态的BLOG都会返回 ;反之若传入了“title”