07-MyBatis 核心配置文件

MyBatis 核心配置文件

目录


 

关于这些配置文件,实际上我们只要写一份模板文件,以后都是可以参照的,特此记录。

以下操作全部是在 MyBatis 的核心配置文件中进行的。
可以查看 MyBats 文档:MyBatis 文档

properties 定义属性及读取属性文件

我们可以将数据库驱动,用户名,密码等信息放到单独的文件中,然后在配置文件中加载这个文件,这样有利于管理配置信息。

注:必须放在资源文件夹(resources)下,建立一个 db.properties ,在里面写入数据库配置信息。
在这里插入图片描述

jdbc.driver = com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8
jdbc.username=root
jdbc.password=1234

然后在配置文件 SqlMappingConfig.xml 中加载这个文件即可:

<!--定义属性及提取属性文件-->
<properties resource="db.properties"/>

接下来在数据库连接池中就可以动态获取 db.properties 中的属性了:

<!-- 数据库连接池 -->
<dataSource type="POOLED">
    <property name="driver" value="${jdbc.driver}" />
    <property name="url" value="${jdbc.url}" />
    <property name="username" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}" />
</dataSource>

settings 设置运行时行为

这是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。
所有属性可以去 MyBatis 官方文档查看:MyBatis 官方文档

简单举个示例:
在这里插入图片描述
设置如上属性,开启自动驼峰命名规则映射。

<settings>
    <!--开启自动驼峰命名规则映射-->
    <setting name="mapUnderscoreToCamelCase" value="true"/>
    <!--配置sql打印-->
    <setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>

然后 domain 类中的变量名就可以用驼峰命名法(与数据库不同)。
在这里插入图片描述

测试类:如果开启自动驼峰命名规则映射后,domain 类中必须驼峰命名法,否则将会无法查询到。

public void test(){
    SqlSession sqlSession = MybatisUtils.openSession();
    CustomerMapper mapper = sqlSession.getMapper(CustomerMapper.class);

    Customer customer = mapper.getCustomerWithID(2, "李白");
    System.out.println(customer);

    sqlSession.close();

}

运行结果:成功查询到结果并且封装成对象。

typeAliases 类型别名

typeAliases 可以为 Java 类型设置一个短的名字。

定义单个别名

下面我们为 com.itlike.domain.Customer 设置了别名,Customer,

<!--定义别名-->
<typeAliases>
    <!--单个别名定义-->
    <typeAlias alias="Customer" type="com.itlike.domain.Customer"></typeAlias>
</typeAliases>

则在映射文件中,resultType 不需要把整个包写上了,直接写别名 Customer 即可。

<!--根据id查询用户-->
<select id="getCustomerWithID" resultType="Customer">
    SELECT * FROM `customer` WHERE cust_id = #{id} AND cust_name = #{name}
</select>

批量定义别名

下面给 com.itlike.domain 这个包下的类设置了别名,别名就是类名。

<!--定义别名-->
<typeAliases>
    <!--批量定义别名,别名为类名-->
    <package name="com.itlike.domain"/>
</typeAliases>

注:如果在定义了别名的包下,还有多个子包,并且存在相同名称的类名。则与上面批量定义别名冲突了。解决方法: 利用 @Alias 注解给每个类定义新的名字。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

typeHandlers 类型处理器

无论是 MyBatis 在预处理语句(PreparedStatement)中设置一个参数时,还是从结果集中取出一个值时, 都会用类型处理器将获取的值以合适的方式转换成 Java 类型。
JDK1.8之后实现全部的JSR310规范,日期时间处理上,我们可以使用 MyBatis 基JSR310(Date and Time API)编写的各种日期时间类型处理器。

MyBatis3.4以前的版本需要我们手动注册这些处理器,以后的版本都是自动注册的

Plugins(后续有文章专门介绍这个)

插件是 MyBatis 提供的一个非常强大的机制,MyBatis 允许你在已映射语句执行过程中的某一点进行拦截调用。通过插件来修改 MyBatis 的一些核心行为。

Environments 运行环境

MyBatis 可以配置多种环境,比如开发、测试和生产环境需要有不同的配置。
每种环境使用一个 environmen t标签进行配置并指定唯一标识符。
可以通过 environments 标签中的 default 属性指定一个环境的标识符来快速的切换环境。
在这里插入图片描述
environment 中有两个子标签,transactionManager 事务管理、dataSource数据源。

实际开发中我们使用 Spring 管理数据源,并进行事务控制的配置来覆盖上述配置,不会使用 MyBatis 的environments 配置。 稍作了解即可。

databaseIDProvider 定义数据库厂商

MyBatis 可以根据不同的数据库厂商执行不同的语句。

<!--定义数据库厂商-->
<databaseIdProvider type="DB_VENDOR">
    <property name="MYSQL" value="mysql"/>
    <property name="DB2" value="db2"/>
    <property name="Oracle" value="oracle" />
    <property name="SQL Server" value="sqlserver"/>
</databaseIdProvider>

在映射文件中就可以指定厂商,只有当数据库与指定厂商匹配时,才会执行语句。

<!--根据id查询用户-->
<select id="getCustomerWithID" resultType="Customer" databaseId="mysql" >
    SELECT * FROM `customer` WHERE cust_id = #{id} AND cust_name = #{name}
</select>

mappers 加载映射文件

mapper resource=" "

使用相对于类路径的资源:

<mappers>
    <mapper resour ce="com/itlike/domain/Customer.xml"></mapper>
</mappers>

mapper class=" "

使用 mapper 接口类路径:此种方法要求 mapper 接口名称和 mapper 映射文件名称相同,且放在同一个目录中。

<mappers>
    <!--
    1. 名称必须得要和接口名称一致
    2. 必须得要和 mapper 接口在同一目录下
    -->
    <mapper class="com.itlike.mapper.CustomerMapper"></mapper>
</mappers>

在这里插入图片描述

package name=" "

加载指定包下的所有mapper接口。此种方法要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中。

<!--加载映射文件-->
<mappers>
    <!--
    1. 名称必须得要和接口名称一致
    2. 必须得要和 mapper 接口在同一目录下
    -->
    <package name="com.itlike.mapper"/>   
</mappers>

在这里插入图片描述

Spring和MyBatis是两个非常流行的Java开发框架,它们可以很好地结合使用。 首先,你需要在你的项目中引入Spring和MyBatis的相关依赖。 对于Spring,你可以使用Maven或者Gradle来管理依赖。在你的项目的pom.xml(或者build.gradle)文件中,添加以下依赖: ```xml <!-- Spring核心依赖 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.3.9</version> </dependency> <!-- Spring和MyBatis的集成依赖 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>2.0.7</version> </dependency> ``` 接下来,你需要配置Spring和MyBatis的相关配置文件。 首先是Spring的配置文件(比如applicationContext.xml),你可以在其中配置Spring的上下文和其他相关的Bean。 ```xml <!-- 配置Spring的上下文 --> <context:annotation-config/> <context:component-scan base-package="com.example"/> <!-- 配置数据源 --> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/mydatabase"/> <property name="username" value="root"/> <property name="password" value="password"/> </bean> <!-- 配置事务管理器 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> </bean> <!-- 配置MyBatis的SqlSessionFactory --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name="mapperLocations" value="classpath:mapper/*.xml"/> </bean> <!-- 扫描MyBatis的Mapper接口 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.example.mapper"/> </bean> ``` 在上面的配置中,你需要根据你的数据库设置正确的数据源和连接信息。 接下来是MyBatis配置文件(比如mybatis-config.xml),你可以在其中配置MyBatis的相关设置。 ```xml <configuration> <settings> <!-- 开启驼峰命名转换 --> <setting name="mapUnderscoreToCamelCase" value="true"/> </settings> </configuration> ``` 在上面的配置中,我们开启了MyBatis的驼峰命名转换,这样可以方便地将数据库中的下划线命名转换为Java中的驼峰命名。 最后,你需要创建Mapper接口和对应的Mapper XML文件来定义SQL语句和映射关系。 这样,你就完成了Spring和MyBatis的配置。在你的代码中,你可以使用Spring的依赖注入来获取MyBatis的Mapper接口,并使用它来进行数据库操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

军刀0923

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值