MyBatis学习总结

  mybatis中文官网 http://www.mybatis.org/mybatis-3/zh/configuration.html#mappers

1resultType(属性)和resultMap(标签引用)的区别?

  resultType和resultMap都是用来对jdbcResultSets给实体类做属性名和列名做关系映射的,

  一、resultType主要用于简单实体类,比如Integer,Long和一些自定义的JavaBean,在使用resultType时,mybatis也会隐式的创建一个resultMap来对应返回类型

  二、ResultMap 的设计思想是,对于简单的语句根本不需要配置显式的结果映射,而对于复杂一点的语句只需要描述它们的关系就行了,

  在复杂对象或者列名与字段名不匹配的时候我们可以使用resultMap来做结果映射。

  两者的主要区别,在我的理解上,resultType主要用来对简单对象做映射的处理,resultMap是对复杂对象做映射处理。

 

2collectionassociation的区别?

  collection主要用于对象关系上的一对多,

  association主要用于对象关系上的一对一。

  举个例子,像人与身份证,订单与买家,都是一对一,都可以用association。

  而一个订单中的多个商品,则可以用collection.

 

  • association – 一个复杂类型的关联;许多结果将包装成这种类型
    • 嵌套结果映射 – 关联本身可以是一个 resultMap 元素,或者从别处引用一个
  • collection – 一个复杂类型的集合
    • 嵌套结果映射 – 集合本身可以是一个 resultMap 元素,或者从别处引用一个

 

3StatementPreparedStatement的区别?

  preparedStatement继承于statement。

  preparedStatement执行语句时会进行一次预编译,将sql语句储存下来,而statement是每次执行时都队sql语句编译一次,对于单次来说,statement的执行效率更高,但是对于多次类似语句的执行,preparedStatement效率更高

  preparedStatement可以预防sql注入,它使用?当作占位符,对于相似的sql语句它会存储下来,下次执行只需要修改参数,对于不符合参数类型的参数不能执行,可以有效的预防类似'or 1=1 ',';drop table'等sql注入操作。 

  对于动态sql拼接一般采用preparedStatement来执行,可以有效的减少类似sql语句执行的时间。

  

  

 

转载于:https://www.cnblogs.com/jingjimanbu/p/10808281.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值