发表于: 2018-02-07 23:36:45
1 606
今天完成的事情:
1.mybatis加载配置的两种方式(http://www.jb51.net/article/130382.htm):
· 在spring的配置文件中配置:使用sqlSessionFactory 的 mapperLocations 进行加载,此种方法可以使用通配符, 可以指定位置, 可以使用多个位置;使用MapperScannerConfigurer进行扫描,此种方法可以扫描指定包下的接口, 如果需要扫描配置文件, 则配置文件须与对应的DAO接口处于同一目录, 且名字必须相同;
· 在 mybatis 的配置文件中配置 <mappers>节点:配置 mybatis 的 mapper,在其中<!-- 既可写映射文件, 也可写对应的接口 -->。前两种都是在spring的配置文件中配置的, 在 mybatis 的配置文件中配置 <mappers>节点。
2.数据库高并发,数据库的完整性约束。事务性质(ACID)原子性(atomicity)、一致性(consistency)、隔离性(isolation)、持久性(durability)。(http://www.runoob.com/mysql/mysql-transaction.html)
原子性:整个事务的所有操作视为一体,只要有一个失败,所有已经执行的操作撤销,数据库的状态回滚到执行事务前的状态。
一致性:一致性与原子性密切相关。事务必须使得数据库从一个一致性状态到另一个一致性状态。事务在开始前和结束后,数据库的完整性约束不被破坏。
隔离性:将事务内部的操作和数据,通过锁与其他并发执行的事务隔离开,使得不互相干扰。
持久性:事务一旦提交,则对数据库的更改是永久性。
事务的实现:隔离性通过锁来实现。原子性,一致性,持久性通过数据库的redo和undo实现。
3.并发控制。在处理并发读写的时候,可以通过实现一个由两种类型的锁组成锁系统来解决问题。这两种锁就是读锁(共享锁)和写锁(排他锁)。
明天的计划:
尝试用JDBCTemplate连接数据库。
遇到的问题:
在用main方法模拟操作时,经过循环插入、查询、删除、插入,最后一步清理表格一直执行不了。在配置好日志管理文件后,通过对比日志输出,发现最后一步的“Parameters: ”似乎是在等待输入。但是测试单元中却不需要输入。所以不是Parameters没有输入值的问题。师兄检查后是因为没有sqlSession.close();,所以事务没有结束。而清理工作要确保所有对于表的操作都要结束后才能执行,所以命令会一直处于等待的过程。
收获:
1.配置日志环境,体会不同日志错误等级的输出差别。
2.try catch finally中return的执行规则。
3.main方法模拟一套操作(循环插入10000条数据,查找,插入,删除,清空表格)。
评论