mybatis-210717-02---全局配置文件

mybatis-210717-02—全局配置文件


properties_引入外部配置文件

mybatis中xml中properties配置:
	https://mybatis.org/mybatis-3/zh/configuration.html#properties

mybatis-config.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>

	<!-- 
		1. mybatis可以使用properties引入外部properties配置文件內容
			resource=""		引入类路径下的资源
			url=""			引入网络路径或者磁盘路径下的资源
	-->
	<properties resource="dbconfig.properties"></properties>

	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC" />
			<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>
	</environments>

	<!-- 将我们写好的sql映射文件(EmployeeMapper.xml)注册到全局配置文件(mybatis-config.xml)中 -->
	<mappers>
		<mapper resource="EmployeeMapper.xml" />
	</mappers>
</configuration>

dbconfig.properties

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis_test_210716_01?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone = GMT
jdbc.username=root
jdbc.password=admin


settings_运行时行为设置

mybatis中xml中settings配置:
	https://mybatis.org/mybatis-3/zh/configuration.html#settings

mybatis-config.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>

	<!-- 
		1. mybatis可以使用properties引入外部properties配置文件內容
			resource=""		引入类路径下的资源
			url=""			引入网络路径或者磁盘路径下的资源
	-->
	<properties resource="dbconfig.properties"></properties>
	
	<!--
		 settings包含很多重要的设置项
		 	setting用来设置每一个设置项
		 		name:设置项名
		 		value:设置项取值
	-->
	<settings>
		<setting name="mapUnderscoreToCamelCase" value="true"></setting>
	</settings>

	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC" />
			<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>
	</environments>

	<!-- 将我们写好的sql映射文件(EmployeeMapper.xml)注册到全局配置文件(mybatis-config.xml)中 -->
	<mappers>
		<mapper resource="EmployeeMapper.xml" />
	</mappers>
</configuration>

EmployeeMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
	
  <!--
	<settings>
		<setting name="mapUnderscoreToCamelCase" value="true"></setting>
	</settings>
    这个配置不需要起别名。
  -->
  <select id="getEmpById" resultType="com.bgy.bean.Employee">
    select 
    	id,last_name,gender,email
    from 
    	tbl_employee 
    where 
    	id = #{id}
  </select>
</mapper>


typeAliases_别名

mybatis中xml中typeAliases配置:
	https://mybatis.org/mybatis-3/zh/configuration.html#typeAliases

mybatis-config.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>

	<!-- 
		1. mybatis可以使用properties引入外部properties配置文件內容
			resource=""		引入类路径下的资源
			url=""			引入网络路径或者磁盘路径下的资源
	-->
	<properties resource="dbconfig.properties"></properties>
    
    <!-- ====================================================================================== -->
	
	<!--
		 2. settings包含很多重要的设置项
		 	setting用来设置每一个设置项
		 		name:设置项名
		 		value:设置项取值
	-->
	<settings>
		<setting name="mapUnderscoreToCamelCase" value="true"></setting>
	</settings>
	
	<!-- ====================================================================================== -->
    
	<!--
		3. typeAliases:别名处理器,可以为我们的java类型起别名 
		   别名不区分大小写
	-->
	<typeAliases>
		<!--
			方法1.
				type:指定要起的别名的类型全类名,默认别名就是类名小写,employee
				alias:指定新的别名
		-->
		<typeAlias type="com.bgy.bean.Employee" alias="employee"/>
		
		<!--
			方法2.
				package:为某个包下的所有类批量起别名
				name:指定包名(为当前包以及下面所有的后代包的每一个类都起一个默认别名【类名小写】)
		-->
		<package name="com.bgy.bean"/>
		
		<!-- 
			方法3.
				批量起别名的情况下,如果类名重复,使用@Alias注解为某个类型执指定新的别名 
		-->
	</typeAliases>

	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC" />
			<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>
	</environments>

	<!-- 将我们写好的sql映射文件(EmployeeMapper.xml)注册到全局配置文件(mybatis-config.xml)中 -->
	<mappers>
		<mapper resource="EmployeeMapper.xml" />
	</mappers>
</configuration>

Employee.java

package com.bgy.bean;

import org.apache.ibatis.type.Alias;

/*
 	批量起别名的情况下,使用@Alias注解为某个类型执指定新的别名,叫emp
 	如果bean包下有子包,子包也叫Employee,那就要使用注解起别名了
 */
@Alias(value = "emp")
public class Employee {
	
	private Integer id;
	private String lastName;
	private String email;
	private String gender;
	
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getLastName() {
		return lastName;
	}
	public void setLastName(String lastName) {
		this.lastName = lastName;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getGender() {
		return gender;
	}
	public void setGender(String gender) {
		this.gender = gender;
	}
	@Override
	public String toString() {
		return "Employee [id=" + id + ", lastName=" + lastName + ", email=" + email + ", gender=" + gender + "]";
	}
}

EmployeeMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 
	namespace:名称空间;指定为接口的全类名
-->
<mapper namespace="com.bgy.dao.EmployeeMapper">
	<!-- 别名不区分大小写,可以写Employee,也可以写employee -->
	<!-- 批量起别名的情况下,使用@Alias注解为某个类型执指定新的别名,那就需要使用新的别名 -->
  <select id="getEmpById" resultType="emp">
    select 
    	id,last_name,gender,email
    from
    	tbl_employee 
    where 
    	id = #{id}
  </select>
</mapper>


typeHandlers_类型处理器

mybatis中xml中typeHandlers配置:
	https://mybatis.org/mybatis-3/zh/configuration.html#typeHandlers


environment_运行环境

mybatis中xml中environmen配置:
	https://mybatis.org/mybatis-3/zh/configuration.html#environments

mybatis-config.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>

	<!-- 
		1. mybatis可以使用properties引入外部properties配置文件內容
			resource=""		引入类路径下的资源
			url=""			引入网络路径或者磁盘路径下的资源
	-->
	<properties resource="dbconfig.properties"></properties>
    
    <!-- ====================================================================================== -->
	
	<!--
		 2. settings包含很多重要的设置项
		 	setting用来设置每一个设置项
		 		name:设置项名
		 		value:设置项取值
	-->
	<settings>
		<setting name="mapUnderscoreToCamelCase" value="true"></setting>
	</settings>
	
    <!-- ====================================================================================== -->
	
	<!--
		3. typeAliases:别名处理器,可以为我们的java类型起别名 
		   别名不区分大小写
	-->
	<typeAliases>
		<!--
			方法1.
				type:指定要起的别名的类型全类名,默认别名就是类名小写,employee
				alias:指定新的别名
		-->
		<typeAlias type="com.bgy.bean.Employee" alias="employee"/>
		
		<!--
			方法2.
				package:为某个包下的所有类批量起别名
				name:指定包名(为当前包以及下面所有的后代包的每一个类都起一个默认别名【类名小写】)
		-->
		<package name="com.bgy.bean"/>
		
		<!-- 
			方法3.
				批量起别名的情况下,如果类名重复,使用@Alias注解为某个类型执指定新的别名 
		-->
	</typeAliases>
    
    <!-- ====================================================================================== -->
	
	<!-- 
		environments:环境,mybatis可以配置多种环境;default指定使用某种环境
			environment:配置一个具体的环境信息;必须要一下两个标签;id代表当前环境的唯一标识
				transactionManager:事务管理器
					type:事务管理器的类型
						JDBC | MANAGED
						自定义事务管理器:实现TransactionFactory接口.type指定为全类名
				dataSource:数据源
					type:数据源类型
						UNPOOLED | POOLED | JNDI
						自定义数据源:实现DataSourceFactory接口,type是群类名
					
	-->
	<environments default="development">
	
		<environment id="test">
			<transactionManager type=""></transactionManager>
			<dataSource type=""></dataSource>
		</environment>
		
		<environment id="development">
			<transactionManager type="JDBC" />
			<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>
	</environments>

	<!-- 将我们写好的sql映射文件(EmployeeMapper.xml)注册到全局配置文件(mybatis-config.xml)中 -->
	<mappers>
		<mapper resource="EmployeeMapper.xml" />
	</mappers>
</configuration>


databaseIdProvider_多数据库支持

mybatis中xml中databaseIdProvider配置:
	https://mybatis.org/mybatis-3/zh/configuration.html#databaseIdProvider

mybatis-config.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>

	<!-- 
		1. mybatis可以使用properties引入外部properties配置文件內容
			resource=""		引入类路径下的资源
			url=""			引入网络路径或者磁盘路径下的资源
	-->
	<properties resource="dbconfig.properties"></properties>
    
    <!-- ====================================================================================== -->
	
	<!--
		 2. settings包含很多重要的设置项
		 	setting用来设置每一个设置项
		 		name:设置项名
		 		value:设置项取值
	-->
	<settings>
		<setting name="mapUnderscoreToCamelCase" value="true"></setting>
	</settings>
	
    <!-- ====================================================================================== -->
	
	<!--
		3. typeAliases:别名处理器,可以为我们的java类型起别名 
		   别名不区分大小写
	-->
	<typeAliases>
		<!--
			方法1.
				type:指定要起的别名的类型全类名,默认别名就是类名小写,employee
				alias:指定新的别名
		-->
		<typeAlias type="com.bgy.bean.Employee" alias="employee"/>
		
		<!--
			方法2.
				package:为某个包下的所有类批量起别名
				name:指定包名(为当前包以及下面所有的后代包的每一个类都起一个默认别名【类名小写】)
		-->
		<package name="com.bgy.bean"/>
		
		<!-- 
			方法3.
				批量起别名的情况下,如果类名重复,使用@Alias注解为某个类型执指定新的别名 
		-->
	</typeAliases>
    
    <!-- ====================================================================================== -->
	
	<!-- 
		environments:环境,mybatis可以配置多种环境;default指定使用某种环境
			environment:配置一个具体的环境信息;必须要一下两个标签;id代表当前环境的唯一标识
				transactionManager:事务管理器
					type:事务管理器的类型
						JDBC | MANAGED
						自定义事务管理器:实现TransactionFactory接口.type指定为全类名
				dataSource:数据源
					type:数据源类型
						UNPOOLED | POOLED | JNDI
						自定义数据源:实现DataSourceFactory接口,type是群类名
					
	-->
	<environments default="development">
	
		<environment id="test">
			<transactionManager type=""></transactionManager>
			<dataSource type=""></dataSource>
		</environment>
		
		<environment id="development">
			<transactionManager type="JDBC" />
			<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>
	</environments>
    
     <!-- ====================================================================================== -->
    <!--
		databaseIdProvider:支持多数据库厂商
			type="DB_VENDOR"
				作用就是得到数据库厂商的标识,mybatis就能根据数据库厂商标识来执行不同的sql
				MySQL | Oracle | SQL Server ....
	-->
	<databaseIdProvider type="DB_VENDOR">
		<!-- 为不同的数据厂商起别名 -->
		<property name="MySQL" value="mysql"/>
		<property name="Oracle" value="oracle"/>
		<property name="SQL Server" value="sqlserver"/>
	</databaseIdProvider>

	<!-- 将我们写好的sql映射文件(EmployeeMapper.xml)注册到全局配置文件(mybatis-config.xml)中 -->
	<mappers>
		<mapper resource="EmployeeMapper.xml" />
	</mappers>
</configuration>

EmployeeMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 
	namespace:名称空间;指定为接口的全类名
-->
<mapper namespace="com.bgy.dao.EmployeeMapper">

	<!--
		databaseId="mysql" 就是指定数据库,mybatis-config.xml中写的数据库别名
	-->
  <select id="getEmpById" resultType="emp" databaseId="mysql">
    select 
    	id,last_name,gender,email
    from
    	tbl_employee 
    where 
    	id = #{id}
  </select>
  <select id="getEmpById" resultType="emp" databaseId="oracle">
    select 
    	id,last_name,gender,email
    from
    	tbl_employee 
    where 
    	id = #{id}
  </select>
</mapper>


mappers_sql映射路径

mybatis中xml中mappers配置:
	https://mybatis.org/mybatis-3/zh/configuration.html#mappers

mybatis-config.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>

	<!-- 
		1. mybatis可以使用properties引入外部properties配置文件內容
			resource=""		引入类路径下的资源
			url=""			引入网络路径或者磁盘路径下的资源
	-->
	<properties resource="dbconfig.properties"></properties>
    
    <!-- ====================================================================================== -->
	
	<!--
		 2. settings包含很多重要的设置项
		 	setting用来设置每一个设置项
		 		name:设置项名
		 		value:设置项取值
	-->
	<settings>
		<setting name="mapUnderscoreToCamelCase" value="true"></setting>
	</settings>
	
    <!-- ====================================================================================== -->
	
	<!--
		3. typeAliases:别名处理器,可以为我们的java类型起别名 
		   别名不区分大小写
	-->
	<typeAliases>
		<!--
			方法1.
				type:指定要起的别名的类型全类名,默认别名就是类名小写,employee
				alias:指定新的别名
		-->
		<typeAlias type="com.bgy.bean.Employee" alias="employee"/>
		
		<!--
			方法2.
				package:为某个包下的所有类批量起别名
				name:指定包名(为当前包以及下面所有的后代包的每一个类都起一个默认别名【类名小写】)
		-->
		<package name="com.bgy.bean"/>
		
		<!-- 
			方法3.
				批量起别名的情况下,如果类名重复,使用@Alias注解为某个类型执指定新的别名 
		-->
	</typeAliases>
    
    <!-- ====================================================================================== -->
	
	<!-- 
		environments:环境,mybatis可以配置多种环境;default指定使用某种环境
			environment:配置一个具体的环境信息;必须要一下两个标签;id代表当前环境的唯一标识
				transactionManager:事务管理器
					type:事务管理器的类型
						JDBC | MANAGED
						自定义事务管理器:实现TransactionFactory接口.type指定为全类名
				dataSource:数据源
					type:数据源类型
						UNPOOLED | POOLED | JNDI
						自定义数据源:实现DataSourceFactory接口,type是群类名
					
	-->
	<environments default="development">
	
		<environment id="test">
			<transactionManager type=""></transactionManager>
			<dataSource type=""></dataSource>
		</environment>
		
		<environment id="development">
			<transactionManager type="JDBC" />
			<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>
	</environments>
    
     <!-- ====================================================================================== -->
    <!--
		databaseIdProvider:支持多数据库厂商
			type="DB_VENDOR"
				作用就是得到数据库厂商的标识,mybatis就能根据数据库厂商标识来执行不同的sql
				MySQL | Oracle | SQL Server ....
	-->
	<databaseIdProvider type="DB_VENDOR">
		<!-- 为不同的数据厂商起别名 -->
		<property name="MySQL" value="mysql"/>
		<property name="Oracle" value="oracle"/>
		<property name="SQL Server" value="sqlserver"/>
	</databaseIdProvider>
    
    <!-- ====================================================================================== -->

	<!-- 
		将我们写好的sql映射文件(EmployeeMapper.xml)注册到全局配置文件(mybatis-config.xml)中	
	-->
	<mappers>
		<!--
			mapper:注册一个sql映射
				注册配置文件:
					resource:引用类路径下的sql映射文件
					url:引用网络路径或者磁盘路径下的sql映射文件
						file:///var/mappers/AuthorMapper.xml
				注册接口:
					class:引用(注册)接口
						方法1)有sql映射文件,映射文件名必须和接口名相同,并且放在与接口同一目录下
						方法2)没有sql映射文件,所有的sql都是利用注解写在接口上的
		-->
		<!-- <mapper url="file:///var/mappers/AuthorMapper.xml"/> -->
		
		<mapper resource="EmployeeMapper.xml" />
		
		<!-- 方法1)有sql映射文件,映射文件名必须和接口名相同,并且放在与接口同一目录下 -->
		<!-- <mapper class="com.bgy.dao.EmployeeMapper"/> -->
		
		<!-- 方法2)没有sql映射文件,所有的sql都是利用注解写在接口上的 -->
		<mapper class="com.bgy.dao.EmployeeMapperAnnotation"/>
		
		<!-- 
			批量注册 
			映射文件名必须和接口名相同,并且放在与接口同一目录下
			把EmployeeMapper.xml文件和EmployeeMapper.java文件,都放在com.bgy.dao包下
		-->
		<!-- <package name="com.bgy.dao"/> -->
	</mappers>
</configuration>

EmployeeMapperAnnotation.java

package com.bgy.dao;

import org.apache.ibatis.annotations.Select;
import com.bgy.bean.Employee;

// 方法2)没有sql映射文件,所有的sql都是利用注解写在接口上的
public interface EmployeeMapperAnnotation {
	
	@Select("select * from tbl_employee where id=#{id}")
	public Employee getEmpById(Integer id);
}

MyBatisTest.java

package com.bgy.bean.test;

import java.io.IOException;
import java.io.InputStream;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.jupiter.api.Test;

import com.bgy.bean.Employee;
import com.bgy.dao.EmployeeMapper;
import com.bgy.dao.EmployeeMapperAnnotation;

class MyBatisTest {
	
	// 给sqlSessionFactory封装成一个方法+
	public SqlSessionFactory getSqlSessionFactory() throws IOException {
		String resource = "mybatis-config.xml";
		InputStream inputStream = Resources.getResourceAsStream(resource);
		return new SqlSessionFactoryBuilder().build(inputStream);
	}
	
	
	/**
	 *  接口式编程
	 * 推荐使用
	 * @throws IOException
	 */
	@Test
	public void test01() throws IOException {
		// 1.  获取sqlSessionFactory对象
		SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
		
		// 2.  获取sqlSession对象
		SqlSession openSession = sqlSessionFactory.openSession();
		
		try {
			// 3. 获取接口实现类对象
			// 会为接口自动创建一个代理对象,代理对象去执行增删改查等方法
			EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);
			Employee employee = mapper.getEmpById(1);
			
			System.out.println("接口式编程");
			System.out.println(mapper.getClass());
			System.out.println(employee);
		} finally {
			openSession.close();
		}
	}
	
	// 方法2)没有sql映射文件,所有的sql都是利用注解写在接口上的
	@Test
	public void test02() throws IOException {
		SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
		SqlSession openSession = sqlSessionFactory.openSession();
		try {
			EmployeeMapperAnnotation mapper = openSession.getMapper(EmployeeMapperAnnotation.class);
			Employee employee = mapper.getEmpById(1);
			
			System.out.println(employee);
		} finally {
			openSession.close();
		}
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值