
传统数据库/Mybatis/Redis
文章平均质量分 63
Mybatis和传统关系型数据库相关
石头wang
平凡码农,强迫症,抠细节。
展开
-
研究 “B表里的数据是否全部都在A表里“ 的问题
研究 "B表里的数据是否全部都在A表里" 的问题原创 2023-02-20 22:13:29 · 482 阅读 · 0 评论 -
【Oracle系列4】Oracle 数据库的层次结构,常见的GUI连接用具
Oracle 数据库的层次结构,常见的GUI连接用具原创 2022-11-28 18:37:02 · 1428 阅读 · 0 评论 -
【Oracle系列3】Docker快速安装Oracle 12c
Docker快速安装Oracle 12c原创 2022-11-27 20:14:41 · 4297 阅读 · 0 评论 -
【Oracle系列2】Oracle的内置角色以及权限极其关联
使用有权限的用户查询(没有权限可能报table or view not exist)原创 2022-11-27 18:44:51 · 597 阅读 · 0 评论 -
【Oracle系列1】Oracle 的connect角色和create session权限的区别
connect是角色不是权限,create session是权限不是角色。而create session权限就是connect角色所拥有的权限之一。oracle数据库新建用户之后是无法登录的,需要赋予connect角色或者create session权限。如果不能赋予connect角色,单给新建的用户赋予create session的权限也是能让其登录的。如何知道Oracle都有哪些内置的角色、内置的权限、角色下有什么权限?PS: connect 角色都有什么权限?使用sys账号登录执行。原创 2022-11-27 18:06:12 · 5100 阅读 · 1 评论 -
常用SQL语句DDL建表建索引建序列(PGSQL)
背景pgsql常见DDL语句,怎么建主键,怎么建索引,建表时自动建sequence,查询某个表是否存在,某个表是否存在某个字段,某个索引是否存在,查主键的名字查 “是否存在”获得当前数据库(catalog)和schema--使用这两个函数select current_database();select current_schema();查schema下有什么表--查询当前schema下有什么表(方法一)select * from pg_tables where schemanam原创 2022-02-21 23:30:00 · 948 阅读 · 0 评论 -
常用SQL语句常见建表建索引等DDL语句(PGSQL)
背景pgsql常见DDL语句,怎么建主键,怎么建索引,建表时自动建sequence,查询某个表是否存在,某个表是否存在某个字段,某个索引是否存在,查主键的名字查 “是否存在”获得当前数据库(catalog)和schema--使用这两个函数select current_database();select current_schema();查schema下有什么表--查询当前schema下有什么表(方法一)select * from pg_tables where schemanam原创 2022-02-16 22:45:00 · 3723 阅读 · 0 评论 -
升级脚本需要更新带有特殊字符的值(换行、单引号、markdown文本)到字段中,如何兼容性更好
升级脚本需要更新带有特殊字符的值(换行、单引号、markdown文本)到字段中,如何兼容性更好背景有的时候,你的升级脚本(sql)需要往数据库表写入类似markdown这种带有换行甚至特殊字符的值。你把markdown的文档源码直接写进 set val='你的markdown文本'是可以成功执行,但是有时候也会遇到报错(环境复杂),例如有没有兼容性较好、健壮的方式?操作思路:利用base64的字串作为字面量,通过SQL函数转为我们本来应该书写的值,更新到表里。例如将如下sqlupdate原创 2022-02-16 21:15:00 · 444 阅读 · 0 评论 -
java jdbc通过SSH隧道连接数据库
java jdbc通过SSH隧道连接数据库例如要拦截数据库a,不能直接连,必须通过ecs连接(Navicat配置ssh连接相当简单,但是Java程序怎么弄呢?)实现步骤新建 springboot 或 maven项目(普通的java项目也可以,只是引入依赖没那么方便)pom.xml 中新增依赖<dependency> <groupId>com.jcraft</groupId> <artifactId>jsch</artifac原创 2020-06-15 21:12:50 · 5038 阅读 · 2 评论 -
关于mybatis分页PageHelper中mapper查出跟service层不一样的类型的问题
问题痛点在查询分页的时候,我们一般用PageHelper(com.github.pagehelper)。在service层,我们使用mapper查询数据。service的返参一般是dto,但是mapper一般不返回dto(返回跟表一一对应的实体类,如eo,但service层返回如PageInfo)这就需要将eo转成dto,问题点就在于,在PageHelper那行代码之后的查询结果并不是List,而是Page,Page是ArrayList的子类,查询的Page结果是带有许多跟分页有段的额外结果的,如果只原创 2020-09-27 19:00:06 · 1245 阅读 · 1 评论 -
如何导出Navicat的数据库连接配置
如何导出Navicat的数据库连接配置背景我们可能会在不同的电脑安装Navicat,这些连接的配置如何从一台电脑迁移到另外一条?自行备份是比较繁琐的,尤其配置连接比较多的时候。其实可以使用Navicat自带的导入导出连接。非常简单。我用的是Navicat 12 Premium,对于其他版本应该差不多,并且我觉得12导出来的也应该是可以给15进行导入的。导出步骤文件->导出连接,选择需要导出的连接,选择是否导出密码。导出的密码是加密过的,非明文。导出时带密码则导入时密码也是有的,否则导入原创 2021-01-08 14:06:20 · 12268 阅读 · 1 评论 -
如何使用Navicat导入Excel数据到数据库(Mysql为例)
一、 背景有时候我们需要将Excel中的数据导入到数据库表里,从而更好地使用SQL进行复杂查询以满足我们的统计需求二、环境这里以MySQL为例,其他数据库也差不多,使用的环境是:测试的平台:windowsNavicat版本:Premium 12.1.12 (64-bit)数据库:mysql,5.7PS:以上这些应该是不管是win还是mac,Navicat的版本应该跟我有差异,或者mysql版本跟我有差异,或者数据库类型不同,应该也是可以成功导入的。这里列出详细的版本仅仅是为了尽到告知。三原创 2020-12-26 10:18:27 · 4437 阅读 · 1 评论 -
打印mybatis可执行的sql语句的IDEA插件,除了Mybatis Log plugin之外的最好选择
打印mybatis可执行的sql语句的IDEA插件前言Mybatis打印了类似如下的语句2020-07-21 17:49:31.772 [] [main] DEBUG c.d.d.s.mapper.MyUserMapper.select - ==> Preparing: SELECT * FROM my_user WHERE (account=? and create_time=? and dr=?) 2020-07-21 17:49:31.787 [] [main] DEBUG c.d.d原创 2020-07-21 19:08:33 · 13079 阅读 · 7 评论 -
sql可以写在java文件或者xml中,哪个优先级更高
mybatis 的 sql允许写在 java 文件里头,也可以写在xml里头,如果同时写,会执行哪个?@Select({"<script>","select 1 from t_table where id=#{id}","</script>"})int getEo(@Param("id") Integer id);<select id="getEo" resultType="java.lang.Integer"> select 2 from t_tab原创 2021-12-07 21:45:00 · 849 阅读 · 0 评论 -
mybatis如何插入表得到主键 useGeneratedKeys、keyProperty、keyColumn
mybatis如何插入表得到主键 useGeneratedKeys、keyProperty、keyColumn<insert id="insertEo" useGeneratedKeys="true" keyProperty="eo.id" keyColumn="id"> INSERT INTO t_table (name,tenant_id,type,create_person,update_person,create_time,update_time) values(#{e原创 2021-12-07 20:30:00 · 278 阅读 · 0 评论 -
关于字段超长导致的插入错误的提示信息(value too long for type character varying)
关于字段超长导致的插入错误的提示信息背景你们肯定遇到过这样的错误,跑的程序需要插入或更新一张表,值的长度超过字段最大限制而报错。要如何定位是哪个字段长度过小导致的?方法1、先要获取错误信息最直观的是在web页面上爆出这个错误信息(如果有的话),或者日志上找错误信息。有了错误信息之后怎么定位?2、如何排查?对于mysql,错误提示信息有指示是究竟是哪个字段过短。但是对于pgsql,提示得模糊。pgsql没有提示出问题的字段名,只能通过 “类型+长度” 来猜是哪个字段过短。比如pg原创 2021-06-15 16:41:52 · 33349 阅读 · 13 评论 -
pgsql (PostgresSQL) 查询的时候忽略值的大小写差异
背景有时候我们不能忽略大小写,如密码的比对 (这一般也在Java中对比,不存在SQL中进行区分的需求)搜索的时候忽略大小写如何忽略大小写pgsql/ postgresql 如何查询的时候忽略大小写?假设有 fock5 的数据select * from data_group where name=‘fuck5’; --能查出select * from data_group where name=‘Fuck5’; --不能select * from data_group wher原创 2021-12-07 23:00:00 · 12595 阅读 · 2 评论 -
lua脚本保证Redis多条命令原子性
lua脚本保证Redis多条命令原子性Redis能执行lua脚本,一段lua脚本可以作为一个整体,这样将多条Redis命令写入lua,即可以实现事务的原子性,下面演示了jedis和redisTemplate是如何调用lua脚本的Jedis调用lua脚本# 完成的功能是 set my_key1 my_value1 EX 15 NX, LUA脚本很神奇不需要加分号和换行符# 其实该功能在J...原创 2019-10-16 14:44:50 · 3051 阅读 · 0 评论 -
几款连接redis的客户端(GUI客户端),下面记录了我使用的几款
几款连接redis的客户端(GUI客户端),下面记录了我使用的几款一、Redis 客户端1、命令行工具命令行 (建议使用,简单)比如windows的cmd和Linux、Mac的Terminal,虽然最简单好用。必须保证有 redis-cli 命令(windows 是 redis-cli.exe),比如通过安装 redis 就会有这个命令。2、桌面客户端RediNav (windows桌面客户端,MacOS客户端,根本不能用)评价:垃圾,完全不能用,无论win还是mac平台!我写在原创 2021-09-10 16:18:59 · 76716 阅读 · 5 评论 -
为什么通过命令行查不到redis中的key
为什么通过命令行查不到redis中的key背景在调试java程序中,可能会发生一些匪夷所思的事情。比如命令行中用redis命令为什么查不到key,但是应用程序却能读取到这个值。比如你用命令行连接上去后发现 get your_key为nil,或者是 keys your_key 发现没这个key。原因如下代码的RedisTemplate都没有特别配置序列化器,在执行后,使用命令行连上redis,执行keys my_key*,发现只有第二个key存在,第一个消失了,但是代码执行后是能够取到值的。这是为什原创 2021-09-10 16:42:20 · 3872 阅读 · 1 评论 -
关于mysql 的 limit m,n 和 limit offset 的区别以及mysql分页效率提高的方法
关于mysql 的 limit m,n 和 limit offset 的区别以及mysql分页效率提高的方法一、背景我们都知道 mysql 里 limit 有2种写法limit a,b从下标a开始取,取b条数据 。(a从0开始)limit b offset a查出b条记录,从偏移量a开始,a就是下标,从0开始 (查询结果同 limit a,b)既然查询的结果是相同的,那查询的效率不一样吗?offset写法做了什么优化吗?limit a,b 在分页的时候又有哪些效率问题呢?二、原创 2021-05-11 15:10:59 · 1827 阅读 · 0 评论 -
mysql 里 CST 时区的坑
mysql 里 CST 时区的坑一、问题简述mysql 里 CST 时区是个非常坑的概念,因为在 mysql 里CST既表示中国也表示美国的时区。但是在Jdk代码里,CST 这个字符串被理解为Central Standard Time (USA)(GMT-6),这就是造成坑的原因。解决办法mysql 的 time_zone配置 不要用SYSTEM,因为用了就是跟随 system_time_zone 的值,而 system_time_zone 读取自数据库所在宿主机的操作系统,常常是 CST 的值。解原创 2021-04-06 22:26:21 · 14162 阅读 · 0 评论 -
关于mysql的时区(下):如何设置mysql的时区
一、如何设置 mysql 时区1、命令1)查时区:show variables like '%time_zone%'返回有2行记录,要看time_zone变量的值,不需要看system_time_zone。若值为SYSTEM表示取值跟system_time_zone保持一致。system_time_zone的值是启动mysql服务的时候读取了操作系统的值,除非重新启动mysql服务重读否则这个值不变2)设置会话时区:set time_zone='+8:00'仅对当前会话有效,在当前窗口立即生效原创 2021-04-05 17:45:04 · 43747 阅读 · 3 评论 -
关于mysql的时区(上):关于mysql的datetime和timestamp类型是否能根据时区不同自动转换值
关于mysql的时区(1)背景由于mysql5.7用的人还是比较多,本文还是基于mysql 5.7(不过跟8.x版本应该是差不多的)本问研究mysql的常用的两个日期类型和时区的关系datetimetimestamp在阿里的Java开发手册中,推荐的是用datetime,没说明原因,估计是忌惮timestamp的最大值只能到2038年。顺便回顾了怎么设置mysql的时区、CST的bug一、mysql 的 日期类型和时区的关系The session time zone s原创 2021-04-05 17:43:31 · 3356 阅读 · 2 评论 -
【安装】安装单机mysql8或mysql5.7(CentOS7)(最简单的教程)
本文是在centos7上安装mysql5.7或mysql8,单节点步骤一、添加 MySQL yum 源本文使用root用户操作,在node1节点的虚拟机上安装可以采用yum localinstall命令来添加 MySQL 源。在 https://dev.mysql.com/downloads/repo/yum/ 页面选择合适 rpm 包,这些 rpm 包的作用就是添加 MySQL y...原创 2020-04-28 17:00:02 · 413 阅读 · 0 评论 -
pgsql(PostgreSQL)常用命令行操作
PostgreSQL常用命令行操作注意注意有些命令要以;结尾,有些不用(一般是 \命令 的不用)不以;结尾的命令相当于未换行允许一次性粘贴执行多行命令登录# 切换用户 (必须先切换到postgres的Linux用户)su - postgres# 使用postgres用户登录,如需密码会提示输入,登录后选中的库是postgrespsql# 详解:省略数据库,默认和用户......原创 2019-03-03 19:42:20 · 10797 阅读 · 0 评论 -
主表和从表
主表和从表 收藏 主从表是一种数据关系模型,主表约束从表。以考试成绩表stuMarks和学员信息表stuInfo为例, 我们知道它们是一对多的关系(80分可能有3个人),当然一是主,多是从。(譬如我们的胡主席是主,我们大家都要听主席的话!)所以stuInfo就是主表,stuMarks就是从表。那么,一般我们会在从表中做一个外键字段,引用主表中的主键。(为什么呢?大家想想是13亿人民记住主席的名字容易还是主席记住13亿人民名字呢?)这一点,已经在stuMarks表中得到了体现。那么,为了保持数据的原创 2011-02-14 16:48:00 · 968 阅读 · 0 评论