MyBatis

应用集成mycat,实现mycat的高可用与mysql的读写分离

送分小仙女□ 提交于 2020-04-28 11:58:37
前言   开心一刻     一个女人自朋友圈写道:我家老公昨天和别人家的老婆出去旅游,迄今未归,我则被别人家的老公折腾了一天,好累哦!     圈子下面,评论无数,老公在下面评论到:能不能好好说话,我只不过陪女儿去毕业旅游行,而你负责在家留守,照顾三岁儿子,要不要写的这么刺激、让人浮想联翩的? 你是不是有点虎? 诺维斯基:你往哪射了? 周子瑜:我只是个娱乐明星,射箭我不是专业的...   路漫漫其修远兮,吾将上下而求索!   github: https://github.com/youzhibing   码云(gitee): https://gitee.com/youzhibing 前情回顾   通过前面的两篇博文: Mycat - 实现数据库的读写分离与高可用 和 Mycat - 高可用与负载均衡实现,满满的干货! ,我们完成了如下图所示的组件部署 组件结构图一   SQL请求发给VIP,keepalived完成VIP的映射,并通过lvs将请求转发mycat,mycat根据SQL请求类型(DML SQL还是SELECT SQL,亦或是强制指定db节点)将SQL分发到具体的db,完成由具体的数据库服务完成SQL的执行。   但这还只是停留在数据库层面的部署,还没集成我们的应用,没有实际意义,那么我们如何集成我们的应用,实现mycat的使命呢? 应用集成   如果mycat搭建好了

Java EE互联网轻量级框架整合开发— SSM框架(中文版带书签)、原书代码

廉价感情. 提交于 2020-04-28 10:12:15
Java EE互联网轻量级框架整合开发 第1部分 入门和技术基础 第1章 认识SSM框架和Redis 2 1.1 Spring框架 2 1.2 MyBatis简介 6 1.3 Spring MVC简介 11 1.4 最流行的NoSQL——Redis 12 1.5 SSM+Redis结构框图及概述 13 第2章 Java设计模式 15 2.1 Java反射技术 15 2.2 动态代理模式和责任链模式 19 2.3 观察者(Observer)模式 30 2.4 工厂模式和抽象工厂模式 35 2.5 建造者(Builder)模式 38 2.6 总结 41 第2部分 互联网持久框架——MyBatis 第3章 认识MyBatis核心组件 44 3.1 持久层的概念和MyBatis的特点 44 3.2 准备MyBatis环境 45 3.3 MyBatis的核心组件 46 3.4 SqlSessionFactory(工厂接口) 47 3.5 SqlSession 50 3.6 映射器 51 3.7 生命周期 55 3.8 实例 57 第4章 MyBatis配置 63 4.1 概述 63 4.2 properties属性 64 4.3 settings设置 66 4.4 typeAliases别名 69 4.5 typeHandler类型转换器 72 4.6 ObjectFactory(对象工厂)

IDEA下基于MAVEN的SSM框架整合

て烟熏妆下的殇ゞ 提交于 2020-04-28 08:05:18
源码可以以上传github https://github.com/ingxx/ssm_first 最近把用IDEA把SSM框架整合一遍遇到了不少坑,在这里写出来 这里maven我使用的是自己下载的3.5.3版本,使用IDEA自带的MAVEN也可以。MAVEN的使用不再赘述。 新建maven项目使用wbapp模板 NEXT GroupId填组织名称,artifactId填项目名称 下一步 这里我的MAVEN是自己下的如果使用默认则不需要配置,如果网络不好,请查找资料更改仓库为阿里的仓库。 Finish即可 这里选enable-auto-import 此时项目结构如图所示 建立如上结构 点击这个图标进行配置 设置IDEA识别目录 设置web.xml目录和网站根目录等 打开pom.xml文件在properties节点添加版本信息 <!-- srping版本 --> < spring.version > 4.3.14.RELEASE </ spring.version > <!-- mybatis版本 --> < mybatis.version > 3.4.0 </ mybatis.version > 在dependencies节点下添加依赖 注释已有解释不再赘述 < dependency > < groupId > junit </ groupId > < artifactId >

SSM+easyUI(框架的搭建)

∥☆過路亽.° 提交于 2020-04-28 06:28:42
1.首先贴出我的项目结构: 2.maven 依赖所需要的jar包,从pom.xml中下载获得: pom.xml中的依赖: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation ="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.zsl.hnust</groupId> <artifactId>HNUST</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>HNUST</name> <url>http: // maven.apache.org</url> <properties> <!-- spring版本号 --> <spring.version>4.0.2.RELEASE</spring.version> <!-- mybatis版本号 --> <mybatis.version>3.2

某马某智JavaEE57期 2019最新基础+就业+在职加薪_汇总

元气小坏坏 提交于 2020-04-27 20:51:12
黑马传智JavaEE57期 2019最新基础+就业+在职加薪 文件路径: G:\学习中\黑马传智JavaEE57期 2019最新基础+就业+在职加薪\阶段1 语言基础+高级·\1-2 -面向对象和封装 阶段1 语言基础+高级· 阶段1 语言基础+高级·   1-1-Java基础语法     第14节 数组     111 H:\BaiDu\黑马传智JavaEE57期 2019最新基础+就业+在职加薪\讲义+笔记+资料\Java基础\02.会员版(2.0)-就业课(2.0)-面向对象和封装\06.【类与对象、封装、构造方法】 1-2 -面向对象和封装 阶段1 语言基础+高级_1-2 -面向对象和封装_1面向对象思想的概述 阶段1 语言基础+高级_1-2 -面向对象和封装_2面向对象思想的举例 阶段1 语言基础+高级_1-2 -面向对象和封装_3类和对象的关系 阶段1 语言基础+高级_1-2 -面向对象和封装_4类的定义 阶段1 语言基础+高级_1-2 -面向对象和封装_5对象的创建及其使用 阶段1 语言基础+高级_1-2 -面向对象和封装_6手机类练习 阶段1 语言基础+高级_1-2 -面向对象和封装_7一个对象的内存图 阶段1 语言基础+高级_1-2 -面向对象和封装_8两个对象使用同一个方法的内存 阶段1 语言基础+高级_1-2 -面向对象和封装_9两个引用指向同一个对象空间

mybatis的mapper映射配置文件详解

落花浮王杯 提交于 2020-04-27 19:24:19
一、标签介绍 insert,update,delete,select,sql,resultMap sql:可被其它语句引用的可重用语句块; resultMap:确定实体类属性与表中字段对应关系; 二、namespace的作用 在MyBatis中,Mapper中的namespace用于绑定Dao接口的,即面向接口编程。 它的好处在于当使用了namespace之后就可以不用写接口实现类,业务逻辑会直接通过这个绑定寻找到相对应的SQL语句进行对应的数据处理 三、parametetType属性 在<insert>,<update>,<select>,<delete>标签中,可以通过parameterType指定输入参数的类型,类型可以是简单类型、hashmap、pojo的包装类型。 parameterType属性是可以省略的.MyBatis框架可以根据SqlSession接口中方法的参数 来判断输入参数的实际数据类型. 四、#{参数名} 1、含义、#{}实现的是向prepareStatement中的预处理语句中设置参数值,sql语句中#{}表示一个占位符即? 2、使用#{参数名},将参数的内容添加到sql语句中指定位置. 如果当前sql语句中只有一个参数,此时参数名称可以随意定义 但是,如果当前sql语句有多个参数,此时参数名称应该是与当前表关联[实体类的属性名]或者[Map集合关键字]

数据库字段名称与实体类属性不一致的处理措施

試著忘記壹切 提交于 2020-04-27 19:24:02
数据库字段名称与实体类属性不一致的处理措施 解决方案1 设定显示列的别名,让显示列的别名与实体类的属性名相同 优点: 操作简单,容易理解 缺点: 当这样的语句出现的次数过多的时候,到时冗余代码增多,这些别名不能重用 适用场景: 语句出现较少的查询时列较少的时候 --> <selectid= " selectStudentAll1 " resultType= " stu " > selectid ,name stuName ,age stuAge from t_student </ select > <!-- 解决方案2 使用resultMap自定义封装规则 优点: 这个封装规则可以被重复的使用,解决解决方案1的缺点 缺点: 需要额外定义一个封装对象并对它进行维护 适用场景: 语句出现次数较多大于等于2次 字段较多的时候 --> <!-- 自定义结果封装规则 属性 type 用于指定将结果集 封装到哪个实体类中,取值为类的全限定名或在主配置文件中定义的别名 id 这个自定义规则的唯一标识,不能与其他的resultMap相同,用语给select标签中的resultMap属性引用 --> <resultMap type="stu"id="stuMap"> <!-- 用于主键列数据映射 属性 column 指定结果集中的显示列的列名 property 指定

Mybatis——实体类属性名和数据库字段名不同时的解决办法

北战南征 提交于 2020-04-27 19:23:36
在使用Mybatis来持久化数据库时,有时候会碰到数据库中表中的字段与java实体类中属性名不一致的情况,在这种情况下Mybatis是不能完成字段的自动映射的。而通常情况下,数据库及实体类是不应该被改的的。所以要在不改变数据库以及实体类的情况下解决这个问题,下面是解决该问题的三种方式: java实体类: public class User { private Long id; private String userName; private String passWord; /** * ... * get,set方法不再列出 * ... * */ } 1.既然是因为名字不一致而导致Mybatis不能完成自动映射,那么就可以将两者的名字想办法保持一致,为查询出的数据库字段起个别名就可以,实例如下: <select id="selectUserById" resultType="User"> select id, user_name as userName, <!--不用在意大小写,Mybatis会先转换成大写再进行匹配 --> user_password as userPassword, from user where id = #{id} </select> 2.另一种解决名字不一致的方式是事先指定映射关系,这样Mybatis也能自动完成映射

SpringBoot+Mybatis一级缓存和二级缓存详解

流过昼夜 提交于 2020-04-27 19:13:25
本文主要介绍在SpringBoot项目中如何使用Mybatis的一级、二级缓存,为了演示方便,本文的数据库采用H2内存数据库,数据库连接池默认使用SpringBoot2.X自带的hikariCP。 正确的使用Mybatis缓存可以有效减少多余的数据库查询操作,节约IO。 接下来我们从实践出发,看一看mybatis的一级,二级缓存如何使用,相关代码请查阅: https://github.com/zhengxl5566/springboot-demo.git 1、概念介绍 什么是一级缓存 在日常开发过程中,经常会有相同的sql执行多次查询的情况,mybatis提供了一级缓存来优化这些查询,避免多次请求数据库。 一级缓存在mybatis中默认是开启的并且是session级别,它的作用域为一次sqlSession会话。 什么是二级缓存 相对于一级缓存,二级缓存的作用域更广泛,它不止局限于一个sqlSession,可以在多个sqlSession之间共享,事实上,它的作用域是namespace。 mybatis的二级缓存默认也是开启的,但由于他的作用域是namespace,所以还需要在mapper.xml中开启才能生效 缓存的优先级 通过mybatis发起的查询,作用顺序为:二级缓存->一级缓存->数据库 ,其中任何一个环节查到不为空的数据,都将直接返回结果 缓存失效