2017年4月26日工作日记

来源:互联网 发布:淘宝客服幽默催拍话术 编辑:程序博客网 时间:2024/05/21 06:18
  1. 用mysqldump来备份线上数据库
    需求:备份全部表结构,备份部分表数据;
    语句:
    bin/mysqldump -udbproxy -pdbproxy xlw>xlw.sql
    复制xlw这个数据库到xlw.sql文件
    bin/mysql -udbproxy -pdbproxy test_xlw < xlw.sql
    把xlw.sql文件还原到test_xlw数据库
    以上是操作是颠覆式备份和复原,也就是说如果原来test_xlw数据库中的数据会被清空后,再导入xlw数据库。这是因为,生成的xlw.sql文件中,在导入xlw数据库的a表之前,默认DROP TABLE IF EXISTS a; 可以通过–skip-add-drop-table取消drop语句
    bin/mysqldump -udbproxy -pdbproxy xlw --skip-add-drop-table a>xlw.sql
    但是这个语句单纯的去掉了drop语句,在重建数据库时,如果a表已经存在,会报错导致失败。如果想增量的重建数据库,还要通过其他途径。

    bin/mysqldump -udbproxy -pdbproxy -d xlw >xlw.sql 只导出表结构,不导出数据。
    bin/mysqldump -udbproxy -pdbproxy xlw a b c>xlwb.sql 把xlw数据库的a表,b表,c表导出数据到xlwb.sql

最后写了个脚本,定期备份。于是可以每次将备份数据放在指定文件夹中。

lastday=$(date -d last-day +%Y%m%d)mkdir $lastdayecho $lastdaypath="$PWD"echo $pathbin/mysqldump -udbproxy -pdbproxy -d xlw >$path/$lastday/xlw.sqlbin/mysqldump -udbproxy -pdbproxy xlw a b c>$path/$lastday/xlw1.sql

有关mysqldump的参考链接http://www.cnblogs.com/qq78292959/p/3637135.html
https://jingyan.baidu.com/article/948f5924259516d80ef5f95e.html

2.mybatis部分
mybatis可以分为以下几个部分
a. xxMapper.xml文件,用标记语言来表示sql,每个标签的id对应xxMapper.java文件中的函数名。理论上,此xml文件要加入到mybatis的conf文件中

<mappers>                <!-- 注册orderMapper.xml文件,         xxxMapper.xml位于me.gacl.mapping这个包下,所以resource写成me/gacl/mapping/xxxMapper.xml-->        <mapper resource="me/gacl/mapping/xxxMapper.xml"/></mappers>

但是用了generator插件后,无需再conf文件中声明了。
b. dao层的XXMapper.Java,定义了一些对数据库的基本操作,比如增删改查。
c. pojo.entity层生成了XXEntity.java和XXEntityExample.java文件,XXEntity.java顾名思义是根据数据库的表结构创立的数据结构,包含了表的各个字段;mentor说XXEntityExample.java文件主要是和查询语句的where条件有关,比如order by,distinct等等。
综上,我的理解是,dao层的Mapper.java文件是最上层,收到由用户拼接的pojo层的两个文件后,传递给dao.mapper层的xml文件具体去数据库操作。
今天在操作时候遇到一个坑,要操作某个数据库,但是该数据库有一个字段叫做“public”,也就是说和java的保留字冲突,用jetty起程序的时候报错绑定失败。处理方式是在用来生成以上三个文件的xml文件中

<table schema="a" tableName="a" domainObjectName="aEntity"            enableCountByExample="true" enableUpdateByExample="true"            enableDeleteByExample="true" enableSelectByExample="true"            selectByExampleQueryId="true">            <generatedKey column="id" sqlStatement="JDBC"/>            <columnOverride column="public" property="ispublic" />                  </table>

这样,将冲突的字段重命名,解决了问题。

0 0