- MyBatis-增删改查操作&一些细节
!!!525
mybatisjava数据库mybatisspringboot
目录删除新增修改查询小结:删除功能需求:根据ID删除用户信息SQL:deletefromuserwhereid=5;Mapper接口方法(注意这里不是实现类):/***根据id删除*/@Delete("deletefromuserwhereid=#{id}")publicvoiddeleteById(Integerid);编写单元测试方法进行测试@TestpublicvoidtestDeleteB
- Java框架-mybatis-基础
KeepStruggling
mybatisJava
1.概念1.1概念引入框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法。或者说是可被应用开发者定制的应用骨架。框架的优点:框架已经实现了一些功能,使用时不需重复实现这些功能,提高开发效率;使用框架后,我们软件的架构更加稳定、开发流程必须按照框架约定进行,而优秀的框架是所有开发人员都熟悉的,任何人进入项目团队后可以更快适应开发,同时框架良好的扩展性更易
- Java框架ssm之MyBatis
很遗憾不是吗_
mybatisjava数据库
MyBatis-概述MyBatis框架是一种可以替代原生态的JDBC,单纯的只使用JDBC话会使项目代码变得冗余,耦合度高,编写sql语句复杂,显得比较麻烦,开发人员为了避免这种问题和提高开发效率提供了相对应的框架支持—MyBatis。MyBatis框架是一种持久层框架,支持自定义Sql语句、存储过程甚至是高级映射。MyBatis基本上避免了原生态的JDBC的复杂代码,包括一些设置Sql语句的参数
- mybatis- Error parsing SQL Mapper Configuration. Cause: java.io.IOException: Could not find resource
呀哎_cee6
异常信息image.png百度查询这个异常都是说要把mapper接口和mapper.xml名字和包名保持一致等等。从头到尾检查的一遍确保都是正常的,然后我无意间看了看编译后的文件目录结构。image.png发现编译后mapper接口和mapper.xml文件不在同一个目录下,然后我猜测resources下的包创建的有问题。于是我把包一层一层的创建就解决了,不要一下创建多层比如xxx.xxx.xxx
- Mybatis- plus 基本使用
AZHOUN
技术mybatisjavamybatis-plus
目录一.引入依赖二.定义Mapper三.常见注解
[email protected][email protected]@TableField3.4常见配置一.引入依赖由于这个starter包含对mybatis的自动装配,因此完全可以替换掉Mybatis的starter。com.baomidoumybatis-plus-boot-starter3.5.3.1二.定义Mapper为了简化单表CRUD,Mybatis
- Mybatis和Mybatis-plus的区别
Marciaguoguo
mybatisjava开发语言
Mybatis所有SQL语句全都自己写手动解析实体关系映射转换为Mybatis内部对象注入容器不支持lamda形式调用Mybatis-plus强大的条件构造器,满足各类使用需求内置的Mapper,通用的Service,少量配置即可实现单表大部分CRUD操作支持lamda形式调用提供了基本的CRUD功能,连SQL语句都不需要编写自动解析实体关系映射转换为Mybatis内部对象注入容器Mybatis-
- Mybatis-获取参数值的两种方式
ccb_
SSMmybatisjava服务器
文章目录一、基本概念二、单个字面量三、多个字面量四、实体类对象五、使用@Param注解命名参数一、基本概念MyBatis获取参数值的两种方式:${}和#{}${}的本质就是字符串拼接,#{}的本质就是占位符赋值${}使用字符串拼接的方式拼接sql,若为字符串类型或日期类型的字段进行赋值时,需要手动加单引号;但是#{}使用占位符赋值的方式拼接sql,此时为字符串类型或日期类型的字段进行赋值时,可以自
- Mybatis-手动映射
一直向上走
mybatismybatis数据库
何为映射?数据库表中的字段与实体类属性一一对应。何为自动映射?自动将数据库表中的字段与实体类属性一一对应。为什么要引入手动映射?自动映射只能满足数据库表中的字段与实体类属性的名称一致,当两者名字不一致时便会出现错误。publicclassOrder{privateIntegerid;privateIntegeruserId;privateIntegernumber;privateDatecreat
- 关于sql报错的问题,optimize this sql to a count sql has exception困绕了一下午
o_o_233N
今天下午sql报错,因为之前出现过,一直搁置没有解决1.png2.png报了这个错,但是没有影响查询结果,只是后台sql的解析异常导致的,竟而百度了很长时间,网上的结果方法总结一下:1因为mybatis-plus的版本问题导致的,要把版本升到3.5.1后解决了这个问题;2也有说是因为sql的分页使用了模糊查询,添加或排除jsqlparser的jar包,可以排除这个问题;3也有说因为mybatis-
- idea与mybatis-检查XML中sql语句
cute泡泡
通过以下方法,使idea与数据库连接,xml中的语句,字段名是否有误,表是否存在等,即可自动检查。1打开菜单file-setting,选择SQLDialects,选择数据源image.png2连接数据库源,点击右侧database,连接数据库。image.png3填写连接参数后,点击testconnection,连接成功。点击ok即可。image.png
- Mybatis-Plus 自动属性填充与自定义Insert into语句顺序&MyBatisPlus中使用 @TableField完成字段自动填充
Archie_java
Java细节JavaMybatis-PlusTableField填充
前言:系统中使用了Mybatis-Plus自动属性填充为实体统一进行属性的填值,在Mapper的xml文件中insertinto语句使用id,进行判断会发现该属性是空的,明明已经为改字段进行了属性的自动填充,为什么Mybatis-在拼接sql语句时依然认为改属性是空的呢;1问题重现:1.1在实体中使用了属性填充属性:@TableField(fill=FieldFill.INSERT)private
- SpringFramework实战指南(一)
晴天学长
Javajavamaven开发语言
SpringFramework实战指南(一)一、技术体系结构1.1总体技术体系1.2框架概念和理解一、技术体系结构1.1总体技术体系单一架构一个项目,一个工程,导出为一个war包,在一个Tomcat上运行。也叫allinone。单一架构,项目主要应用技术框架为:Spring,SpringMVC,Mybatis-分布式架构一个项目(对应IDEA中的一个project),拆分成很多个模块,每个模块是一
- mybatis-关联关系(详细介绍)
程序员不想YY啊
mybatis数据库javamybatis数据库java
mybatis-关联关系1.准备2.一对多关联查询2.1创建Model2.2创建Mapper层2.3创建service层2.4创建测试类进行测试3.多对一关联关系4.多对多1.准备通过脚本创建相关的数据表:一对多(db1-n.txt)2.一对多关联查询2.1创建Model创建Customer及Order表对应的model在model中建立一对多关联关系在Customer中声明privateList
- MyBatis-快速使用
buzzkiller
mybatisjava
一、概述MyBatis的基本概念与产生背景已经在上一篇文章中介绍过,本篇将完成如下几步,实现MyBatis的快速使用:(1)实体类的创建(2)导入MyBatis依赖(3)编写MyBatis核心配置文件(4)SQL映射文件:实现了SQL与Java代码的分离(5)Java代码使用框架二、快速使用(1)引入MySQL驱动、MyBatis依赖mysqlmysql-connector-java8.0.25o
- mybatis(动态sql及分页)
程序员不想YY啊
mybatisSQL数据库mybatissql数据库
mybatis-动态sql及分页1.动态sql简述2.动态sql示例2.1if2.2choose2.3foreach2.4sql及include2.5sql中的特殊字符3.后台分页实现4.数据版本号处理并发问题1.动态sql简述mybatis的动态sql语句是基于OGNL表达式的。可以方便的在sql语句中实现某些逻辑.总体说来mybatis动态SQL语句主要有以下几类:if语句(简单的条件判断)c
- MyBatis-基本概念
buzzkiller
mybatis数据库
一、概念概念MyBatis官方文档介绍:MyBatisisafirstclasspersistenceframeworkwithsupportforcustomSQL,storedproceduresandadvancedmappings.MyBatiseliminatesalmostalloftheJDBCcodeandmanualsettingofparametersandretrievalo
- Mybatis-缓存
沉淀_0x0
缓存当我们发起一次数据库查询时,如果启用了二级缓存的话,MyBatis首先会先从二级缓存中检索查询结果,如果缓存不命中则会继续检索一级缓存,只有在这两层缓存都不命中的情况下才会查询数据库,最后会以数据库返回的结果更新一级缓存和二级缓存。一级缓存是基于sqlSession的,而二级缓存是基于mapper文件的namespace也就是说多个sqlSession可以共享一个mapper中的二级缓存区域,
- MyBatis-原生api调用(sqlsession)
象鼻山大王、
ssm学习mybatisjava开发语言
基本说明:(此方法使用的较少,了解即可)将增删改查,使用MyBatis原生的APl完成就是直接通过Sqlsession接口的方法来完成.sglSession.insert("com.itbull.mybatis.mapper.MonsterMapper.addMonster",monster);//标红的就是MonsterlMapper的addMonster方法,monster就是对象示例:@Be
- MyBatis-注解的方式操作
象鼻山大王、
ssm学习mybatisjavaspring
基本说明:说明:我们可以将MonsterMapperjava接口方法在对应的MonsterlMapper.xml文件中实现外,也可以直接组织MonsterMappere.java接口中声明的方法,直接使用注解来实现,可以作为一种补充的机制在项目中使用.1、编写了MonsterAnnotation.java接口publicinterfaceMonsterAnnotation{@Insert("INS
- MybatisX逆向工程方法
mendianyu
javamybatis开发语言
官方文档链接:MybatisX快速开发插件|MyBatis-Plus(baomidou.com)使用MybatisX可以快速生成mapper文件,实体类和service及实现效果方法:首先下载mybatisX插件然后创建数据库信息然后选中表,右键,点击MybatisX-Generator选中点击finish即可更详细的内容,请查看官方文档官方文档链接:MybatisX快速开发插件|MyBatis-
- 【源码】-MyBatis-如何系统地看源码
二十八画人_
看图说话工作指北mybatis阅读源码连接池动态数据源plantuml
写在前面 前段时间做过一个项目,期间用到了动态数据源dynamic-datasource,经历了dbcp2的数据库连接池没有生效到排查定位、MyBatis多种数据库产品兼容、手写MyBatis拦截器等事情。 花费了好久,一直在打磨这篇文章(不知道花费这么长时间写文章有没有意义,但互联网总得留下点儿什么吧~)。最终,千呼万唤始出来。本文就从源码的角度来系统地看看原理是什么,能学到些什么。如有说的
- mybatis-缓存
乱糟
mybatismybatis缓存java
MyBatis包含一个非常强大的查询缓存特性,它可以非常方便地配置和定制,缓存可以极大的提升查询效率。MyBatis中默认定义了两级缓存,分别是一级缓存和二级缓存。(1)默认情况下,只有一级缓存(SqlSession级别的缓存,也称为本地缓存)开启。(2)二级缓存需要手动配置,二级缓存是基于namespace级别的缓存。(3)为了提高扩展性,MyBatis定义了缓存接口Cache。我们可以通过实现
- MyBatis--遍历map
ssttIsme
updateusersetage=40whereidin(#{i})@Testpublicvoidforeachupdate(){//2.创建SQLsession,执行SQLSqlSessionsession=ssf.openSession();Mapmap=newHashMap();map.put("key",newint[]{1,3});//第一个是SQL定位//第二个传入的是map类型的参数
- MyBatis-逆向工程
flash20230513
mybatis
依赖org.mybatis.generatormybatis-generator-maven-plugin1.3.6GeneratorMapper.xmltruetruemysqlmysql-connector-java5.1.49GeneratorMapper.xml在maven中,找到当前模块下的MyBatis生成插件,双击开始生成
- B037-Mybatis基础
XIAOMING820
笔记总结mybatis
目录为什么需要Mybatis?mybatis简介入门案例其余见代码查询流程增删改流程-变动数据要加事务去持久化抽取公共类mapper接口开发规则概述代码mapper.xml引入本地约束文件别名日志管理作用log4j的使用规范井大括号与dollar大括号的区别框架:半成品,需要我们去补充核心代码才是完整的项目dao(mybatis-底层就是JDBC)-service-controller(servl
- 7、mybatis-映射文件-总体概述
唯老
一、说明MyBatis的真正强大在于它的映射语句,也是Mybatis最核心的内容。由于它的异常强大,映射器的XML文件就显得相对简单。如果拿它跟具有相同功能的JDBC代码进行对比,你会立即发现省掉了将近95%的代码。MyBatis就是针对SQL构建的,并且比普通的方法做的更好SQL映射文件有很少的几个顶级元素(按照它们应该被定义的顺序)cache–给定命名空间的缓存配置。cache-ref–其他命
- MyBatis-逆向工程
wang_peng
javamybatis
1.简单生成1.添加依赖和插件org.mybatismybatis3.5.9mysqlmysql-connector-java5.1.49log4jlog4j1.2.17org.mybatis.generatormybatis-generator-maven-plugin1.3.0org.mybatis.generatormybatis-generator-core1.3.2com.mchange
- Javase | Java工具类、(SSM)各种依赖的作用
一只大皮卡丘
Java知识点-整合javaSSMspringmaven注解JavaJava开发工具类
目录:Java工具类:日期工具类文件上传工具类短信工具类验证码工具类邮件工具类代码生成器(SSM)各种依赖的作用:spring-context依赖:spring-context-supprt依赖:spring-tx依赖:mysql-connector-java依赖:spring-jdbc依赖:spring-data-jpa依赖:mybatis依赖:mybatis-spring依赖:mybatis-
- Mybatis
小金的学习笔记
Javamybatisjava
文章目录一.MyBatis简介1.1简介1.2MyBatis历史1.3为什么要使用MyBatis?1.4去哪里找MyBatis?二.MyBatis-HelloWorld2.1HelloWorld简单版2.2MyBatis操作数据库2.3测试2.4HelloWorld-接口式编程2.5SqlSession三.MyBatis-全局配置文件3.1**properties属性**3.2**settings
- Mybatis- Plus条件构造器
一只毫无梦想的程序猿
持久化框架mybatis
条件构造器EntityWrapper1、EntityWrapper1.1、简介(1)Mybatis-Plus通过EntityWrapper(简称EW,MP封装的一个查询条件构造器)或者Condition(与EW类似)来让用户自由的构建查询条件,简单便捷没有额外的负担,能够有效地提高开发效率。(2)是一个实体包装器,主要用于处理sql拼接、排序、实体参数查询等。(3)注意:他使用的是数据库字段,不是
- SQL的各种连接查询
xieke90
UNION ALLUNION外连接内连接JOIN
一、内连接
概念:内连接就是使用比较运算符根据每个表共有的列的值匹配两个表中的行。
内连接(join 或者inner join )
SQL语法:
select * fron
- java编程思想--复用类
百合不是茶
java继承代理组合final类
复用类看着标题都不知道是什么,再加上java编程思想翻译的比价难懂,所以知道现在才看这本软件界的奇书
一:组合语法:就是将对象的引用放到新类中即可
代码:
package com.wj.reuse;
/**
*
* @author Administrator 组
- [开源与生态系统]国产CPU的生态系统
comsci
cpu
计算机要从娃娃抓起...而孩子最喜欢玩游戏....
要让国产CPU在国内市场形成自己的生态系统和产业链,国家和企业就不能够忘记游戏这个非常关键的环节....
投入一些资金和资源,人力和政策,让游
- JVM内存区域划分Eden Space、Survivor Space、Tenured Gen,Perm Gen解释
商人shang
jvm内存
jvm区域总体分两类,heap区和非heap区。heap区又分:Eden Space(伊甸园)、Survivor Space(幸存者区)、Tenured Gen(老年代-养老区)。 非heap区又分:Code Cache(代码缓存区)、Perm Gen(永久代)、Jvm Stack(java虚拟机栈)、Local Method Statck(本地方法栈)。
HotSpot虚拟机GC算法采用分代收
- 页面上调用 QQ
oloz
qq
<A href="tencent://message/?uin=707321921&Site=有事Q我&Menu=yes">
<img style="border:0px;" src=http://wpa.qq.com/pa?p=1:707321921:1></a>
- 一些问题
文强chu
问题
1.eclipse 导出 doc 出现“The Javadoc command does not exist.” javadoc command 选择 jdk/bin/javadoc.exe 2.tomcate 配置 web 项目 .....
SQL:3.mysql * 必须得放前面 否则 select&nbs
- 生活没有安全感
小桔子
生活孤独安全感
圈子好小,身边朋友没几个,交心的更是少之又少。在深圳,除了男朋友,没几个亲密的人。不知不觉男朋友成了唯一的依靠,毫不夸张的说,业余生活的全部。现在感情好,也很幸福的。但是说不准难免人心会变嘛,不发生什么大家都乐融融,发生什么很难处理。我想说如果不幸被分手(无论原因如何),生活难免变化很大,在深圳,我没交心的朋友。明
- php 基础语法
aichenglong
php 基本语法
1 .1 php变量必须以$开头
<?php
$a=” b”;
echo
?>
1 .2 php基本数据库类型 Integer float/double Boolean string
1 .3 复合数据类型 数组array和对象 object
1 .4 特殊数据类型 null 资源类型(resource) $co
- mybatis tools 配置详解
AILIKES
mybatis
MyBatis Generator中文文档
MyBatis Generator中文文档地址:
http://generator.sturgeon.mopaas.com/
该中文文档由于尽可能和原文内容一致,所以有些地方如果不熟悉,看中文版的文档的也会有一定的障碍,所以本章根据该中文文档以及实际应用,使用通俗的语言来讲解详细的配置。
本文使用Markdown进行编辑,但是博客显示效
- 继承与多态的探讨
百合不是茶
JAVA面向对象 继承 对象
继承 extends 多态
继承是面向对象最经常使用的特征之一:继承语法是通过继承发、基类的域和方法 //继承就是从现有的类中生成一个新的类,这个新类拥有现有类的所有extends是使用继承的关键字:
在A类中定义属性和方法;
class A{
//定义属性
int age;
//定义方法
public void go
- JS的undefined与null的实例
bijian1013
JavaScriptJavaScript
<form name="theform" id="theform">
</form>
<script language="javascript">
var a
alert(typeof(b)); //这里提示undefined
if(theform.datas
- TDD实践(一)
bijian1013
java敏捷TDD
一.TDD概述
TDD:测试驱动开发,它的基本思想就是在开发功能代码之前,先编写测试代码。也就是说在明确要开发某个功能后,首先思考如何对这个功能进行测试,并完成测试代码的编写,然后编写相关的代码满足这些测试用例。然后循环进行添加其他功能,直到完全部功能的开发。
- [Maven学习笔记十]Maven Profile与资源文件过滤器
bit1129
maven
什么是Maven Profile
Maven Profile的含义是针对编译打包环境和编译打包目的配置定制,可以在不同的环境上选择相应的配置,例如DB信息,可以根据是为开发环境编译打包,还是为生产环境编译打包,动态的选择正确的DB配置信息
Profile的激活机制
1.Profile可以手工激活,比如在Intellij Idea的Maven Project视图中可以选择一个P
- 【Hive八】Hive用户自定义生成表函数(UDTF)
bit1129
hive
1. 什么是UDTF
UDTF,是User Defined Table-Generating Functions,一眼看上去,貌似是用户自定义生成表函数,这个生成表不应该理解为生成了一个HQL Table, 貌似更应该理解为生成了类似关系表的二维行数据集
2. 如何实现UDTF
继承org.apache.hadoop.hive.ql.udf.generic
- tfs restful api 加auth 2.0认计
ronin47
目前思考如何给tfs的ngx-tfs api增加安全性。有如下两点:
一是基于客户端的ip设置。这个比较容易实现。
二是基于OAuth2.0认证,这个需要lua,实现起来相对于一来说,有些难度。
现在重点介绍第二种方法实现思路。
前言:我们使用Nginx的Lua中间件建立了OAuth2认证和授权层。如果你也有此打算,阅读下面的文档,实现自动化并获得收益。SeatGe
- jdk环境变量配置
byalias
javajdk
进行java开发,首先要安装jdk,安装了jdk后还要进行环境变量配置:
1、下载jdk(http://java.sun.com/javase/downloads/index.jsp),我下载的版本是:jdk-7u79-windows-x64.exe
2、安装jdk-7u79-windows-x64.exe
3、配置环境变量:右击"计算机"-->&quo
- 《代码大全》表驱动法-Table Driven Approach-2
bylijinnan
java
package com.ljn.base;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.uti
- SQL 数值四舍五入 小数点后保留2位
chicony
四舍五入
1.round() 函数是四舍五入用,第一个参数是我们要被操作的数据,第二个参数是设置我们四舍五入之后小数点后显示几位。
2.numeric 函数的2个参数,第一个表示数据长度,第二个参数表示小数点后位数。
例如:
select cast(round(12.5,2) as numeric(5,2))  
- c++运算符重载
CrazyMizzz
C++
一、加+,减-,乘*,除/ 的运算符重载
Rational operator*(const Rational &x) const{
return Rational(x.a * this->a);
}
在这里只写乘法的,加减除的写法类似
二、<<输出,>>输入的运算符重载
&nb
- hive DDL语法汇总
daizj
hive修改列DDL修改表
hive DDL语法汇总
1、对表重命名
hive> ALTER TABLE table_name RENAME TO new_table_name;
2、修改表备注
hive> ALTER TABLE table_name SET TBLPROPERTIES ('comment' = new_comm
- jbox使用说明
dcj3sjt126com
Web
参考网址:http://www.kudystudio.com/jbox/jbox-demo.html jBox v2.3 beta [
点击下载]
技术交流QQGroup:172543951 100521167
[2011-11-11] jBox v2.3 正式版
- [调整&修复] IE6下有iframe或页面有active、applet控件
- UISegmentedControl 开发笔记
dcj3sjt126com
// typedef NS_ENUM(NSInteger, UISegmentedControlStyle) {
// UISegmentedControlStylePlain, // large plain
&
- Slick生成表映射文件
ekian
scala
Scala添加SLICK进行数据库操作,需在sbt文件上添加slick-codegen包
"com.typesafe.slick" %% "slick-codegen" % slickVersion
因为我是连接SQL Server数据库,还需添加slick-extensions,jtds包
"com.typesa
- ES-TEST
gengzg
test
package com.MarkNum;
import java.io.IOException;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.annotation
- 为何外键不再推荐使用
hugh.wang
mysqlDB
表的关联,是一种逻辑关系,并不需要进行物理上的“硬关联”,而且你所期望的关联,其实只是其数据上存在一定的联系而已,而这种联系实际上是在设计之初就定义好的固有逻辑。
在业务代码中实现的时候,只要按照设计之初的这种固有关联逻辑来处理数据即可,并不需要在数据库层面进行“硬关联”,因为在数据库层面通过使用外键的方式进行“硬关联”,会带来很多额外的资源消耗来进行一致性和完整性校验,即使很多时候我们并不
- 领域驱动设计
julyflame
VODAO设计模式DTOpo
概念:
VO(View Object):视图对象,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。
DTO(Data Transfer Object):数据传输对象,这个概念来源于J2EE的设计模式,原来的目的是为了EJB的分布式应用提供粗粒度的数据实体,以减少分布式调用的次数,从而提高分布式调用的性能和降低网络负载,但在这里,我泛指用于展示层与服务层之间的数据传输对
- 单例设计模式
hm4123660
javaSingleton单例设计模式懒汉式饿汉式
单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。
&nb
- logback
zhb8015
loglogback
一、logback的介绍
Logback是由log4j创始人设计的又一个开源日志组件。logback当前分成三个模块:logback-core,logback- classic和logback-access。logback-core是其它两个模块的基础模块。logback-classic是log4j的一个 改良版本。此外logback-class
- 整合Kafka到Spark Streaming——代码示例和挑战
Stark_Summer
sparkstormzookeeperPARALLELISMprocessing
作者Michael G. Noll是瑞士的一位工程师和研究员,效力于Verisign,是Verisign实验室的大规模数据分析基础设施(基础Hadoop)的技术主管。本文,Michael详细的演示了如何将Kafka整合到Spark Streaming中。 期间, Michael还提到了将Kafka整合到 Spark Streaming中的一些现状,非常值得阅读,虽然有一些信息在Spark 1.2版
- spring-master-slave-commondao
王新春
DAOspringdataSourceslavemaster
互联网的web项目,都有个特点:请求的并发量高,其中请求最耗时的db操作,又是系统优化的重中之重。
为此,往往搭建 db的 一主多从库的 数据库架构。作为web的DAO层,要保证针对主库进行写操作,对多个从库进行读操作。当然在一些请求中,为了避免主从复制的延迟导致的数据不一致性,部分的读操作也要到主库上。(这种需求一般通过业务垂直分开,比如下单业务的代码所部署的机器,读去应该也要从主库读取数