MyBatis

Java基础知识学习

为君一笑 提交于 2020-08-18 14:32:43
Java基础知识学习 1.java的诞生 首先,说起Java的诞生我们先聊一聊C语言和C++。 C语言诞生于1972年,它是一门面向过程的结构化语言,主要的特点有以下三点: 贴近硬件,运行速度快,效率很高 主要应用有操作系统,编译器,数据库,网络系统等等 指针和内存管理等等 C++诞生于1982年,它兼容了C面向过程的特点,同时也具有面向对象的特点,其有以下几点: 面向对象 同时兼容C的特性 主要应用于图形领域和制作游戏等等 说完了C/C++的语言特点,可能学过的同学应该知道,C语言的指针还是比较难学的,还有其内存管理也是比较复杂。那么有没有一种语言能够避免这些问题呢? 这就是我们Java的诞生,Java的特点有:语法有点像C,没有指针和内存管理,可移植性强, 编写一次,到处运行 (write once,run everywhere),面向对象,类型安全,有大量的类库等等。Java的特性和优势,主要有简单性,面向对象,高性能,分布式,动态性,多线程,安全性,健壮性等等。 那么Java主要有一下三个版本,Java SE(标准版),Java ME(移动版),Java EE(企业版) 随着Java的不断发展,也诞生了不少工具,比如说有以下几类: 构建工具:Ant ,Maven,Jekins 应用服务器:Tomcat,Jetty , Websphere,Weblogic Web开发

我的mybatis学习笔记(一)——简单了解mybatis

删除回忆录丶 提交于 2020-08-18 14:10:05
一、mybtis简介 1、Mybatis原为Apache公司门下,原来叫ibatis(之前有1.0、2.0) ;后转为Google公司的Github下才改为Mybatis(3.0) 2、传统的.JDBC与数据库访问的方式: 特点:功能简单、sql语句写在java代码里; 缺点:硬编码高耦合 3、整体解决框架 (1):Hibernate:全自动化映射(旨在消除sql,HQL用于sql优化) 希望:sql语句交给开发人员来编写;sql不失去灵活性 (2)Mybatis:半自动化框架 特点:sql与java代码分离;sql由开发人员控制 二、相关基本知识 1.接口式编程:Mapper.xml文件的namespace需要定义为接口的全类名 且select等方法的id需要和接口的方法绑定 2.Sqlsession和connection一样 都是非线程安全,不可以写成成员变量,私有也不行。每次使用都必须获取新的对象 3.mapper没有实现类 但是mybatis会为接口生成一个代理对象(将接口和xml绑定) * EmployeeMapper mapper=openSession.getMapper(EmployeeMapper.class); 非接口式编程写法: 接口式编程: 其中输出的代理对象为: 两个重要的配置文件:mybatis全局配置文件(可以没有):包含数据库连接池信息

springboot + mybatisPlus 入门实例 入门demo

陌路散爱 提交于 2020-08-18 07:35:31
springboot + mybatisPlus 入门实例 入门demo 使用mybatisPlus的优势 集成mybatisplus后,简单的CRUD就不用写了,如果没有特别的sql,就可以不用mapper的xml文件。 mybatisPlus官网: https://mp.baomidou.com/guide 项目搭建前提条件 1、IDEA,并且已安装lombok插件 2、mysql数据库,本实例采用mysql8.0版本,与mysql5.x版本有些不一样,如果使用mysql5.x,只需要修改相应的配置即可。 1. 导入相关依赖 如果项目中有mybatis依赖可以直接删除了,mybatisPlus里包含了mybatis的依赖 < dependency > < groupId > org.springframework.boot </ groupId > < artifactId > spring-boot-starter-web </ artifactId > </ dependency > <!-- mybatisPlus --> < dependency > < groupId > com.baomidou </ groupId > < artifactId > mybatis-plus-boot-starter </ artifactId > < version > 3.3

深入Mybatis源码——执行流程

若如初见. 提交于 2020-08-18 05:29:36
前言 上一篇分析Mybatis是如何加载解析XML文件的,本篇紧接上文,分析Mybatis的剩余两个阶段: 代理封装 和 SQL执行 。 正文 代理封装 Mybatis有两种方式调用Mapper接口: private static SqlSessionFactory sqlMapper = new SqlSessionFactoryBuilder().build(reader); // 第一种 try (SqlSession session = sqlMapper.openSession(TransactionIsolationLevel.SERIALIZABLE)) { Blog blog = session.selectOne("org.apache.ibatis.domain.blog.mappers.BlogMapper.selectBlogWithPostsUsingSubSelect", 1); } // 第二种 try (SqlSession session = sqlMapper.openSession()) { AuthorMapper mapper = session.getMapper(AuthorMapper.class); Author author = mapper.selectAuthor(101); } 从上面代码可以看到无论是哪一种首先都要创建

推荐15款优质Spring开源项目,覆盖权限类、搜索、秒杀、支付

心不动则不痛 提交于 2020-08-17 23:57:34
不管是工作还是学习,很多时候我们都不需要自己再造轮子,并且如果有一个足够可用的轮子,在工作或者学习上,都会帮我们节省很多时间,这个真的哦。有的公司的管理框架就是用开源项目改的。今天在这边给大家推荐15个,优质开源Spring Boot & Spring Cloud 的比较多,包括权限管理类、支付类、商城类,博客管理、CRM、ERP等。 ❞ 微人事 spring-boot-pay springboot-plus Spring-boot-seckill V 部落 Cloud-Platform litemall jeeSpringCloud 美人鱼 bootshiro open-capacity-platform 悟空 CRM paascloud-master mall 华夏ERP 微人事 star: 17k 项目介绍 : 微人事是一个前后端分离的人力资源管理系统,项目采用 SpringBoot+Vue 开发,项目加入常见的企业级应用所涉及到的技术点,例如 Redis、RabbitMQ 等。 技术栈: 项目图: spring-boot-pay star : 6.1k 项目介绍 : 支付服务:支付宝,微信,银联详细 代码案例 (除银联支付可以测试以外,支付宝和微信支付测试均需要企业认证,个人无法完成测试)。 技术栈: JDK1.8、Maven、IDEA、SpringBoot2.2.6

springboot 集成mybatis3.4.5 mapper tk.mybatis

时光毁灭记忆、已成空白 提交于 2020-08-17 20:10:49
本篇主要介绍的是springboot如何集成mybatis,以及一些常用的mapper编写,与顶层tk.mybatis的mapper结合集成,看懂之后即可快速的开发 1、配置sqlSessionFactory import com.gta.train.platform.persis.page.plugin.PageInterceptor; import lombok.RequiredArgsConstructor; import org.apache.ibatis.plugin.Interceptor; import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.SqlSessionFactoryBean; import org.mybatis.spring.SqlSessionTemplate; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.io.support.PathMatchingResourcePatternResolver;

Github点赞接近 100k 的Spring Boot学习教程+实战项目推荐!

谁都会走 提交于 2020-08-17 19:06:36
本文已经收录进: awesome-java (Github 上非常棒的 Java 开源项目集合) 很明显的一个现象,除了一些老项目,现在 Java 后端项目基本都是基于 Spring Boot 进行开发,毕竟它这么好用以及天然微服务友好。不夸张的说, Spring Boot 是 Java 后端领域最最最重要的技术之一,熟练掌握它对于 Java 程序员至关重要。 这篇文章我会推荐一些优质的 Spring Boot 开源教程 和 Spring Boot 实战项目 ,帮助大家深入学习 Spring Boot。项目质量的话,大家可以放心。 不会 Spring Boot 或者想要深入学习 Spring Boot 的小伙伴直接学起来好吧!(🙅🏻‍♂️ 不需要 Spring 基础也可以直接学 Spring Boot,Java 基础和 MySQL 会了就可以直接上手学起来! ) 另外,这些项目 Guide 是根据下面三个标准选出: 项目是否还在继续维护更新,维护更新的频率如何。 项目的质量如何,这一点可以从 star、issue 以及 pr 的数量侧面反映出来。 代码质量如何,是否是僵尸项目。关于代码质量,这里说明一点,我最反感别人无脑 diss 开源项目代码质量差了,你又能耐的话自己写一个。确实,每一个开源项目都有很多可以优化的地方,这点无法否认。 Spring Boot 教程推荐

java技术遇到瓶颈?不慌,这份java全体系脑图与面试题集合可助你冲上云巅

牧云@^-^@ 提交于 2020-08-17 18:05:05
所谓并发编程是指在一台处理器上“同时”处理多个任务。 并发是在同一实体上的多个事件。 多个事件在同一时间间隔发生,编写优质的并发代码是一件难度极高的事情。 Java语言从第一版本开始内置了对多线程的支持,这一点在当年是非常了不起的. 但是当我们对并发编程有了更深刻的认识和更多的实践后. 实现并发编程就有了更多的方案和更好的选择,并发编程的目标是充分的利用处理器的每一个核. 以达到最高的处理性能. 并发编程路线脑图 并发编程面试题汇集: Synchronized用过吗 ,其原理是什么 ? 什么是可重入性,为什么说 Synchronized是可重入锁 ? JVM对Java的原生锁做了哪些优化 ? 那么请谈谈AQS框架是怎么回事儿 ? 请尽可能详 尽地对比下Synchronized和ReentrantLock的异同 。 什么是原子操作,Java 中的原子操作是什么? 创建线程池的几个核心构造参数 ? 什么是Java的内存模型,Java中各个线程是怎么彼此看到对方的变量的 ? 在Java中CycliBarriar和CountdownLatch有什么区别? 请谈谈ThreadLocal是怎么解决并发安全的 ? 文末底下有面试题汇集以及学习全脑图 曾经我也对 JVM 感到很头痛,完全搞不懂应该如何入门 JVM 的学习。 但经过了几年的学习,我对 JVM 有了更深入的理解。

springboot配置mybatis-generator自动生成代码

走远了吗. 提交于 2020-08-17 16:35:01
第一步:在pom.xml中配置generator自动生成代码插件 <!-- mybatis generator 自动生成代码插件 --> <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.5</version> <configuration> <!--配置文件的位置--> <configurationFile>src/main/resources/generator/generatorConfig.xml</configurationFile> <overwrite>true</overwrite> <verbose>true</verbose> </configuration> </plugin> 第二步:引入生成代码配置generatorConfig.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd

Mybatis自定义SQL拦截器

 ̄綄美尐妖づ 提交于 2020-08-17 16:15:55
本博客介绍的是继承Mybatis提供的Interface接口,自定义拦截器,然后将项目中的sql拦截一下,打印到控制台。 先自定义一个拦截器 package com.muses.taoshop.common.core.database.config; import org.apache.commons.lang3.StringUtils; import org.apache.ibatis.executor.Executor; import org.apache.ibatis.mapping.BoundSql; import org.apache.ibatis.mapping.MappedStatement; import org.apache.ibatis.plugin.*; import org.apache.ibatis.session.ResultHandler; import org.apache.ibatis.session.RowBounds; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; import java.util.Properties; /** * <pre> * Mybatis SQL拦截器 *