运维开发网

springboot mysql mybatis docker

运维开发网 https://www.qedev.com 2020-02-23 13:50 出处:51CTO 作者:林博轩
springboot mysql mybatis docker

配置mysql

  • docker部署springboot+mysql项目

    docker pull mysql下载mysql

    其余跟教程走https://blog.csdn.net/Sirius_hly/article/details/83685256

    设置外网访问

配置mybatis

2、加入依赖(可以用 http://start.spring.io/ 下载)

    <!-- 引入starter-->
            <dependency>
                    <groupId>org.mybatis.spring.boot</groupId>
                    <artifactId>mybatis-spring-boot-starter</artifactId>
                    <version>1.3.2</version>
                    <scope>runtime</scope>              
            </dependency>

    <!-- MySQL的JDBC驱动包  --> 
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <scope>runtime</scope>
            </dependency> 
    <!-- 引入第三方数据源 -->       
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>1.1.6</version>
            </dependency>

3、加入配置文件

#mybatis.type-aliases-package=net.xdclass.base_project.domain

#可以自动识别

#spring.datasource.driver-class-name =com.mysql.jdbc.Driver

spring.datasource.url=jdbc:mysql://localhost:3306/movie?useUnicode=true&characterEncoding=utf-8

spring.datasource.username =root

spring.datasource.password =password

#如果不使用默认的数据源 (com.zaxxer.hikari.HikariDataSource)

spring.datasource.type =com.alibaba.druid.pool.DruidDataSource

加载配置,注入到sqlSessionFactory等都是springBoot帮我们完成

4、启动类增加mapper扫描

@MapperScan("com.example.demo.Mapper")

 技巧:保存对象,获取数据库自增id 
 @Options(useGeneratedKeys=true, keyProperty="id", keyColumn="id")

4、开发mapper

参考语法 http://www.mybatis.org/mybatis-3/zh/java-api.html

5 控制台打印sql语句

#增加打印sql语句,一般用于本地开发测试

mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

整合问题集合:

https://my.oschina.net/hxflar1314520/blog/1800035

https://blog.csdn.net/tingxuetage/article/details/80179772


navicat 执行sql,profile是非常好的定位慢查询的方法

springboot mysql mybatis docker

小d课堂最后那点讲redis排行榜的数据还是要存到mysql里,里面讲了些设计表的要点

1、表设计过程中应该注意的点即数据类型

1)更小的通常更好 控制字节长度

2)使用合适的数据类型

如tinyint只占8个位,char(1024)与varchar(1024)的对比,char用于类似定长数据存储比varchar节省空间,如:uuid(32),可以用char(32).

3)尽量避免NULL建议使用NOT NULL DEFAULT ''

NULL的列会让索引统计和值比较都更复杂。可为NULL的列会占据更多的磁盘空间,在Mysql中也需要更多复杂的处理程序

2、索引设计过程中应该注意的点

1)选择唯一性索引

唯一性索引的值是唯一的,可以更快速的通过该索引来确定某条记录,保证物理上面唯一

2)为经常需要排序、分组和联合操作的字段建立索引

经常需要ORDER BY、GROUP BY、DISTINCT和UNION等操作的字段,排序操作会浪费很多时间

3)常作为查询条件的字段建立索引

如果某个字段经常用来做查询条件,那么该字段的查询速度会影响整个表的查询速度

4)数据少的地方不必建立索引 比如status字段,基本只有0和1两个字段

5)建立索引方法:在navicat里,右键设计表,点击索引输入字段名字,确定。查看表结构sql(ddl)已增加key。自己做实验,ORDER BY字段增加索引,10000条数据差了0.2秒左右

3、sql优化,explain查看执行计划(注意:扫描行数会影响CPU运行,占用大量内存)

着重rows 行数过多一定意味着满,并且有占满内存的可能

springboot mysql mybatis docker

简介:sql优化以及mybatis generator反向工程讲解

1) 能够用BETWEEN的就不要用IN

2) 能够用DISTINCT的就不用GROUP BY

3) 避免数据类型强转

4) 学会采用explain查看执行计划

mysql必知必会

命令结尾处加;

navicat 快捷键 command+r 运行

select from t_user limit 5,5。LIMIT 5, 5指示MySQL返回从行5开始的5行 不包含第5行。

select from t_user ORDER BY nickname,mobile。如果nickename都是唯一,则排序结果与mobile无关。默认从小到大。DESC是从大到小

select from t_user where id BETWEEN 1 AND 10。id在1-10中

select from t_user where mobile is null。mobile 为空

select from t_user where id=1 or mobile=13911391996。id=1或者mobile=139的

select from t_user where (id=1 or mobile=13581972222213114) or mobile=13911391996。还可以这么写

为什么要使用IN操作符?其优点具体如下。

1在使用长的合法选项清单时,IN操作符的语法更清楚且更直观。  在使用IN时,计算的次序更容易管理(因为使用的操作符更少)。

2 IN操作符一般比OR操作符清单执行更快。

3 IN的最大优点是可以包含其他SELECT语句,使得能够更动态地建立WHERE子句。第14章将对此进行详细介绍。

select from t_user where mobile in (13911391995,13911391996)

select from t_user where mobile not in (13911391995,13911391996)。not in不包含,但注意一点,也会过滤掉null,只会把有值的 并且 不=null的展示出来

select from t_user where mobile LIKE '%96'。96结尾的。也可以96%、%96%

select from t_user where mobile LIKE '_11391996'。单个匹配,类似like,可以写多个

不要过度使用通配符。如果其他操作符能达到相同的目的,应该 使用其他操作符。因为性能不高。

select from t_user where mobile REGEXP '13911391996|13911391995'。正则,or

SELECT concat(mobile, '(', nickname ,')') as splice from t_user。拼接,如果有值是null,则拼接之后的值也是null

SELECT concat(Rtrim(nickname), '(', mobile ,')') as splice from t_user。RTrim()函数去掉值右边的所有空格。通过使用RTrim(),各个 列都进行了整理。同事还支持LTrim()。以及Trim()

select Upper(nickname) from t_user。大写,中文不受影响。lower小写

SELECT SUM(out_integral)AS dayIntegral FROM t_commodity_order AS AA WHERE if(is_experience=1,AA.is_experience=1,(AA.is_experience = 0 or AA.is_experience is null))。where里写判断,where里同样可以写case when

常用的时期处理函数

springboot mysql mybatis docker

几个注意事项

select from t_user where date(create_time)>"2018-10-29"。意思很明显,date获取当前日期。就算create_time带分秒也可以

数值处理函数

springboot mysql mybatis docker

sql聚集函数

springboot mysql mybatis docker

组合使用比如group by和having。orderby和having

sql语句顺序

springboot mysql mybatis docker

连接表两种写法的区别

select from t_banner b LEFT JOIN t_app_manage a on b.app_id = a.app_id

select from t_banner,t_app_manage where t_banner.app_id = t_app_manage.app_id

第二种的写法和inner join没有区别 首选inner join

union

可用UNION操作符来组合数条SQL查询。利用UNION,可给出多条SELECT语句,将它们的结果组合成单个结果集。

insert

insert into user(name, age) values("hcb00",11);

更新表

alter table t_single_poke_order add is_vip tinyint(4) comment '是否为测试数据 0否 1是';增加列

删除表

drop table t_race_order

重命名表

rename table user to userr

为查看当前设置

可使用SHOW VARIABLES;和SHOW STATUS;

显示所有活动进程

使用SHOW PROCESSLIST (以及它们的线程ID和执行时间)

0

精彩评论

暂无评论...
验证码 换一张
取 消