mybatis学习
Posted 敲出一个世界
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis学习相关的知识,希望对你有一定的参考价值。
1.全局配置文件相关
1)properties元素来引入其他properties的内容,url属性用来引入网络或者磁盘路径下的资源;resource属性用来引入类路径下的资源
2)settings元素用来配置很多重要的设置学习
3)typeAliases元素为java类型命名别名,方面xml中填写,子元素<typeAlias type=""/>为指定类型取别名,默认类名开头小写;<package name=""/>子元素,通过指定包的方式,为包下类型批量取别名(别名不区分大小写);当用package批量取别名发生别名冲突的时候(包下的子包下有和包下相同名字的类型),可以用个对其中一个加上@Alias("别名");的方式来指定别名(mybatis中以及有对常见java类型的 别名了)
4)typeHandlers类型处理器,每一中java类型到数据库类型的映射是由每一种类型处理器来完成的
5)environments元素用于配置多个环境(比如开发环境和正式环境;mysql环境和oracle环境等),其属性default的值表示使用哪个环境信息。每一个environment子元素表示一种环境,且environment子元素中必须包含transactionManager和dataSource元素;事务管理器默认有2中jdbc和manager,也可以自定义,实现TransactionFactory接口即可;数据源默认有3中POOLED,UNPOOLED,JNDI,也可以自定义数据源,实现DataSourceFactory接口
6)databaseIdProvider元素(<databaseIdProvider type="DB_VENDOR">)用于提供移植性的支持。在这个元素下配置对应数据库产品的别名,然后在需要跨平台的sql配置中通过databaseId属性指定对应的别名
7)mappers元素用于将sql配置文件注册得到全局配置文件中,resource属性注册类路径下的配置文件,url配置网络上的,class注册接口(但是要求配置文件和接口在同一个目录下,且配置文件的名字和接口的名字相同;如果sql通过注解配置上去,那么只需要填写接口的全限定名)(重要的复杂的sql通过配置文件映射,不太重要不多变的sql可以通过注解的方式映射)
以上标签的配置顺序是由要求的,不然会报错
2.sql映射文件相关
1)sql语句结束不要写分号;parameterType可以省略,传入的值直接用#{属性名}即可,session要手动提交事务,数据才能持久化到数据库中
2)mybatis允许增删改直接定义一下类型:Integer(int),Long(long)(这俩个表示操作影响的行数),Boolen(影响行大于0就返回true),void ;如果定义的返回值是这种情况,则不用再对应sql上添加resultType属性
3)mybatis支持获取自增主键的值,比如插入数据后获取插入数据的主键值,通过在insert元素上添加userGeneratorKeys="true"以及keyProperty=“java ban 存放主键的字段名” 即可
4)mybatis对非自增主键的支持(比如uuid以及oracle的序列)是通过在sql映射元素添加<selectKey keyProperty="java bean 的id 属性名" order="BEFORE" resultType="string"></selectKey>。其中order属性表示该配置项中的sql是在insert语句之前还是之后执行的。
5)mybatis对传参的处理
a。传递单个参数:mybatis不做特殊处理 :#{随便命名}获得参数值
b。传递多个方法:mybatis将多个参数封装多个map对象,而map的key是规定死的为参数的索引(0开始)或者param1,param2....paramn;
为了取值更佳方便,可以在参数前面加上@param("参数别名")的方式为map的key命名,这样取值就直接通过 #{对应参数别名}获得
以上是关于mybatis学习的主要内容,如果未能解决你的问题,请参考以下文章