mapper
硬编码:就是将数据直接写入到代码中进行编译开发,比如在没有mybatits前,将sql语句写入到jdbc代码里,在比如纯jsp开发的过程中,将前端的html代码与java代码耦合,这都是硬编码,如果要发生更改的问题,就需要更改源代码,如果是C/S开发,就直接一位这,客户端的软件需要重新下载安装,非常不合理。
软编码:则是将数据与源代码解耦,比如mybatis的配置文件,将sql于底层代码分离,就只对外暴露SQL语句供程序员编写。还比如使用mvc的设计模式,将纯jsp开发过程中的前端html代码和后端代码耦合的情况分离成view和controller模块,做到了解耦,也就实现了软编码,更加合理。
之前我们写的Mybatis代码是基本使用方式,【它存在硬编码的问题,例如执行sql:sqlSession.selectList("test.selectAll");,传递的字符串参数是映射配置文件中的 namespace.id值,这样写不便于后期的维护。如果使用 Mapper 代理方式则不存在硬编码问题,简化后期执行SQL。
resultmap,resulttype
官方文档说明:
ResultType: 期望从这条语句中返回结果的类全限定名或别名。 注意,如果返回的是集合,那应该设置为集合包含的类型,而不是集合本身的类型。 resultType 和 resultMap 之间只能同时使用一个。
ResultMap: 对外部 resultMap 的命名引用。结果映射是 MyBatis 最强大的特性,如果你对其理解透彻,许多复杂的映射问题都能迎刃而解。
白话文说明:ResultMap和ResultType都是用于设置mybatis增删改查后返回的数据类型。那么什么时候用ResultMap,什么时候用ResultType呢?
如果你搜索只是返回一个值,比如说String ,或者是int,那你直接用resultType就行了。
该SQL返回的是int型,那么ResultType定义成int型即可直接与Java进行绑定(基本数据类型默认可不写)。
但是你如果是返回一个复杂的对象,就可以使用ResultMap(当然ResultType也是可以的)。