发表于: 2017-12-15 23:30:52

1 610


今天完成的事情:(一定要写非常细致的内容,比如说学会了盒子模型,了解了Margin) 

1.XML映射文件

  • cache ————  给定命名空间的缓存配置
  • cache-ref ———其他命名空间缓存配置的引用
  • resultMap ———是最复杂也是最强大的元素,用来描述如何从数据库结果集中来加载对象
  • sql——————  可被其他语句引用的可重用语句块
  • insert—————  映射插入语句
  • update————   映射更新语句
  • delete————— 映射删除语句
  • select————— 映射查询语句
1)Select Attributes
  • id:在命名空间中唯一的标识符,可以被用来引用这条语句
  • parameterType:将会传入这条语句的参数类的完全限定名或别名。这个属性是可选的,因为Mybatis可以通过TypeHandler推断出具体传入语句的参数,默认值为unset
  • resultType:从这条语句中返回的期望类型的类的完全限定名或别名。注意如果是集合情形,那应该是集合可以包含的类型,而不能是集合本身。使用resultType或resultMap,但不能同时使用。
  • resultMap:外部resultMap的命名引用。
  • flushCache:将其设置为true,任何时候只要语句被调用,都会导致本地缓存和二级缓存都会被清空,默认值:false
  • useCache:将其设置为true,将会导致本条语句的结果被二级缓存,默认值:对select元素为true
  • timeout:这个设置是在抛出异常之前,驱动程序等待数据库返回请求结果的秒数。默认值为unset(依赖驱动)
  • fetchSize:这是尝试影响驱动程序每次批量返回的结果行数和这个设置值相等。默认值为unset(依赖驱动)
  • statementType:STATEMENT,PREPARED或CALLABLE的一个。这会让Mybatis分别使用Statement,PreparedStatement或CallableStatement,默认值为PREPARED。
  • resultSetType:FORWARD_ONLY,SCROLL_SENSITIVE或SCROLL_INSENSITIVE中的一个,默认值为unset(依赖注入)
  • databaseId:如果配置了databaseIdProvider,Mybatis会加载所有不带databaseId或匹配当前databaseId的语句;如果带或者不带的语句都有,则不带的会被被忽略。
  • resultOrdered:这个设置仅针对嵌套结果select语句使用:如果为true,就是假设包含了嵌套结果集或者分组了,这样的话,当返回一个主结果行的时候,就不会发生有对前面结果集引用的情况。这就使得在获取嵌套的结果集的时候不至于导致内存不够用。默认值:false
  • ResultSets:这个设置仅对多结果集的情况适用,它将列出语句执行后返回的结果集并每个结果集给一个名称,名称是逗号分隔的。
2)Insert,Update,Delete’s Attributes
  • id:在命名空间中唯一的标识符,可以被用来代表这条语句
  • parameterType:将要传入语句的参数的完全限定名或别名。这个属性是可选的,因为Mybatis可以通过TypeHandler推断出具体传入语句的参数,默认值为unset
  • flushCache:将其设置为true,任何时候只要语句被调用,都会导致本地缓存和二级缓存都会被清空,默认值:true(对应插入、更新和删除语句)
  • timeout:这个设置是在抛出异常之前,驱动程序等待数据库返回请求结果的秒数。默认值为unset(依赖驱动)
  • statementType:STATEMENT,PREPARED或CALLABLE的一个。这会让Mybatis分别使用Statement,PreparedStatement或CallableStatement,默认值为PREPARED。
  • useGeneratedKeys:(仅对insert和update有用)这会令Mybatis使用JDBC的getGeneratedKeys方法来取出由数据库内部生成的注解(比如:像MySQL 和SQL Server 这样的关系数据库管理系统的自增字段),默认值:false
  • keyProperty:(仅对insert和update有用)唯一标记一个属性,MyBatis会通过getGeneratedKeys的返回值或者通过insert语句的selectKey子元素设置它的键值,默认:unset。如果希望得到多个生成的列,也可以是逗号分隔的属性名称列表。
  • keyColumn:(仅对insert和update有用)通过生成的键值设置表中的列名,这个设置仅在某些数据库(像PostgreSOL)是必须的,当主键列不是表中的第一列的时候需要设置。如果希望得到多个生成的列,也可以是逗号分隔的属性名称列表。
  • databaseId:如果配置了databaseIdProvider,Mybatis会加载所有的不带databaseId或匹配当前databaseId的语句;如果带或者不带的语句都有,则不带的会被忽略。
3)selectKey Attributes
  • keyProperty:selectKey语句结果应该被设置的目标属性。如果希望得到多个生成的列,也可以是逗号分隔的属性名称列表。
  • keyColumn:匹配属性的返回结果集的列名称。如果希望得到多个生成的列,也可以是逗号分隔的属性名称列表。
  • resultType:结果的类型。Mybatis通常可以推算出来,但是为了更加确定写上也不会有什么问题。Mybatis允许任何简单类型用作主键的类型,包括字符串。如果希望作用于多个生成的列,则可以使用一个包含期望属性的Object或一个Map
  • order:这个可以被设置为BEFORE或AFTER。如果设置为BEFORE,那么它会首先选择主键,设置keyProperty然后执行插入语句。如果设置为AFTER,那么先执行插入语句,然后是selectKey元素—这和Oracle的数据库相似,在插入语句内部可能有嵌入索引调用
  • statementType:与前面相同,Mybatis支持STATEMENT,PREPARED和CALLABLE语句的映射类型,分别代表Statement,PreparedStatement和CallableStatement类型
4)Result Maps
一个很常见的应用,精确匹配属性别名。
  • constructor——类在实例化时,用来注入结果到构造方法中
                idArg——ID参数;标记结果作为ID可以帮助提高整体效能
                arg——注入到构造方法的一个普通结果
  • id——一个ID结果;标记结果作为ID可以帮助提高整体效能
  • result——注入到字段或JavaBean属性的普通结果
  • association——一个复杂的类型关联;许多结果将包成这种类型
  • 嵌入结果映射——结果映射自身的关联,或者参考一个
  • collection——复杂类型的集
  • 嵌入结果映射——结果映射自身的集,或者参考一个
  • discriminator——使用结果值来决定使用哪个结果映射
  • case——基于某些值的结果映射
  • 嵌入结果映射——这种情形结果也映射它本身,因此可以包含很多相同的元素,或者它们可以参照一个外部的结果映射
5)ResultMap Attributes
  • id:当前命名空间的一个唯一标识,用于标识一个result map
  • type:累的权限定名,或者一个类型别名
  • autoMapping:如果设置这个属性,Mybatis将会为这个ResultMap开启或者关闭自动映射。这个属性会覆盖全局的属性autoMappingBehavior。默认值为: unset
6)Id and Result Attributes
  • property——映射到列结果的字段或属性。如果匹配的是存在的,和给定名称相同的JavaBeans的属性,那么就会使用。否则Mybatis将会寻找给定名称property的字段。
  • column——从数据库中得到列名,或者是列名的重命名标签。这也是通常和会传递给resultSet.getString(columnName)方法参数中相同的字符串。
  • javaType——一个Java类的完全限定名,或一个类型别名。如果你映射到一个JavaBean,MyBatis通常可以断定类型。 然而,如果你映射到的是HashMap,那么你应该明确地指定 javaType来保证所需的行为。
  • jdbcType——在这个表格之后的所支持的JDBC类型列表中的类型。JDBC类型是仅仅需要对插入,更新和删除操作可能为空的列进行处理。这是JDBC jdbcType的需要,而不是 MyBatis 的。如果你直接使用 JDBC 编程,你需要指定这个类型-但仅仅对可能为空的值。
  • typeHandler——我们在前面讨论过默认的类型处理器。使用这个属性,你可以覆盖默 认的类型处理器。这个属性值是类的完全限定名或者是一个类型处理 器的实现,或者是类型别名。

明天计划的事情:(一定要写非常细致的内容)

看看JDBC和template,听说复盘可能会用到

 
遇到的问题:(遇到什么困难,怎么解决的)

看不太懂,先看着。

 
收获:(通过今天的学习,学到了什么知识)

resultMap就是我们经常在有别名的时候使用的,这也是它的最佳运用场所。

不过别名还可以在SQL语句中通过As来设置,总的来说,,无论数据库还是mybatis我们接触的知识一个小部分,要不还没入门,要不就是最合适的东西,搞通原理,还是任重道远,不说了反正多加学习。

项目呢,现在感觉就是一个字:难。做起来有了束缚,每个方面都要考虑,就不怎么好解决了。先提前预习预习吧,只能这样。。。。。。



返回列表 返回列表
评论

    分享到