好客租房项目的底层数据库采用MySQL,而MySQL采用衍生版本Percona,并且采用docker容器化的方式进行部署。
Percona?为 MySQL?数据库服务器进行了改进,在功能和性能上较 MySQL?有着很显著的提升。该版本提升了在高负载情况下的 InnoDB?的性能、为 DBA?提供一些非常有用的性能诊断工具;另外有更多的参数和命令来控制服务器行为。
Percona?Server?只包含 MySQL?的服务器版,并没有提供相应对 MySQL?的 Connector?和 GUI?工具进行改进。
Percona?Server?使用了一些 google-mysql-tools,?Proven?Scaling,?Open?Query?对 MySQL?进行改造。官网:Percona Software for MySQL
在后台系统服务的开发过程中,必然要和数据库进行交互,在本套课程中,ORM这一层的技术选型,我们采用Mybatis框架作为持久层框架,原因是Mybatis对SQL语句编写更加的灵活。
为了提升开发的效率,所以选用MybatisPlus作为mybatis的插件,以提升开发的效率。下面我们来学习下MybatisPlus插件的使用。
MyBatis-Plus(简称 MP)是一个 MyBatis?的增强工具,在 MyBatis?的基础上只做增强不做改变,为简化开发、提高效率而生。
我们的愿景是成为 MyBatis?最好的搭档,就像 魂斗罗 中的 1P、2P,基友搭配,效率翻倍。
??无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
??损害小:启动即会自动注入基本?CURD,性能基本无损耗,直接面向对象操作
??强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求
??支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错?
??支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、
SQLServer2005、SQLServer?等多种数据库
支持主键自动生成:支持多达 4?种主键策略(内含分布式唯一 ID?生成器 - Sequence),可自由配置,完美解决主键问题
支持 XML 热加载:Mapper?对应的 XML?支持热加载,对于简单的 CRUD?操作,甚至可以无 XML?启动
支持 ActiveRecord?模式:支持 ActiveRecord?形式调用,实体类只需继承 Model?类即可进行强大的 CRUD操作
支持自定义全局通用操作:支持全局通用方法注入(?Write?once,?use?anywhere?)
支持关键词自动转义:支持数据库关键词(order、key )自动转义,还可自定义关键词
内置代码生成器:采用代码或者 Maven?插件可快速生成 Mapper?、 Model?、 Service?、 Controller?层代码,支持模板引擎,更有超多自定义配置等您来使用
内置分页插件:基于?MyBatis?物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通List?查询
??内置性能分析插件:可输出 Sql?语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢查询?
??内置全局拦截插件:提供全表 delete?、 update?操作智能分析阻断,也可自定义拦截规则,预防误操作
?内置 Sql 注入剥离器:支持 Sql 注入剥离,有效预防 Sql 注入攻击
首先,创建数据库:haoke:
CREATE TABLE `user` (
`id` bigint(20) NOT NULL COMMENT '主键ID',
`name` varchar(30) DEFAULT NULL COMMENT '姓名',
`age` int(11) DEFAULT NULL COMMENT '年龄',
`email` varchar(50) DEFAULT NULL COMMENT '邮箱',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- 插入数据
INSERT INTO `user` (`id`, `name`, `age`, `email`) VALUES ('1', 'Jone', '18', 'test1@baomidou.com');
INSERT INTO `user` (`id`, `name`, `age`, `email`) VALUES ('2', 'Jack', '20', 'test2@baomidou.com');
INSERT INTO `user` (`id`, `name`, `age`, `email`) VALUES ('3', 'Tom', '28', 'test3@baomidou.com');
INSERT INTO `user` (`id`, `name`, `age`, `email`) VALUES ('4', 'Sandy', '21', 'test4@baomidou.com');
INSERT INTO `user` (`id`, `name`, `age`, `email`) VALUES ('5', 'Billie', '24',
'test5@baomidou.com');
导入依赖:
?