mybatis 全局配置文件

全局配置文件: 


配置文件中各种标签的顺序旭遵守下面蓝色部分,可以没有相应标签,但是顺序必须是这样 (了解):

  • xml引入dtd

dtd约束文件作用:规定xml中标签语法规则,为了" alt "+" / " 有提示.

<!DOCTYPE configuration
 PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

1)联网情况下可直接使用
2)未联网情况下:需绑定
第一步:导入mybatis.jar包中的dtd文件(无法直接复制粘贴,找到mybatis的路径,解压这dtd文件)。

第二部:配置 
Key:http://mybatis.org/dtd/mybatis-3-config.dtd

  • settings设置

  举例:获取数据库last_name字段属性

 根据mapUnderscoreToCamelCase规范,则lastName即可。

  • typeAliases别名处理器

作用:类型别名是为 Java 类型设置一个短的名字,可以方便我们引用某个类。

方法一:单个设置包下类的别名。
<typeAliases>
		<!-- 1、typeAlias:为某个java类型起别名
				type:指定要起别名的类型全类名;默认别名就是类名小写;employee
				alias:指定新的别名
		 -->
	<typeAlias type="com.atguigu.mybatis.bean.Employee" alias="emp"/> 		
</typeAliases>

方法二:类很多的情况下,可以批量设置别名这个包下的每一个类创建一个默认的别名,就是简单类名小写

<typeAliases>
    <package name="com.atguigu.mybatis.bean"/>
</typeAliases>

方法三:也可以使用@Alias注解为其指定一个别名

  • 数据库操作 

    • environments环境
MyBatis可以配置多种环境,比如开发、测试和生 产环境需要有不同的配置。  每种环境使用一个environment标签进行配置并指 定唯一标识符 ,可以通过environments标签中的default属性指定,一个环境的标识符来快速的切换环境。
  • environment-指定具体环境

id:指定当前环境的唯一标识 transactionManager、和dataSource都必须有

配置两个数据库:
dbconfig.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.username=root
jdbc.password=!wyl72229992

orcl.driver=oracle.jdbc.OracleDriver
orcl.url=jdbc:oracle:thin:@localhost:1521:orcl
orcl.username=scott
orcl.password=123456
	<environments default="dev_mysql">
		<environment id="dev_mysql">
			<transactionManager type="JDBC"></transactionManager>
			<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>
		</environment>
	
		<environment id="dev_oracle">
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<property name="driver" value="${orcl.driver}" />
				<property name="url" value="${orcl.url}" />
				<property name="username" value="${orcl.username}" />
				<property name="password" value="${orcl.password}" />
			</dataSource>
		</environment>
	</environments>
  • databaseIdProvider环境
MyBatis 可以根据不同的数据库厂商执行不同的语句。
Type: DB_VENDOR
使用MyBatis提供的 VendorDatabaseIdProvider 解析数据库
厂商标识。也可以实现DatabaseIdProvider接口来自定义。
Property-name :数据库厂商标识
Property-value :为标识
<databaseIdProvider type="DB_VENDOR">
	<!-- 为不同的数据库厂商起别名 -->
	<property name="MySQL" value="mysql"/>
	<property name="Oracle" value="oracle"/>
	<property name="SQL Server" value="sqlserver"/>
</databaseIdProvider>

案例:一条sql语句,跨厂商运行=厂商别名+environment配置数据库+dbconfig.properties

 	//为<environments default="dev_mysql">默认厂商
    <select id="getEmpById" resultType="com.atguigu.mybatis.bean.Employee">
		select * from tbl_employee where id = #{id}
	</select>
    
    //databaseId="mysql" 指定mysql厂商
	<select id="getEmpById" resultType="com.atguigu.mybatis.bean.Employee"
		databaseId="mysql">
		select * from tbl_employee where id = #{id}
	</select>
    
    //databaseId="oracle" 指定oracle厂商
	<select id="getEmpById" resultType="com.atguigu.mybatis.bean.Employee"
		databaseId="oracle">
		select EMPLOYEE_ID id,LAST_NAME	lastName,EMAIL email 
		from employees where EMPLOYEE_ID=#{id}
	</select>
  •  

 

mapper映射

  • 注册一个sql映射 

    resource:引用类路径下的sql映射文件 例如:mybatis/mapper/EmployeeMapper.xml
    url:引用网路路径或者磁盘路径下的sql映射文件 例如:file:///var/mappers/AuthorMapper.xml
    
    <mappers>
    	<mapper resource="mybatis/mapper/EmployeeMapper.xml"/>
    </mappers>
    
  • ​​​​​​​class:引用(注册)接口

 1、有sql映射文件,映射文件名必须和接口同名,并且放在与接口同一目录下;(此种可以直接用resource=" ")
*如果将接口和实现类全部放在一个包里面,会显得很乱,则有以下策略:

此时在程序运行时,src与conf都为源文件,其文件夹下的所有包统一在bin目录(类路径)下(无src目录和conf目录)。 

<mappers>
	<mapper class="com.atguigu.mybatis.dao.EmployeeMapper"/>
</mappers>

2、没有sql映射文件,所有的sql都是利用注解写在接口上;

public interface EmployeeMapperAnnotation {
	@Select("select * from tbl_employee where id=#{id}")
	public Employee getEmpById(Integer id);
}
<mappers>
	<mapper class="com.atguigu.mybatis.dao.EmployeeMapperAnnotation"/>
</mappers>

推荐:
比较重要的,复杂的Dao接口我们来写sql映射文件
不重要,简单的Dao接口为了开发快速可以使用注解;

  • 批量注册

    <mappers>
        <package name="com.atguigu.mybatis.dao"/>
    </mappers>

     

MyBatis全局配置文件中的数据库连接参数从XML配置转移到外部properties文件,可以提高代码的组织性和可维护性。以下是具体步骤: 1. **创建properties文件**: - 创建一个新的 `.properties` 文件,例如 `db.properties` 或者 `mybatis-config.properties`,用于存放数据库连接信息,如数据库地址、用户名、密码等。 ```properties db.url=jdbc:mysql://localhost:3306/testdb db.username=root db.password=your_password ``` 2. **修改MyBatis XML配置文件**: - 找到MyBatis的`mybatis-config.xml` 或者 `applicationContext-mybatis.xml` 这样的全局配置文件。 - 删除原有的数据库连接配置部分,如 `<dataSource>` 标签下的配置。 3. **读取外部Properties**: - 使用Spring Boot的`@PropertySource` 注解或者直接在MyBatisXML配置中引入外部属性文件,如果是Spring应用,通常会在`applicationContext.xml` 中操作。 ```xml <!-- Spring Boot 使用 --> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>classpath:db.properties</value> </list> </property> </bean> <!-- MyBatis 自行处理 --> <configuration> <settings> <setting name="lazyLoadingEnabled" value="true"/> <setting name="cacheEnabled" value="false"/> <setting name="multipleResultSetsEnabled" value="true"/> <setting name="useColumnLabel" value="true"/> <!-- 使用PropertyResourceConfigurer动态加载属性 --> <propertyResourceConfigurer class="org.apache.ibatis.session.SqlSessionFactoryBean$SqlSessionFactoryConfigResourceWrapper"> <property name="location" value="classpath:db.properties"/> </propertyResourceConfigurer> </settings> </configuration> ``` 4. **验证配置**: - 配置完成后,重启应用程序(如果是在Spring Boot项目),并检查日志是否能成功读取到数据库连接信息。 5. **安全考虑**: - 如果在生产环境中,不要在`db.properties` 文件中明文存储敏感信息,应使用环境变量或加密的方式存储。 记得在实际操作中替换示例中的URL、用户名和密码等具体值,并确保应用程序能够正确识别和解析你的`db.properties` 文件路径。如果你使用的是Spring Boot,则还需要确认是否有合适的依赖支持`@PropertySource`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值