lzf79 发表于 2019-2-20 06:58:46

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/ 下载)

   

org.mybatis.spring.boot
mybatis-spring-boot-starter
1.3.2
runtime            



mysql
mysql-connector-java
runtime

      

com.alibaba
druid
1.1.6

  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是非常好的定位慢查询的方法
https://s1.运维网.com/107
  小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 行数过多一定意味着满,并且有占满内存的可能
https://s1.运维网.com/images/blog/201902/15/f89f118ec0c68e7876ed80180a1bf841.jpg
简介:sql优化以及mybatis generator反向工程讲解
1) 能够用BETWEEN的就不要用IN
2) 能够用DISTINCT的就不用GROUP BY
3)避免数据类型强转
4) 学会采用explain查看执行计划



页: [1]
查看完整版本: springboot mysql mybatis docker