MyBatis

阿豪说Spring之开篇BeanFactory

戏子无情 提交于 2020-12-06 08:19:53
写在前面 想来从开始接触和使用Spring已四年有余,虽说使用不成问题,但对其内部具体实现实现原理却只知一二,于是乎痛下决心要好好撸一遍Spring,以便更好地使用Spring的高级功能而且还能知其然知其所以然,吸收它的好思想、设计模式等等,从现在开始每次把get到的相关内容跟各位客官分享,愿一起进步,一起走的更远!除了Spring,后续我们也尝试着撸Mybatis等框架,以求功力大增。 Spring基石 BeanFactory,毫无疑问,就是生产Bean的工厂。我们都知道Spring框架提倡我们使用POJO,如果我们把每个业务对象都看成是一个JavaBean的话,我们就能很好的理解这个名字的由来了。Spring中生产Bean的过程并没有想象中的简单,这个工厂至少还应该具有业务对象的注册以及对象间依赖关系绑定等功能,这样看起来才是一个完整的工厂。 我们都知道苹果公司将自己生产的或者从别的供应商那里采购的手机零件输送到富士康工厂,那就可以在富士康生产线的最后一个节点获取成品的苹果手机。如果我们可以把BeanFactory看作是富士康厂,那手机配件就是各个业务对象。也就是说我们可以直接从BeanFactory中获取已经组装好的所需对象,而不需要关心该对象到底是如何被组装出来的。 对于我们这些使用框架的来说,使用BeanFactory其实很简单,因为它已经提供了取得组装完成的对象的方法

RestFul风格接口示例

回眸只為那壹抹淺笑 提交于 2020-12-06 05:26:33
REST是英文representational state transfer(表象性状态转变)或者表述性状态转移;Rest是web服务的一种架构风格;使用HTTP,URI,XML,JSON,HTML等广泛流行的标准和协议;轻量级,跨平台,跨语言的架构设计;它是一种设计风格,不是一种标准,是一种思想 Rest架构的主要原则 网络上的所有事物都被抽象为资源 每个资源都有一个唯一的资源标识符 同一个资源具有多种表现形式(xml,json等) 对资源的各种操作不会改变资源标识符 所有的操作都是无状态的 符合REST原则的架构方式即可称为RESTful 什么是Restful: 对应的中文是rest式的;Restful web service是一种常见的rest的应用,是遵守了rest风格的web服务;rest式的web服务是一种ROA(The Resource-Oriented Architecture)(面向资源的架构). 为什么会出现Restful 在Restful之前的操作: http://127.0.0.1/user/query/1 GET 根据用户id查询用户数据 http://127.0.0.1/user/save POST 新增用户 http://127.0.0.1/user/update POST 修改用户信息 http://127.0.0.1/user/delete GET

美团工作7年,精华全在这份学习笔记里了,已成功帮助多位朋友拿到5个大厂Offer

那年仲夏 提交于 2020-12-05 14:58:27
在美团工作了7年,工作压力大,节奏快,但是从技术上确实得到了成长,尤其是当你维护与大促相关的系统的时候,笔者也是个爱学习的人,把这几年的工作经验整理成了一份完整的笔记。此笔记已助朋友拿到腾讯,阿里,美团等5个offer。 由于细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容! 大致内容包括了: Java 集合、JVM、多线程、并发编程、设计模式、Spring全家桶、Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、MongoDB、Redis、MySQL、RabbitMQ、Kafka、Linux、Netty、Tomcat等大厂面试题等、等技术栈! 有想获取的读者朋友,见下: 笔记目录展示: 获取完整笔记,见下: 部分内容截图: 获取完整笔记,见下: 来源: oschina 链接: https://my.oschina.net/u/4406332/blog/4775960

SpringBoot事务注解@Transactional

北慕城南 提交于 2020-12-05 10:17:49
<div class="markdown_views"> <p>SpringBoot提供了非常方便的事务操作,通过注解就可以实现事务的回滚,非常方便快捷,下面我们就说一下如何进行事务操作。</p> <h2 id="1-事务说明"><a name="t0"></a>1. 事务说明</h2> <p>在Spring中,事务有两种实现方式,分别是编程式事务管理和声明式事务管理两种方式。 <br> <strong>编程式事务管理:</strong> 编程式事务管理使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。对于编程式事务管理,spring推荐使用TransactionTemplate。 <br> <strong>声明式事务管理:</strong> 建立在AOP之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。 <br> 声明式事务管理不需要入侵代码,通过@Transactional就可以进行事务操作,更快捷而且简单。推荐使用</p> <h2 id="2-如何使用"><a name="t1"></a>2. 如何使用</h2> <p>在Mybatis中使用事务,非常简单,只需要在函数增加注解@Transactional,无需任何配置

BeetlSQL3.0.0-M5 发布,Spring框架集成

狂风中的少年 提交于 2020-12-05 05:42:51
BeetlSQL3.0.0-M5主要对Spring,Spring Boot ,JFinal,Solon等框架进行集成,并新增 ignite,CouchBase内存数据库的支持。 M6 计划对更多的国产数据库支持, 内存和图数据库支持。以及发布BeetlSQL3的Idea 插件。 <dependency> <groupId>com.ibeetl</groupId> <artifactId>beetlsql-all</artifactId> <version>3.0.0-M5</version> </dependency> 轻松集成Spring BeetlSQL的目标是提供开发高效,维护高效,运行高效的数据库访问框架,在一个系统多个库的情况下,提供一致的编写代码方式。 传统数据库:MySQL,MariaDB,Oralce,Postgres,DB2,SQL Server,H2,SQLite,Derby,神通,达梦,华为高斯,人大金仓等 大数据:HBase,ClickHouse,Cassandar,Hive 物联网时序数据库:Machbase,TD-Engine SQL查询引擎:Drill,Presto,Druid 内存数据库:ignite,CouchBase BeetlSQL 不仅仅是简单的类似MyBatis或者是Hibernate,或者是俩这的综合

SpringBoot(9) SpringBoot整合Mybaties

旧街凉风 提交于 2020-12-05 02:45:43
一、近几年常用的访问数据库的方式和优缺点 1、原始java访问数据库   开发流程麻烦   <1>注册驱动/加载驱动     Class.forName("com.mysql.jdbc.Driver")   <2>建立连接     Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/dbname","root","root");   <3>创建Statement   <4>执行SQL语句   <5>处理结果集   <6>关闭连接,释放资源 2、apache dbutils框架   比上一步简单点   官网:https://commons.apache.org/proper/commons-dbutils/ 3、jpa框架   spring-data-jpa   jpa在复杂查询的时候性能不是很好 4、Hiberante 解释:ORM:对象关系映射Object Relational Mapping   企业大都喜欢使用hibernate 5、Mybatis框架   互联网行业通常使用mybatis   不提供对象和关系模型的直接映射,半ORM 二、Mybatis准备 1、使用starter, maven仓库地址:http://mvnrepository.com/artifact/org

2019 编程语言终极排行榜:Java 稳坐榜首!

三世轮回 提交于 2020-12-04 15:16:54
T IOBE公布了12月份编程语言排行榜。相比上个月编程语言Top 5并没有太大的变化,其中 Java 依旧稳坐榜首,随后分别是C、Python、C++、C#。 这是2019年Java第十二次榜首,也就意味着,整个2019年,排行榜的第一名,有且仅有 Java , Java 的受欢迎程度可见一斑。 TIOBE将在下个月宣布本年度的编程语言,目前有四门候选编程语言,分别为: Java (+1.3%),C(+1.8%),Python(+ 1.9%)和C#(+ 1.4%)。 前五名的编程语言中,只有C++在2019年出现了下滑,Python是最有可能夺魁的编程语言,它已经是2018年的编程语言,它的受欢迎程度一直在增长,这主要是目前Python程序员比较缺少,并且和其他编程语言相比,Python更容易学习上手; 而物联网的兴起,C语言的表现也不错,Java和C#为何表现如何表现出色尚不清楚,如果C#成为年度编程语言,这将是它首次获得年度编程语言。 下面还是来详细看看本月编程语言详情吧: Top 10 编程语言 TIOBE 指数走势(2002-2018) 其他编程语言排名 历史排名(1988-2019) 编程语言“名人榜”( 2003-2018) 【说明】 TIOBE 编程语言社区排行榜是编程语言流行趋势的一个指标,每月更新,这份排行榜排名基于全球技术工程师、课程和第三方供应商的数量

短短一个秋招拿下字节跳动,阿里,每天3个offer,全靠我啃烂了这份2020最新的面试笔记!

微笑、不失礼 提交于 2020-12-04 11:29:33
前言 不论是校招还是社招都避免不了各种⾯试、笔试,如何去准备这些东⻄就显得格外重要。不论是笔试还是⾯试都是有章可循的,我这个“有章可循”说的意思只是说应对技术⾯试是可以提前准备,所谓不打无准备的仗就是这个道理,以下为大家,描述了从面试准备到最后的拿到offer提供了⾮常详细的⽬录,建议可以从头看是看⼀遍,如果基础不错的话也可以挑⾃⼰需要的章节查看 Redis 什么是Redis? Redis的数据类型? 使用Redis有哪些好处? Redis相比Memcached有哪些优势? Memcache与Redis的区别都有哪些? Redis是单进程单线程的? 一个字符串类型的值能存储最大容量是多少? Redis的持久化机制是什么?各自的优缺点? Redis常见性能问题和解决方案: redis过期键的删除策略? Redis的回收策略(淘汰策略) ? 为什么Redis需要把所有数据放到内存中? Redis的同步机制了解么? Pipeline有什么好处,为什么要用pipeline? 是否使用过Redis集群,集群的原理是什么? Redis集群方案什么情况下会导致整个集群不可用? Redis支持的Java客户端都有哪些?官方推荐用哪个? Jedis与Redisson对比有什么优缺点? Redis如何设置密码及验证密码? 说说Redis哈希槽的概念? Redis集群的主从复制模型是怎样的?

idea 配置优化

雨燕双飞 提交于 2020-12-04 10:13:30
如果是 spring boot 项目,那么可以不用刻意去下载idea企业版的, 使用使用社区版可以基本够用了。 除非是 有其他原因。 在安装idea 的时候,最好 指定需要用到的插件,用不到的插件,就不要安装。 如果是中小项目,其实 已经不需要什么额外配置了,基本可以使用了,够满足了 大项目才需要配置优化,否则卡或者直接 报错 out of memory 配置优化 配置字体大小,默认太小 配置 idea 查看代码的时候,鼠标放在 代码上可以显示 对应的注释或者说明 配置idea 提示 修改过的代码文件,类似eclipse 一样,显示* 号 配置idea 不要 自动更新, 如果自动更新,比如更新某些插件,会可能会比较卡 配置 view 里面,显示 toobar ,显示更多快捷操作 配置 idea auto Import 自动带入的时候, 直接导入 依赖 配置代码提示 忽略大小写 关闭或者全部禁用 idea 的检验和检查,也就是 Inspections 配置 Java文件头 注释 和 方法注释。 方法注释在高版本,其实可以不用配置 ,在方法上 /** 按回车 就可以自动生成注释模板内容了 配置 maven 可以 自动下载源码 配置file Encodings 默认win 下是GBK 取消单行显示tabs的操作 可以开启自动项目的编译 智能导包 pugins 可以禁用一些插件,但是

SpringBoot整合Mybatis-Plus 实战之动态SQL,Mybatis最拿得出手的功能之一

ε祈祈猫儿з 提交于 2020-12-03 18:52:05
MyBatis的动态SQL是最令人喜欢的功能 在了解 动态SQL之前,你首先得知道一个表达式 OGNL,这个是基础! 面试常问问题 : Mybatis 中$与#的区别? #是将传入的值当做字符串的形式,select id,name,age from test where id =#{id}, 当把id值传入到后台的时候,就相当于 select id,name,age from test where id =‘1’. " "是将传入的数据直接显示生成sql语句,selectid,name,agefromtestwhereid="是将传入的数据直接显示生成sql语句,select id,name,age from test where id = " 是 将 传 入 的 数 据 直 接 显 示 生 成 s q l 语 句 , s e l e c t i d , n a m e , a g e f r o m t e s t w h e r e i d = {id}, 当把id值1,传入到后台的时候,就相当于 select id,name,age from test where id = 1. 使用#可以很大程度上防止sql注入。(语句的拼接) if 标签 mapper select from test where 1=1 and username like concat('%', #