iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >MyBatis别名和settings设置方式是什么
  • 432
分享到

MyBatis别名和settings设置方式是什么

2023-06-20 16:06:34 432人浏览 薄情痞子
摘要

这篇文章主要介绍“mybatis别名和settings设置方式是什么”,在日常操作中,相信很多人在MyBatis别名和settings设置方式是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MyBatis

这篇文章主要介绍“mybatis别名和settings设置方式是什么”,在日常操作中,相信很多人在MyBatis别名和settings设置方式是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MyBatis别名和settings设置方式是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

MyBatis别名和settings设置

别名(typeAliases)是一个指代的名称,在类的限定名过长时可以指定别名来简化使用,MyBatis里分为系统定义别名和自定义别名两种,系统定义别名是不需要我们再去指定的,通过TypeAliasReGIStry类注册。

MyBatis中别名不区分大小写,一个typeAliases的实例是在解析配置文件时生成的,然后长期保存在Configuration对象中。

接下来配置别名:

1、在MyBatis spring配置文件中引入配置

指定configLocation属性,即可在对应的xml文件中进行配置,如下所示:

<!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 -->    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">        <property name="dataSource" ref="dataSource"/>        <!-- 自动扫描mapping.xml文件 -->        <property name="mapperLocations" value="classpath:com.fc.mapper/*-sqlmap.xml"/>        <!-- 配置 -->        <property name="configLocation" value="classpath:sqlmap-alias.xml"/>    </bean>

2、sqlmap-alias.xml中的配置:

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"        "Http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration>    <!-- 开启驼峰规则与下划线间的映射关系 -->    <settings>        <setting name="mapUnderscoreToCamelCase" value="true"/>    </settings>     <!-- 别名 -->    <typeAliases>        <typeAlias alias="USER" type="com.fc.bean.User" />    </typeAliases> </configuration>

在<typeAliases>标签下即可指定对应bean的别名,多个类的别名添加多个<typeAlias>标签即可。

<settings>是MyBatis最复杂的配置也是最重要的配置之一,不过不配置也可以正常工作,因为MyBatis已经提供了默认的配置,

如需要进行设置的自定义改动可以在配置中添加<settings>标签,如上例所示(注意configuration中的设置是有序的,如上述的settings和typeAliases标签交换顺序,会有错误提示)

具体的属性可以参考Configuration类,在配置文件中可以通过<setting>标签更改默认属性值,mapUnderscoreToCamelCase是

开启camel case(自动驼峰命名规则)映射,使用示例:

<select id="queryUser" parameterType="java.util.Map" resultType="USER">        SELECT          id,          real_name,          sex sex,          age age,          login_name,          login_passWord,          create_time,          update_time        from temp_user        <trim prefix="where" prefixOverrides="and">            <if test="realName != null and realName != '' ">                and real_name = #{realName}            </if>            <if test="loginName != null and loginName != '' ">                and login_name = #{loginName}            </if>        </trim>    </select>

3、相对完整的setting设置和说明如下:

<!-- settings设置 -->    <settings>        <!-- 映射器缓存全局开关,默认true -->        <setting name="cacheEnabled" value="true"/>        <!-- 延迟加载的全局开关,默认false -->        <setting name="lazyLoadingEnabled" value="false"/>        <!-- 是带有延迟加载属性的对象完整加载,默认true -->        <setting name="aggressiveLazyLoading" value="true"/>        <!-- 是否允许单一语句返回多结果集,默认true -->        <setting name="multipleResultSetsEnabled" value="true"/>        <!-- 列标签代替列名,默认true -->        <setting name="useColumnLabel" value="true"/>        <!-- 允许jdbc支持自动生成主键,默认false -->        <setting name="useGeneratedKeys" value="false"/>        <!-- 指定 MyBatis 应如何自动映射列到字段或属性。            NONE 表示取消自动映射;PARTIAL 只会自动映射没有定义嵌套结果集映射的结果集。            FULL 会自动映射任意复杂的结果集(无论是否嵌套) -->        <setting name="autoMappingBehavior" value="PARTIAL"/>        <!-- 指定发现自动映射目标未知列的行为,默认NONE -->        <setting name="autoMappingUnknownColumnBehavior" value="NONE"/>        <!-- 指定默认执行器,SIMPLE/REUSE/BATCH -->        <setting name="defaultExecutorType" value="SIMPLE"/>        <!-- 设置超时时间,默认不设置 -->        <setting name="defaultStatementTimeout" value="3000"/>        <!-- 为驱动的结果集获取数量(fetchSize)设置一个提示值,默认不设置 -->        <setting name="defaultFetchSize" value="1000"/>        <!-- 嵌套语句中采用分页,默认false表示开启 -->        <setting name="safeRowBoundsEnabled" value="false"/>        <!-- 驼峰规则,默认false -->        <setting name="mapUnderscoreToCamelCase" value="false"/>        <!-- 会话开启本地缓存查询机制,其它值STATEMENT用于语句执行上 -->        <setting name="localCacheScope" value="SESSION"/>        <!-- 没有为参数指定jdbc类型时,为空值指定jdbc类型 -->        <setting name="jdbcTypeForNull" value="OTHER"/>        <!-- 指定对象的方法触发一次延迟加载 -->        <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>        <!-- 指定动态SQL生成的默认语言 -->        <setting name="defaultScriptingLanguage" value="org.apache.ibatis.scripting.xmltags.XMLLanguageDriver"/>        <!-- 指定当结果集中值为null的时候是否调用映射对象的setter(map 对象时为 put) -->        <setting name="callSettersOnNulls" value="false"/>        <!-- 指定mybatis增加到日志名称的前缀,默认不设置 -->        <setting name="logPrefix" value="xxx_"/>        <!-- 指定Mybatis创建具有延迟加载能力的对象所用到的代理工具,3.3或以上JAVASSIST -->        <setting name="proxyFactory" value="CGLIB"/>    </settings>

MyBatis setting的用法和解释

setting 用法

<!-- settings是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。 -->      <settings>          <!-- 该配置影响的所有映射器中配置的缓存的全局开关。默认值true -->        <setting name="cacheEnabled" value="true"/>        <!--延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。 特定关联关系中可通过设置fetchType属性来覆盖该项的开关状态。默认值false  -->        <setting name="lazyLoadingEnabled" value="true"/>          <!-- 是否允许单一语句返回多结果集(需要兼容驱动)。 默认值true -->        <setting name="multipleResultSetsEnabled" value="true"/>        <!-- 使用列标签代替列名。不同的驱动在这方面会有不同的表现, 具体可参考相关驱动文档或通过测试这两种不同的模式来观察所用驱动的结果。默认值true -->        <setting name="useColumnLabel" value="true"/>        <!-- 允许 JDBC 支持自动生成主键,需要驱动兼容。 如果设置为 true 则这个设置强制使用自动生成主键,尽管一些驱动不能兼容但仍可正常工作(比如 Derby)。 默认值false  -->        <setting name="useGeneratedKeys" value="false"/>       <!--  指定 MyBatis 应如何自动映射列到字段或属性。 NONE 表示取消自动映射;PARTIAL 只会自动映射没有定义嵌套结果集映射的结果集。 FULL 会自动映射任意复杂的结果集(无论是否嵌套)。 -->        <!-- 默认值PARTIAL -->        <setting name="autoMappingBehavior" value="PARTIAL"/>        <setting name="autoMappingUnknownColumnBehavior" value="WARNING"/>       <!--  配置默认的执行器。SIMPLE 就是普通的执行器;REUSE 执行器会重用预处理语句(prepared statements); BATCH 执行器将重用语句并执行批量更新。默认SIMPLE  -->        <setting name="defaultExecutorType" value="SIMPLE"/>        <!-- 设置超时时间,它决定驱动等待数据库响应的秒数。 -->        <setting name="defaultStatementTimeout" value="25"/>        <setting name="defaultFetchSize" value="100"/>        <!-- 允许在嵌套语句中使用分页(RowBounds)默认值False -->        <setting name="safeRowBoundsEnabled" value="false"/>        <!-- 是否开启自动驼峰命名规则(camel case)映射,即从经典数据库列名 A_COLUMN 到经典 Java 属性名 aColumn 的类似映射。  默认false -->        <setting name="mapUnderscoreToCamelCase" value="false"/>        <!-- MyBatis 利用本地缓存机制(Local Cache)防止循环引用(circular references)和加速重复嵌套查询。               默认值为 SESSION,这种情况下会缓存一个会话中执行的所有查询。              若设置值为 STATEMENT,本地会话仅用在语句执行上,对相同 SqlSession 的不同调用将不会共享数据。  -->        <setting name="localCacheScope" value="SESSION"/>        <!-- 当没有为参数提供特定的 JDBC 类型时,为空值指定 JDBC 类型。 某些驱动需要指定列的 JDBC 类型,多数情况直接用一般类型即可,比如 NULL、VARCHAR 或 OTHER。  -->        <setting name="jdbcTypeForNull" value="OTHER"/>      <!--   指定哪个对象的方法触发一次延迟加载。  -->        <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>      </settings>

具体解释

  • 源自官方文档搬运,如有误请指正。谢谢!

  • 为了提高阅读性,所以分为了4个表格。

设置名描述有效默认值
cacheEnabled全局性地开启或关闭所有映射器配置文件中已配置的任何缓存。true / falsetrue
lazyLoadingEnabled延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。 特定关联关系中可通过设置 fetchType 属性来覆盖该项的开关状态。true / falsetrue
aggressiveLazyLoading开启时,任一方法的调用都会加载该对象的所有延迟加载属性。 否则,每个延迟加载属性会按需加载(参考 lazyLoadTriggerMethods)。true / falsefalse false (在 3.4.1 及之前的版本中默认为 true)
multipleResultSetsEnabled是否允许单个语句返回多结果集(需要数据库驱动支持)。true / falsetrue
useColumnLabel使用列标签代替列名。实际表现依赖于数据库驱动,具体可参考数据库驱动的相关文档,或通过对比测试来观察。true / falsetrue
useGeneratedKeys允许 JDBC 支持自动生成主键,需要数据库驱动支持。如果设置为 true,将强制使用自动生成主键。尽管一些数据库驱动不支持此特性,但仍可正常工作(如 Derby)。true / falsefalse
autoMappingBehavior指定 MyBatis 应如何自动映射列到字段或属性。 NONE 表示关闭自动映射;PARTIAL 只会自动映射没有定义嵌套结果映射的字段。 FULL 会自动映射任何复杂的结果集(无论是否嵌套)。NONE, PARTIAL, FULLPARTIAL
autoMappingUnknownColumnBehavior指定发现自动映射目标未知列(或未知属性类型)的行为。NONE: 不做任何反应。WARNING: 输出警告日志(‘org.apache.ibatis.session.AutoMappingUnknownColumnBehavior' 的日志等级必须设置为 WARN)。 FaiLING: 映射失败 (抛出 SqlSessionException)NONE, WARNING, FAILINGNONE
设置名描述有效默认值
defaultExecutorType配置默认的执行器。SIMPLE 就是普通的执行器;REUSE 执行器会重用预处理语句(PreparedStatement); BATCH 执行器不仅重用语句还会执行批量更新。SIMPLE REUSE BATCHSIMPLE
defaultStatementTimeout设置超时时间,它决定数据库驱动等待数据库响应的秒数。任意正整数未设置 (null)
defaultFetchSize为驱动的结果集获取数量(fetchSize)设置一个建议值。此参数只可以在查询设置中被覆盖。任意正整数未设置 (null)
defaultResultSetType指定语句默认的滚动策略。(新增于 3.5.2)FORWARD_ONLY / SCROLL_SENSITIVE / SCROLL_INSENSITIVE / DEFAULT(等同于未设置)未设置 (null)
safeRowBoundsEnabled是否允许在嵌套语句中使用分页(RowBounds)。如果允许使用则设置为 false。true / falseFalse
safeResultHandlerEnabled是否允许在嵌套语句中使用结果处理器(ResultHandler)。如果允许使用则设置为 false。true / falseTrue
mapUnderscoreToCamelCase是否开启驼峰命名自动映射,即从经典数据库列名 A_COLUMN 映射到经典 Java 属性名 aColumn。true / falsefalse
localCacheScopeMyBatis 利用本地缓存机制(Local Cache)防止循环引用和加速重复的嵌套查询。 默认值为 SESSION,会缓存一个会话中执行的所有查询。 若设置值为 STATEMENT,本地缓存将仅用于执行语句,对相同 SqlSession 的不同查询将不会进行缓存。SESSION /STATEMENTSESSION
jdbcTypeForNull当没有为参数指定特定的 JDBC 类型时,空值的默认 JDBC 类型。 某些数据库驱动需要指定列的 JDBC 类型,多数情况直接用一般类型即可,比如 NULL、VARCHAR 或 OTHER。JdbcType 常量,常用值:NULL、VARCHAR 或 OTHER。OTHER
设置名描述有效默认值
lazyLoadTriggerMethods指定对象的哪些方法触发一次延迟加载。用逗号分隔的方法列表equals,clone,hashCode,toString
defaultScriptingLanguage指定动态 SQL 生成使用的默认脚本语言。一个类型别名或全限定类名org.apache.ibatis.scripting.xmltags.XMLLanguageDriver
defaultEnumTypeHandler指定 Enum 使用的默认 TypeHandler 。(新增于 3.4.5)一个类型别名或全限定类名。org.apache.ibatis.type.EnumTypeHandler
设置名描述有效默认值
callSettersOnNulls指定当结果集中值为 null 的时候是否调用映射对象的 setter(map 对象时为 put)方法,这在依赖于 Map.keySet() 或 null 值进行初始化时比较有用。注意基本类型(int、boolean 等)是不能设置成 null 的。true / falsefalse
returnInstanceForEmptyRow当返回行的所有列都是空时,MyBatis默认返回 null。 当开启这个设置时,MyBatis会返回一个空实例。 请注意,它也适用于嵌套的结果集(如集合或关联)。(新增于 3.4.2)true / falsefalse
logPrefix指定 MyBatis 增加到日志名称的前缀。任何字符串未设置
logImpl指定 MyBatis 所用日志的具体实现,未指定时将自动查找。SLF4J /LOG4J/ LOG4J2/jdk_LOGGING/COMMONS_LOGGING /STDOUT_LOGGING/NO_LOGGING未设置
proxyFactory指定 Mybatis 创建可延迟加载对象所用到的代理工具。CGLIBJAVASSIST
vfsImpl指定 VFS 的实现自定义 VFS 的实现的类全限定名,以逗号分隔。未设置
useActualParamName允许使用方法签名中的名称作为语句参数名称。 为了使用该特性,你的项目必须采用 Java 8 编译,并且加上 -parameters 选项。(新增于 3.4.1)true / falsetrue
configurationFactory指定一个提供 Configuration 实例的类。 这个被返回的 Configuration 实例用来加载被反序列化对象的延迟加载属性值。 这个类必须包含一个签名为static Configuration getConfiguration() 的方法。(新增于 3.2.3)一个类型别名或完全限定类名。未设置
shrinkWhitespacesInSqlRemoves extra whitespace characters from the SQL. Note that this also affects literal strings in SQL. (Since 3.5.5)true / falsefalse

到此,关于“MyBatis别名和settings设置方式是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: MyBatis别名和settings设置方式是什么

本文链接: https://www.lsjlt.com/news/298021.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MyBatis别名和settings设置方式是什么
    这篇文章主要介绍“MyBatis别名和settings设置方式是什么”,在日常操作中,相信很多人在MyBatis别名和settings设置方式是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MyBatis...
    99+
    2023-06-20
  • MyBatis别名和settings设置方式
    MyBatis别名和settings设置 别名(typeAliases)是一个指代的名称,在类的限定名过长时可以指定别名来简化使用,MyBatis里分为系统定义别名和自定义别名两种,...
    99+
    2024-04-02
  • mybatis配置别名的方法是什么
    在MyBatis中,可以通过两种方式配置别名:1. 在mybatis-config.xml文件中配置别名:在标签中,可以通过子标签为...
    99+
    2023-09-21
    mybatis
  • MyBatis中基于别名typeAliases的设置方法
    本篇内容介绍了“MyBatis中基于别名typeAliases的设置方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!MyBatis 别名t...
    99+
    2023-06-20
  • mybatis驼峰命名配置的方法是什么
    MyBatis提供了两种方式来配置驼峰命名。1. 使用全局配置文件:在MyBatis的全局配置文件(通常是`mybatis-config.xml`)中,可以添加如下配置:```xml```这样配置之后,MyBatis会自动将数据库表的下...
    99+
    2023-08-09
    mybatis
  • Hibernate和MyBatis的区别是什么
    这篇文章给大家分享的是有关Hibernate和MyBatis的区别是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Hibernate 和 MyBatis 的区别相同点都是对j...
    99+
    2024-04-02
  • Mybatis中#和$的区别是什么
    这篇文章主要介绍“Mybatis中#和$的区别是什么”,在日常操作中,相信很多人在Mybatis中#和$的区别是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Mybatis中#和$的区别是什么”的疑惑有所...
    99+
    2023-06-22
  • mybatis和jdbc的区别是什么
    MyBatis 和 JDBC 都是用于在 Java 应用程序中访问数据库的工具,但它们之间有一些重要的区别: ORM 框架 vs...
    99+
    2024-03-07
    mybatis jdbc
  • vue@~相对路径路径别名设置方式
    目录@ ~ 相对路径 路径别名设置项目设置src相对路径为@第一步 创建vue.config.js文件第二步 添加代码@ ~ 相对路径 路径别名设置 ./这是相对路径的意思,同级目录...
    99+
    2024-04-02
  • MyBatis ofType和javaType的区别是什么
    这篇文章主要介绍了MyBatis ofType和javaType的区别是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇MyBatis ofType和javaType的区别是什么文章都会有...
    99+
    2023-06-29
  • Java timezone设置和mybatis连接数据库时区设置方式
    目录Java timezone设置和mybatis连接数据库时区设置JVM时区设置MybatisMybatis timezone问题解决方法Java timezone设置和mybat...
    99+
    2024-04-02
  • mysql外键设置方式是什么
    这篇文章给大家介绍mysql外键设置方式是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。外键的作用保持数据一致性,完整性,主要目的是控制存储在外键表中的数据。 使两张表形成关联,外键只能引用外表中的列的值!例如:a...
    99+
    2023-06-22
  • mybatis中resulttype和resultmap的区别是什么
    MyBatis中的resultType和resultMap都是用来映射查询结果的,但它们之间有一些区别: resultType:...
    99+
    2024-03-13
    mybatis
  • Mybatis中resultMap标签和sql标签的设置方式
    目录resultMap标签和sql标签的设置1、项目目录2、数据库中的表的信息3、配置文件的信息4、User类5、IUserDao接口6、MybatisTest7、运行结果resul...
    99+
    2024-04-02
  • Git配置用户签名的方式是什么
    本文小编为大家详细介绍“Git配置用户签名的方式是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“Git配置用户签名的方式是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1、为什么要创建用户签名作为版本控...
    99+
    2023-06-30
  • 过期com域名的处置方式是什么
    今天就跟大家聊聊有关过期com域名的处置方式是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。com是大家最熟悉、也是目前注册数量最多的域名,对于企业而言这是一个重要的无形资产,一...
    99+
    2023-06-06
  • MyBatis Plus主键设置策略是什么
    这篇文章主要介绍了MyBatis Plus主键设置策略是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇MyBatis Plus主键设置策略是什么文章都会有所收获,下面我们一起来看看吧。根...
    99+
    2023-07-02
  • mybatis mapper配置的方法是什么
    MyBatis的Mapper配置方法包括以下两种方式:1. XML配置文件:在XML配置文件中定义Mapper接口与SQL语句的映射...
    99+
    2023-09-29
    mybatis
  • mybatis动态替换表名的方法是什么
    MyBatis提供了动态替换表名的方法,可以使用动态SQL来实现。下面是使用动态SQL替换表名的步骤:1. 在Mapper XML文...
    99+
    2023-09-29
    mybatis
  • mybatis-plus配置oracle的方法是什么
    要配置MyBatis-Plus来使用Oracle数据库,可以按照以下步骤进行操作: 1、首先,在pom.xml文件中添加Oracle...
    99+
    2024-03-07
    mybatis-plus oracle
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作