mybatis核心配置文件

  1. 在resource目录下,创建mybatis-config.xml(官方建议起名方式)

  2. 核心配置文件常用元素

    • properties: 通过resource属性从外部指定属性文件(db.properties),该属性文件描述数据库连接的相关配置(数据库驱动、连接数据库的url、数据库用户名、数据库密码),位置也是在/resources目录下
    • settings: 设置MyBatis运行中的一些行为,比如此处设置MyBatis的log日志实现为LOG4J,即使用log4j实现日志功能;cacheEnabled,lazyLoadingEnabled
    • environments: 配置MyBatis的多套运行环境,将SQL映射到多个不同的数据库上,该元素节点不可以配置多个environments子元素节点,但是必须指定其中一个默认运行环境(通过default指定),其子节点environment中配置运行环境ID、事务管理、数据源配置等相关信息,事务管理器除了JDBC还有其他,数据源也有多种
    • mappers: 告诉MyBatis去哪里找到SQL映射文件(开发者定义的映射SQL语句),整个项目中可以有1个或多个SQL映射文件。
    • typeAliases: 为Java类型命名一个别名(简称)
  3. 简单测试

    *properties:通过该标签来读取Java配置信息,数据源信息写在db.properties文件中,可以通过properties标签来加载该文件

    <!--db.properties-->
    
    driver=com.mysql.jdbc.Driver
    url=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
    username=root
    password=123456
    
    <!--在mybatis-config.xml中引入标签-->
    <!--若在xml文件中与properties文件中设置了相同的属性,则properties文件中优先级更高-->
    <configuration>
    	<!-- 通过properties标签,读取java配置文件的内容 -->
    	<properties resource="db.properties" />
    	<!-- 配置mybatis的环境信息 -->
    	<environments default="development">
    		<environment id="development">
    			<!-- 配置JDBC事务控制,由mybatis进行管理 -->
    			<transactionManager type="JDBC"></transactionManager>
    			<!-- 配置数据源,采用dbcp连接池 -->
    			<dataSource type="POOLED">
    				<property name="driver" value="${driver}" />
    				<property name="url" value="${url}" />
    				<property name="username" value="${username}" />
    				<property name="password" value="${password}" />
    			</dataSource>
    		</environment>
    	</environments>
    </configuration>
    
    • settings:用于设置和改变MyBatis运行中的行为
    设置项 作用 默认值
    cacheEnabled 该配置影响的所有映射器中配置的缓存的全局开关 true
    lazyLoadingEnabled 全局性设置懒加载。false则所有相关联的都会被初始化加载 true
    mapUnderscoreToCamelCase 是否开启自动驼峰命名规则(camel case)映射。即从经典数据库列名A_COLUMN到经典Java属性名aColumn的类似映射 false
    logImpl 指定 MyBatis 所用日志的具体实现,未指定时将自动查找。 未设置

    对于日志的实现:

    <!--设置日志,标准的日志实现-->
    <settings>
        <setting name="logImpl" value="STDOUT_LOGGING"/>
    </settings>
    
    <!--设置日志,log4j,要导入依赖且有相应的配置-->
    <settings>
        <setting name="logImpl" value="LOG4J"/>
    </settings>
    
    * environments(环境):MyBatis可以配置成适应多种环境,这种机制有助于将SQL映射应用于多种数据库之中
    
      在MyBatis中有两种类型的事务管理器(type=“[JDBC|MANAGED]”)
        * JDBC:直接使用了JDBC的提交和回滚设置,它依赖于从数据源得到的连接来管理事务范围
        * MANAGED:几乎没做什么,它从来不提交或回滚一个连接,而是让容器来管理事务的整个生命周期(比如:JEE应用服务器的上下文ServeltContext)
      dataSource元素使用标准的JDBC数据源接口来配置JDBC连接对象的资源:有三种内建的数据源类型(也就是type=“[UNPOOLED|POOLED|JNDI]”)
    
    * mappers(加载映射文件):告诉MyBatis去哪里找到这些SQL语句
    
    方式一:类资源路径<mapper resource=“”/>
    ```xml
    <mapper resource="com/test/mapper/UserMapper.xml"/>
    

    方式二:全限定路径

    <mapper url="/mybatis/com/test/mapper/UserMapper.xml" />
    

    方式三:mapper接口的全限定类名

    <mapper class="com.test.mapper.UserMapper"/>
    

    此方式要求Mapper接口Mapper映射文件名称相同且在同一个目录下

    方式四:载指定包下的所有映射文件

    <package name="com.test.mapper"/>
    
    • typeAliases(别名):类型别名是为Java类型设置一个短的名字。它只和XML配置有关,存在的意义仅在于用来减少类完全限定名的冗余。

    给实体类取别名,方便在mapper配置文件中使用,如果一个项目中有多个POJO的时候,需要一一配置:

    <typeAliases>
    	<typeAlias alias="user" type="com.test.pojo.User" />
    </typeAliases>
    

    通过package的name属性直接指定包名:MyBatis会自动扫描指定包下的JavaBean,并默认设置一个别名,默认名称为JavaBean的非限定类名(首字母小写User --> user)

    <typeAliases>
    	<package name="com.test.pojo" />
    </typeAliases>
    
    • Mybatis已经为许多常见的Java类型内建了相应的类型别名。
posted @ 2024-05-10 17:08  Hanyta  阅读(53)  评论(0编辑  收藏  举报