`

MyBatis使用笔记

 
阅读更多
--------------------------------------------------------------------
异常经验
运行时报异常
Check syntax #{property|(expression), var1=value1, var2=value2


原因是mapper的xml文件可能有拼写错误,如{}打错为(),修改正确即没问题

--------------------------------------------------------------------
MyBatis配置XML文件的层次结构
<?xml version="1.0" encoding="utf-8"?>
<configuration> <!--配置-->
    <properties/><!--属性配置--> 
    <settings/><!--设置--> 
    <typeAliases/><!--类型命名--> 
    <typeHandlers/><!--类型处理器--> 
    <objectFactory/><!--对象工厂--> 
    <plugins/><!--插件--> 
    <environments><!--配置环境--> 
        <environment><!--环境变量-->
             <transactionManager/><!--事务管理器-->
             <dataSource/><!--数据源配置-->
        </environment>
    </environments>
    <databaseIdProvider/><!--数据库厂商标识--> 
    <mappers/><!--映射器--> 
</configuration>


properties属性配置
properties是一个配置属性的元素,可能在配置文件上下文中使用,有3种配置方式:
[list]
  • property子元素
  • <property name="driver" value="com.mysql.jdbc.Driver"/>

    可以在其他地方以这样的方式引用driver:
    <property name="driver" value="${driver}"/>

  • properties配置文件
  • 新建一个properties配置文件
    #数据库配置文件
    driver=com.mysql.jdbc.Driver
    url=jdbc:mysql://localhost:3306/mybatis
    username=test
    password=123

    引用配置文件:
    <properties resource="jdbc.properties"/>
  • 程序参数传递
  • 一般通过
    Resources.getResourceAsStream("mybatis-config.xml")
    的方式读入配置文件流数据,然后通过Properties类实现配置文件的载入(load方法)和属性设置(setProperty/getProperty方法),然后通过SqlSessionFactoryBuilder().build()方法将配置文件载入并生成SqlSessionFactory
    这一般用于需要将配置文件中的密码加解密的环节
    [/list]
    在实际编码中,应当避免混用以上3种方式,如果出现混用,MyBatis会按照以下优先级处理:
    • 读取作为程序参数传递的属性,优先级最高
    • 读取properties的resource定义的属性文件,优先级次高
    • 读取property属性的值,优先级最低

    优先级高的会覆盖优先级低的属性值首选应当使用properties文件方式,同时应当尽量将配置文件放在一个文件中,便于管理和维护

    settings设置
    • settings最为复杂,但也是最重要的配置,可以不配置。
    • cacheEnabled:影响所有mapper中配置的缓存全局开关,默认true
    • lazyLoadingEnabled:延迟加载全局开关。特定关联关系中可通过设置fetchType属性覆盖该项的开关状态。默认false
    • aggressiveLazyLoading:true时,对任意属性的调用都会使带有延迟加载属性的对象完整加载;false时每种属性都按需加载。默认true
    • multipleResultSetsEnabled:是否允许单一语句返回多结果集(需要数据库驱动兼容)。默认false
    • useColumnLabel:使用列标签代替列名。不同驱动可能有不同表现。默认true
    • useGeneratedKeys:允许JDBC支持自动生成主键,但需要数据库驱动兼容。设置为true,强制使用自动生成主键,某些数据库驱动如Derby可能不支持,但仍可正常工作。默认false
    • autoMappingBehavior:指定MyBatis如何自动映射列到字段或属性,NONE表示取消自动映射、PARTIAL表示只会自动映射没有定义嵌套结果集映射的结果集、FULL表示会自动映射任意复杂的结果集。默认PARTIAL
    • defaultExecutorType:配置默认的执行器。SIMPLE为普通的执行器、REUSE会重用预处理语句Prepared statements、BATCH将重用语句并执行批量更新。默认SIMPLE
    • defaultStatementTimeout:设置超时时间。应当为正整数。没有设置时使用数据库驱动默认的时间。默认为Not Set(null)
    • safeRowBoundsEnabled:允许在嵌套语句中使用分页。默认为false
    • mapUnderscoreToCamelCase:是否开启驼峰命名规则映射,从数据库经典列名A_COLUMN到JAVA经典命名aColumn映射。默认false
    • localCacheScope:利用本地缓存防止循环引用和加速重复嵌套查询。SESSION表示缓存一个会话中执行的所有查询,STATEMENT表示本地会话仅用于语句执行,对相同的SqlSession的不同调用将不会共享数据缓存。默认值SESSION。
    • jdbcTypeForNull:没有为参数指定JDBC类型,使用空值指定。一般使用NULL、VARCHAR或OTHER。默认值OTHER
    • lazyLoadTriggerMethods:指定触发一次延迟加载的对象方法。默认值为一个方法列表,通过逗号分隔,equals,clone,hashCode,toString
    • defaultScriptingLanguage:指定动态SQL生成的默认语言。配置类的别名或全限定名。默认为org.apache.ibatis.scripting.xmltas.XMLDynamicLanguageDriver
    • callSetterOnNulls:指定当结果集中值为NULL的时候是否调用映射对象的setter方法(map对象为put方法),对于有Map.keySet()依赖或null值的初始化时有用。基本类型不能设置为null。默认false
    • logPrefix:MyBatis增加到日志的前缀。可以设置任意字符串。默认没有设置。
    • logImpl:指定MyBatis的日志的具体实现。可以是SLF4J/LOG4J/LOG4J2/JDK_LOGGING/COMMONS_LOGGING/STDOUT_LOGGING/NO_LOGGING。默认没有设置。
    • proxyFactory:指定MyBatis创建具有延迟加载能力的对象使用的代理工具。可以使用CGLIB或JAVASSIST。默认在3.3.0或以上使用JAVASSIS,其他使用CGLIG。


    --------------------------------------------------------------------
    分享到:
    评论

    相关推荐

      《MyBatis 基础笔记》源代码

      本笔记源代码涵盖了MyBatis的基本使用、配置、映射器接口、XML配置文件、注解方式的映射以及动态SQL等内容。 1. **MyBatis 概述**: MyBatis 是一个轻量级的持久层框架,它避免了几乎所有的JDBC代码和手动设置参数...

      传播智客-mybatis课堂笔记(2天)

      总的来说,“传播智客-mybatis课堂笔记(2天)”涵盖了MyBatis的基础到进阶知识,对于学习者来说是一份宝贵的参考资料,有助于快速提升MyBatis的使用技能。通过这份笔记,学员可以系统地学习MyBatis的各个方面,并在...

      MyBatis学习笔记1

      总之,"MyBatis学习笔记1"是一份关于MyBatis框架基础和进阶使用的教程,通过学习,读者可以掌握MyBatis的基本使用方法,理解其核心机制,并能进行源码级别的探索,提升数据库操作的效率和灵活性。配合"mybatis_test...

      Mybatis.md学习笔记

      mybatis学习笔记 mybatis学习笔记 mybatis学习笔记 mybatis学习笔记 mybatis学习笔记 mybatis学习笔记

      MyBatis学习笔记.zip

      在"MyBatis学习笔记.zip"这个压缩包中,包含了四天的学习内容,分别以"MyBatis_day1"、"MyBatis_day2"、"MyBatis_day3"和"MyBatis_day4"命名,这些笔记可能详细阐述了MyBatis的核心概念和使用方法。让我们逐一解析...

      Mybatis学习笔记(狂神).md

      Mybatis学习笔记(狂神).md

      SpringMVC-MyBatis学习笔记

      SpringMVC-MyBatis学习笔记

      传智播客mybatis笔记

      在深入探讨MyBatis之前,我们先来看看使用原始JDBC编程时可能会遇到的一些问题: 1. **数据库连接的创建与释放**:在传统JDBC编程中,数据库连接的创建与释放是非常频繁的操作,这会导致大量的系统资源消耗,进而...

      Mybatis的笔记pdf

      使用 Mybatis 的主要原因在于它可以极大地简化传统的 JDBC 编程,通过 XML 或注解的方式,将 Java 类和数据库表之间的映射关系定义清楚,从而减少了手动设置参数和获取结果集的工作。Mybatis 支持动态 SQL,允许在 ...

      mybatis学习笔记

      MyBatis 是一款深受开发者喜爱的持久层框架,它允许开发者使用 SQL 语句来操作数据库,同时提供了强大的映射机制,将 SQL 与 Java 代码分离,简化了开发过程。这篇“mybatis 学习笔记”将带你深入理解 MyBatis 的...

      springmvc+mybatis 云笔记

      【SpringMVC与MyBatis整合详解...通过SpringMVC和MyBatis的整合,我们可以构建出一个高效、稳定且易于维护的云笔记应用。在实际开发中,还需要关注性能优化、用户体验设计、错误处理等方面,以打造高质量的云服务产品。

      mybatis笔记.zip

      MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC ...通过阅读这份“mybatis笔记”,你可以更深入地了解如何使用 MyBatis 进行数据访问,提升你的开发效率。

      尚硅谷Mybatis Plus笔记+源码

      尚硅谷的Mybatis Plus笔记和源码资源,对于学习和理解这个框架的内部实现以及如何在项目中有效使用它,是非常宝贵的资料。 1. **Mybatis Plus概述** Mybatis Plus是对Mybatis的增强工具,它在Mybatis的基础上做了...

      MyBatis学习笔记

      个人学习myBatis持久层框架时记录的MyBatis学习笔记,供参考

      Mybatis学习笔记整合架构

      Mybatis通过xml或注解的方式将要执行的各种statement(statement、preparedStatemnt、CallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将...

      Mybatis学习笔记+学习源码.zip

      通过阅读这份笔记和研究提供的源码,你将能够更好地掌握Mybatis的使用技巧,并能够在实际开发中游刃有余。此外,源码部分可能包括了示例项目,你可以运行并调试,以直观地看到Mybatis的各种功能在实际代码中的应用。...

      mybatis学习笔记.md

      个人mybatis学习笔记,是个人学习后记录所得,记录内容仅供参考,如如果有什么不对的地方,欢迎指正。

      马士兵 mybatis学习笔记

      11. **Spring与MyBatis整合**:在实际开发中,MyBatis常与Spring框架结合使用,通过Spring的Dependency Injection(DI)和Transaction Management(TM)功能,简化MyBatis的使用和事务管理。 12. **MyBatis Plus**...

    Global site tag (gtag.js) - Google Analytics