发表于: 2017-12-15 23:30:52
1 610
今天完成的事情:(一定要写非常细致的内容,比如说学会了盒子模型,了解了Margin)
1.XML映射文件
- cache ———— 给定命名空间的缓存配置
- cache-ref ———其他命名空间缓存配置的引用
- resultMap ———是最复杂也是最强大的元素,用来描述如何从数据库结果集中来加载对象
- sql—————— 可被其他语句引用的可重用语句块
- insert————— 映射插入语句
- update———— 映射更新语句
- delete————— 映射删除语句
- select————— 映射查询语句
- 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:这个设置仅对多结果集的情况适用,它将列出语句执行后返回的结果集并每个结果集给一个名称,名称是逗号分隔的。
- 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的语句;如果带或者不带的语句都有,则不带的会被忽略。
- keyProperty:selectKey语句结果应该被设置的目标属性。如果希望得到多个生成的列,也可以是逗号分隔的属性名称列表。
- keyColumn:匹配属性的返回结果集的列名称。如果希望得到多个生成的列,也可以是逗号分隔的属性名称列表。
- resultType:结果的类型。Mybatis通常可以推算出来,但是为了更加确定写上也不会有什么问题。Mybatis允许任何简单类型用作主键的类型,包括字符串。如果希望作用于多个生成的列,则可以使用一个包含期望属性的Object或一个Map
- order:这个可以被设置为BEFORE或AFTER。如果设置为BEFORE,那么它会首先选择主键,设置keyProperty然后执行插入语句。如果设置为AFTER,那么先执行插入语句,然后是selectKey元素—这和Oracle的数据库相似,在插入语句内部可能有嵌入索引调用
- statementType:与前面相同,Mybatis支持STATEMENT,PREPARED和CALLABLE语句的映射类型,分别代表Statement,PreparedStatement和CallableStatement类型
一个很常见的应用,精确匹配属性别名。
- constructor——类在实例化时,用来注入结果到构造方法中
arg——注入到构造方法的一个普通结果
- id——一个ID结果;标记结果作为ID可以帮助提高整体效能
- result——注入到字段或JavaBean属性的普通结果
- association——一个复杂的类型关联;许多结果将包成这种类型
- 嵌入结果映射——结果映射自身的关联,或者参考一个
- collection——复杂类型的集
- 嵌入结果映射——结果映射自身的集,或者参考一个
- discriminator——使用结果值来决定使用哪个结果映射
- case——基于某些值的结果映射
- 嵌入结果映射——这种情形结果也映射它本身,因此可以包含很多相同的元素,或者它们可以参照一个外部的结果映射
- id:当前命名空间的一个唯一标识,用于标识一个result map
- type:累的权限定名,或者一个类型别名
- autoMapping:如果设置这个属性,Mybatis将会为这个ResultMap开启或者关闭自动映射。这个属性会覆盖全局的属性autoMappingBehavior。默认值为: unset
- 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我们接触的知识一个小部分,要不还没入门,要不就是最合适的东西,搞通原理,还是任重道远,不说了反正多加学习。
项目呢,现在感觉就是一个字:难。做起来有了束缚,每个方面都要考虑,就不怎么好解决了。先提前预习预习吧,只能这样。。。。。。
评论