spring boot jpa 连接mysql问题汇总

1、jpa插入mysql时中文乱码

(1)在mysql中新建查询 show variables like 'char%',看到character_set_server的值为latin1,

(2)修改mysql.ini中

[mysqld]下的

character-set-server=utf8

(mysql5.7的ini在C:\ProgramData\MySQL\MySQL Server 5.7目录下)

2、jpa查询时不区分大小写,在Mysql数据库中进行查询时,希望英文严格区分大小写。默认情况下是不区分大小写的。

Mysql默认的字符检索策略:utf8_general_ci,表示不区分大小写;utf8_general_cs表示区分大小写,utf8_bin表示二进制比较,同样也区分大小写 。(注意:在Mysql5.6.10版本中,不支持utf8_genral_cs!!!!)

所有方式一:创建表时,直接设置表的collate属性为utf8_general_cs或者utf8_bin;如果已经创建表,则直接修改字段的Collation属性(或叫排序规则)为utf8_general_cs或者utf8_bin。

创建表:

CREATE TABLE testt(

id INT PRIMARY KEY,

name VARCHAR(32) NOT NULL

) ENGINE = INNODB COLLATE =utf8_bin;

如果表已经创建,则修改表结构中Collation字段

这时候,再执行上面的两条sql语句,则会严格区分大小写。

(2).第二种方式比较简单,是直接修改sql语句,在要查询的字段前面加上binary关键字即可。

SELECT * FROM emp WHERE BINARY emp.job='Engineer'

 SELECT * FROM emp WHERE BINARY emp.job='ENGINEER'

链接:https://www.imooc.com/article/14190

3、日期类型的字符串排序,空值在最上面

SELECT * FROM projects ORDER BY LENGTH(trim(pubdate))<1 DESC,pubdate DESC

你可能感兴趣的:(spring boot jpa 连接mysql问题汇总)