文章插图
文章插图
文章插图
文章插图
typeAliases
类型别名是为 Java 类型设置一个短的名字 。它只和 XML 配置有关,存在的意义仅在于用来减少类完全限定名的冗余 。
直接指定类名
例如:
alias="UserMapper" type="com.lonelyWolf.mybatis.mapper.UserMapper"/>
这样配置的话在MyBatis的xml文件中可以直接使用UserMapper代替其类的全限定名 。
只指定包名
也可以指定一个包名,MyBatis会在包名下面搜索需要的 Java Bean,比如:
"com.lonelyWolf.mybatis.mapper"/>
这么配置的话每一个在指定包名中的Java类,如果没有使用注解指定名称,则会默认使用Bean的首字母小写的非限定类名来作为它的别名,如果有注解,则优先使用注解指定的别名 。如:
@Alias("lonely_wolf")
public class LonelyWolf{
这里因为注解指定了别名,所以会以注解为准,如果没有注解,则默认使用lonelyWolf作为别名 。
系统默认提供的别名
实际开发中,有很多返回类型是数据基本类型或者String,Map,List等非常常见的类型,这些类型MyBatis已经为我们提供好了别名,我们就不需要另外再定义了 。以下就时MyBatis中默认提供的别名:
文章插图
文章插图
PS:这些别名的字母都是不区分大小写的,因为MyBatis在注册别名的时候会全部转为小写字母存储
typeHandlers
typeHandlers主要是用来实现Java对象和数据库字段类型额转换关系 。无论是 MyBatis 在预处理语句(PreparedStatement)中设置一个参数时,还是从结果集中取出一个值时,都会用类型处理器将获取的值以合适的方式转换成 Java 类型 。配置方式如下:
"xxx.xxx.xxx">
"xxx.xxx"/>
MyBatis默认提供的Java Bean和数据库字段类型映射关系如下:
文章插图
文章插图
自定义typeHandlers
上面是MyBatis提供的默认映射类型,可以处理大部分需求,如果我们需要有不同的需求,则可以自己定义类型,具体如何定义,在后面的文章会单独分析,在这里不展开,感兴趣的可以关注我,留意后续文章 。
objectFactory
MyBatis 每次创建结果对象的新实例时,它都会使用一个对象工厂(ObjectFactory)实例来完成 。默认的对象工厂需要做的仅仅是实例化目标类,要么通过默认构造方法,要么在参数映射存在的时候通过参数构造方法来实例化 。如果想覆盖对象工厂的默认行为,则 可以通过创建自己的对象工厂来实现
plugins
MyBatis 允许你在已映射语句执行过程中的某一点进行拦截调用 。这里我们不详细讨论,后期会有单独文章介绍MyBatis插件
environments
MyBatis 可以配置成适应多种环境,这种机制有助于将 SQL 映射应用于多种数据库之中,例如:开发、测试和生产环境需要有不同的配置;或者共享相同 Schema 的多个生产数据库,想使用相同的 SQL 映射 。许多类似的用例 。注意:尽管可以配置多个环境,每个SqlSessionFactory实例只能选择其一 。所以,如果想连接两个数据库,就需要创建两个SqlSessionFactory实例,每个数据库对应一个 。配置示例如下:
"development">
"development">
type="JDBC">
"..." value=https://www.isolves.com/it/cxkf/kj/2022-11-24/"..."/>
type="POOLED">
"driver" value=https://www.isolves.com/it/cxkf/kj/2022-11-24/"${driver}"/>
"url" value=https://www.isolves.com/it/cxkf/kj/2022-11-24/"${url}"/>
"username" value=https://www.isolves.com/it/cxkf/kj/2022-11-24/"${username}"/>
"password" value=https://www.isolves.com/it/cxkf/kj/2022-11-24/"${password}"/>
environment配置关键点:
- 默认的环境 ID(比如:default=”development”)
推荐阅读
- 教你用A4纸种菜
- ASP.NET原创框架十-应用模块开发之页面生成
- HTTP 框架 Hertz 实践入门:性能测试指南
- MySql中json类型数据的查询以及在MyBatis-Plus中的使用
- 高压电线下打手机可能被电击吗?
- 一起来捉妖最全面的攻略 一起来捉妖攻略
- 四大发明家都发明了什么 而有史以来,最全面的发明家之一
- 对于 Display 框架,我需要了解 KMS api 吗?| Linux 驱动
- 装了.Net 7.0后,工程框架用 net6 的 dotnet watch 出错临时解决方案
- python爬虫之Scrapy框架,基本介绍使用以及用框架下载图片案例