MyBatis

Spring框架总结篇

你说的曾经没有我的故事 提交于 2020-05-01 13:25:05
文章目录 一、Spring框架介绍 二、IoC控制反转 三、AOP面向切面编程 四、配置文件与Bean 五、Spring集成JdbcTemplate 六、事务控制 一、Spring框架介绍 Spring Framework即 Spring轻量级企业开发框架 ,提供了从表现层到业务层再到持久层的一套完整的解决方案。我 们在项目中可以只使用 spring 一个框架,就可以提供表现层的 mvc 框架,持久层的 Dao 框架。它的两大核心 IoC 和 AOP 更是为我们程序解耦和代码简洁易维护提供了支持。 关于Spring框架的介绍可以参照下面的博客: Spring介绍 二、IoC控制反转 将对象的调用权交给容器,通过容器实现对象的装配和管理。 这就是IoC的概念,IoC的实现方式主要有 依赖注入DI 和 依赖查找DL 两种。IoC实际是一种设计思想,在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。 早在2004年,Martin Fowler就提出了“哪些方面的控制被反转了? ”这个经典问题。他总结出是依赖对象的获得被反转了。谁控制谁?当然是 IoC 容器控制了对象 ;控制什么?那就是主 要控制了外部资源获取 (不只是对象包括比如文件等)。 关于IoC控制反转的内容可以参照下面的博客: IoC环境搭建 依赖注入DI介绍 DI—构造器注入 DI

微服务-springboot-读写分离(多数据源切换)

谁说我不能喝 提交于 2020-05-01 12:00:49
为什么需要读写分离 当项目越来越大和并发越来大的情况下,单个数据库服务器的压力肯定也是越来越大,最终演变成数据库成为性能的瓶颈,而且当数据越来越多时,查询也更加耗费时间,当然数据库数据过大时,可以采用数据库分库分表,同时数据库压力过大时,也可以采用Redis等缓存技术来降低压力,但是任何一种技术都不是万金油,很多时候都是通过多种技术搭配使用,而本文主要就是介绍通过读写分离来加快数据库读取速度 实现方式 读写分离实现的方式有多种,但是多种都需要配置数据库的主从复制 方式一 数据库中间件实现,如Mycat等数据库中间件,对于项目本身来说,只有一个数据源,就是链接到Mycat,再由mycat根据规则去选择从哪个库获取数据 方式二 代码中配置多数据源,通过代码控制使用哪个数据源,本文也是主要介绍这种方式 优点 1.降低数据库读取压力,尤其是有些需要大量计算的实时报表类应用 2.增强数据安全性,读写分离有个好处就是数据近乎实时备份,一旦某台服务器硬盘发生了损坏,从库的数据可以无限接近主库 3.可以实现高可用,当然只是配置了读写分离并不能实现搞可用,最多就是在Master(主库)宕机了还能进行查询操作,具体高可用还需要其他操作 缺点 1.增大成本,一台数据库服务器和多台数据库的成本肯定是不一样的 2.增大代码复杂度,不过这点还比较轻微吧,但是也的确会一定程度上加重 3.增大写入成本

Mybatis Generator 如何生成Example类

我是研究僧i 提交于 2020-05-01 11:41:55
背景 我发现上传到github上的项目,有的有Example类,有的没有Example类,怎么回事呢? 过程 对比项目,发现/src/main/resources/mybatis/generatorConfig.xml 类不一样。 原因 targetRuntime="Mybatis" 和 targetRuntime="MyBatis3Simple" MyBatis3模式默认生成的对象将包含很多"by Example"的方法,如果不想生成这些,可以在后续的table元素中配置取消;MyBatis3Simple模式默认每个表生成一个实体对象,生成的Mapper接口仅包含必须的5个方法:deleteByPrimaryKey、insert、selectByPrimaryKey、selectAll、updateByPrimaryKey。 文件源码 <?xml version= " 1.0 " encoding= " UTF-8 " ?> <! DOCTYPE generatorConfiguration PUBLIC " -//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN " " http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd " >

java零基础自学网站分享

旧城冷巷雨未停 提交于 2020-05-01 10:33:46
俗话说工欲善其事,必先利其器,今天给大家分享一个java自学网站: how2j ,这是一个有十年淘宝工作经验大牛的制作的网站,距离现在已经有三四年了,这个网站包含的知识非常的多,从基础的环境变量配置一直到完整项目的开发部署,以及面试教程,还有很多工具可提供直接下载使用,避免了初学者配置个工具就要半天时间,大大的减少了不必要的麻烦,还设计了很多有趣的游戏例子,提高了学习兴趣,在兴趣中快乐的学习,下面就给大家展示一下: https://how2j.cn 一:代码对比: 很多时候因为一个符号,一个字母写错了,导致程序不能正常运行,调试半天很难发现,最后导致学习兴趣大大减少,很难坚持下去,恰巧这个网站提供了代码比较.可以复制你写的代码和站长的比较,系统一下子就给你提示哪里错了,很快就解决了. ​ 二:模块化教学 java基础: helloworld → 面向对象 → 变量 → 操作符 → 控制流程 → 数组 → 类和对象 → 接口和继承 → 数字与字符串 → 日期 java中级: 异常处理 I/O → 集合框架 → 泛型 → Lambda → 多线程 → JDBC → 图形界面 → 网络编程 → 实战项目 java高级: 反射机制 → 注解 java应用: Log4j → junit → hutool → jsoup → lombok 前端: HTML → CSS → javaScript

爱了!分享一个基于SpringBoot的API、RESTfulAPI项目种子(骨架)

不打扰是莪最后的温柔 提交于 2020-05-01 07:52:46
前言 最近使用Spring Boot 配合 MyBatis 、通用Mapper插件、PageHelper分页插件 连做了几个中小型API项目,做下来觉得这套框架、工具搭配起来开发这种项目确实非常舒服,团队的反响也不错。在项目搭建和开发的过程中也总结了一些小经验,与大家分享一下。 在开发一个API项目之前,搭建项目、引入依赖、配置框架这些基础活自然不用多说,通常为了加快项目的开发进度(早点回家)还需要封装一些常用的类和工具,比如统一的响应结果封装、统一的异常处理、接口签名认证、基础的增删改差方法封装、基础代码生成工具等等,有了这些项目才能开工。 然而,下次再做类似的项目上述那些步骤可能还要搞一遍,虽然通常是拿过来改改,但是还是比较浪费时间。所以,可以利用面向对象抽象、封装的思想,抽取这类项目的共同之处封装成了一个种子项目(估计大部分公司都会有很多类似的种子项目),这样的话下次再开发类似的项目直接在该种子项目上迭代就可以了,减少无意义的重复工作。 特征&提供 最佳实践的项目结构、配置文件、精简的POM 注:使用代码生成器生成代码后会创建model、dao、service、web等包。 统一响应结果封装及生成工具 /** * 统一API响应结果封装 */ public class Result { private int code; private String message;

apache ignite系列(九):使用ddl和dml脚本初始化ignite并使用mybatis查询缓存

烈酒焚心 提交于 2020-05-01 04:56:47
博客又断了一段时间,本篇将记录一下基于ignite对jdbc支持的特性在实际使用过程中的使用。 使用ddl和dml脚本初始化ignite 由于spring-boot中支持通过 spring.datasource.schema 属性指定初始化DDL脚本, spring.datasource.data 指定初始化DML脚本。而ignite支持jdbc协议,测试了一下,发现一样可以通过该配置初始化ignite。 spring.datasource.url=jdbc:ignite:thin://127.0.0.1/ spring.datasource.driver-class-name=org.apache.ignite.IgniteJdbcThinDriver spring.datasource.schema=classpath:db/schema.sql spring.datasource.data=classpath:db/data.sql 说明ignite数据源同样可以作为一个 DataSource 实例。 DDL的规范 创建表 CREATE TABLE [IF NOT EXISTS] tableName (tableColumn [, tableColumn]... [, PRIMARY KEY (columnName [,columnName]...)]) [WITH

Java连接mysql数据库出现The server time zone value '�й���׼ʱ��' is unrecogni的解决

这一生的挚爱 提交于 2020-05-01 04:25:58
Mysql版本 :8.0.17 在为MyBatis添加数据源配置时,在application.yml文件中添加了MySQL数据源连接信息。 运行代码生成类报错, The server time zone value '�й���׼ʱ��' is unrecognized or represents more than one time zone. 解决方法: 在配置文件中的数据库url中添加serverTimezone=UTC参数即可解决。 来源: oschina 链接: https://my.oschina.net/u/4408758/blog/3387934

SpringBoot进阶教程(六十一)intellij idea project下建多个module搭建架构(下)

ぃ、小莉子 提交于 2020-05-01 02:50:52
在上一篇文章《 SpringBoot进阶教程(六十)intellij idea project下建多个module(上) 》中,我们已经介绍了在intellij idea中创建project之后再分化多个module,今天再大致介绍介绍各个module之间详细工作的细分。 如果是不考虑细分多个module的话,可以看看这篇文章《 SpringBoot入门教程(一)详解intellij idea搭建SpringBoot 》。 v 设计数据库 CREATE TABLE `useraccount` ( `id` int ( 10 ) unsigned NOT NULL AUTO_INCREMENT, `username` varchar ( 255 ) NOT NULL , `age` int ( 10 ) NOT NULL , `phone` bigint NOT NULL , `email` varchar ( 255 ) NOT NULL , `account` varchar ( 100 ) NOT NULL UNIQUE , `pwd` varchar ( 255 ) NOT NULL , PRIMARY KEY (`id`) )ENGINE = InnoDB AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8; insert into

SSM框架快速整合的实例-学生查询

会有一股神秘感。 提交于 2020-05-01 02:16:22
SSM 框架快速整合实例--学生查询 一、快速准备 SSM 框架即 Spring 框架、SpringMVC 框架、MyBatis 框架,关于这几个框架的基础和入门程序,我前面已经写过几篇文章作为基础和入门介绍了。对于这 3 个框架还不熟悉的同学,可以参考一下几篇文章: 【SSH框架】之Spring系列(一) Spring框架系列(二)之Bean的注解管理 Spring框架系列之AOP思想 Spring 框架系列之 JDBC 整合 Spring 框架系列之事务管理 SpringMVC 框架系列之初识与入门实例 SpringMVC 框架系列之组件概述与配置详解 MyBatis 框架之基础初识 MyBatis 框架之快速入门程序 如果已经陆续学习过 SSM 框架相关知识的,可以忽略掉这一部分,直接看下面的内容。 二、快速创建项目 鉴于 jar 包依赖于管理的方便,我们使用 Maven 进行项目的管理和开发,所以这一步我们使用 IDEA 快速创建一个 Maven 项目,关于如何使用 IDEA 快速创建 Maven 项目,这里就不进行过多赘述了,大家可以参考下面这篇文章: Maven 项目管理工具基础系列(一) 三、快速配置 jar 包依赖 Maven 项目创建完成后,快速打开并配置 pom.xml 文件,具体配置如下: < project xmlns= "http://maven

WebMvcConfigurationSupport与WebMvcConfigurer的关系

匆匆过客 提交于 2020-04-30 21:09:43
大家从网上及源码注释上查到的解释是,在spring中配置WebMvc时有两种方法,一种是继承WebMvcConfigurationSupport,重写里面相应的方法,还有一种是继承WebMvcConfigurer的子抽象类WebMvcConfigurerAdapter,也是重写里面相应的方法,但是需要在配置类上添加@EnableWebMvc注解。那这两个类直接是什么关系呢?   细心的开发者会发现,WebMvcConfigurationSupport中那些子类可以重写的空方法在WebMvcConfigurer都有,这说明WebMvcConfigurer只是WebMvcConfigurationSupport的一个扩展类,它并没有扩展新功能,只是为让用户更方便安全的添加自定义配置,为什么说是安全呢?因为如果直接继承WebMvcConfigurationSupport,那么用户可以重写默认的配置,如果对原理不是很清楚地开发者不小心重写了默认的配置,springmvc可能相关功能就无法生效,是一种不安全的行为。但如果是继承WebMvcConfigurerAdapter,那么开发者是在默认配置的基础上添加自定义配置,相对来说更安全一些,只不过要多加一个@EnableWebMvc注解。从这个角度来说,最佳实践还是继承WebMvcConfigurerAdapter,如下