MyBatis框架学习(3)
程序员文章站
2022-05-23 16:24:44
...
两个文件 全局配置文件
内容为雷丰阳老师的SSM框架内容记录
1.全局配置文件:mybatis-config.xml;
指导mybatis正确运行的一些全局设置
2.SQL映射文件:EmployeeDao.xml;
相当于是对Dao接口的一个实现描述
细节:
1.获取到的是接口的代理对象;mybatis自动创建的;
2.SqlSessionFactory和SqlSession
SqlSessionFactory创建SqlSession对象,factory只new一次就行
SqlSession:相当于connection和数据库进行交互,和数据库的一次会话,就应该创建一个新的sqlSession;
全局配置文件
<?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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<!-- 配置连接池 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis_0325"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<!-- 引入我们自己编写的每一个接口的实现文件 -->
<mappers>
<!-- resource:表示从类路径下找资源 -->
<mapper resource="EmployeeDao.xml"/>
</mappers>
</configuration>
configuration(配置)
-
properties(属性)
-
settings(设置)
-
typeAliases(类型别名)
-
typeHandlers(类型处理器)
-
objectFactory(对象工厂)
-
plugins(插件)
-
environments(环境配置)
environment(环境变量)
transactionManager(事务管理器)
dataSource(数据源) -
databaseIdProvider(数据库厂商标识)
-
mappers(映射器)
typeHandlers(类型处理器): 我们不用管,他在项目中已经默认加上了
如果你想手动 mybatis-config.xml(全局配置文件)中:
<!-- 4.类型处理器作用 -->
<typeHandlers>
<!-- 自定义好的类型处理器就这杨配置上去就行 -->
<typeHandler handler=""/>
</typeHandlers>
objectFactory(对象工厂):
你在进行sql映射文件的时候,你只是使用了dao接口的方法(底层通过反射获得到方法),如果你要去调用这个返回值结果,你就要去创建对象,但是你并没有去做着一个工作就能使用,也就是因为mybatis底层使用了objectFactory对象工厂去做了这个动作
plugins(插件)
Mybatis四大对象:
Executor:执行器
执行器就是来执行sql语句(就是执行增删改查操作的)
ParameterHandler:参数处理器
就是我们把sql预编译好之后,往里面设置参数(他就是调用typeHandler对不同类型的参数进行编译)
ResultSetHandler:结果集处理器
负责将查询出来的的结果集封装成我们的JavaBean对象或者什么其他对象(封装数据由他来做)
StatementHandler:就相当于原生的preparedStatement
预编译sql语句
environments(环境配置)
<!-- environments配置环境,后来数据源和事务都是spring来做 -->
<!--
environment:配置一个具体环境,都需要一个事务管理器和一个数据源
default="":默认使用的是哪一个环境;
如果你要是用开发环境default="development"
如果你要是用测试环境default="testEnv"
-->
<environments default="development">
<!-- id="testEnv"是当前环境的唯一标识 -->
<environment id="testEnv">
<transactionManager type=""/>
<dataSource type="">
<property name="driver" value="${driverclass}"/>
<property name="url" value="jdbc:mysql://192.168.10.165:3306/mybatis_test"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
databaseIdProvider(数据库厂商标识)
mysql-config.xml:
<!-- databaseIdProvider:用来考虑数据库移植性的 -->
<databaseIdProvider type="DB_VENDOR">
<!-- name:数据库厂商表示 value:自己起一个好用的别名 -->
<!-- MySQL ; Oracle ; SQL Server -->
<property name="MySQL" value="mysql"/>
<property name="Oracle" value="oracle"/>
<property name="SQL Server" value="sqlserver"/>
</databaseIdProvider>
EmployeeDao.xml:
<!-- 默认这个查询是不区分环境的 -->
<select id="getEmpById" resultType="com.neu.bean.Employee">
select * from t_employee where id = #{id}
</select>
<!-- 如果能精确匹配就精确匹配,不能就模糊的 -->
<select id="getEmpById" resultType="com.neu.bean.Employee" databaseId="mysql">
select * from t_employee where id = #{id}
</select>
<select id="getEmpById" resultType="com.neu.bean.Employee" databaseId="oracle">
select * from t_employee where id = #{id}
</select>
mappers(映射器)
<!-- 7.写好的sql映射文件需要使用mappers注册进来 -->
<mappers>
<!--
class:直接引用接口的全类名
需要将xml(sql映射文件)文件和dao文件放到同一个目录下,而且xml文件名字要和dao名字相同
class的另一种用法
resource:在类路径下找sql映射文件
url:再磁盘或网络路径引用
-->
<!-- <mapper resource="mybatis/EmployeeDao.xml"/> -->
<!-- <mapper class="com.neu.dao.EmployeeDao"/> -->
<!-- <mapper class="com.neu.dao.EmployeeDaoAnnotation"/> -->
<!-- <mapper resource="EmployeeDao.xml"/> -->
<!-- 配合使用:重要的dao写配置
简单的dao写注解
-->
<!-- 批量扫描 name:直接写扫描dao的包名 -->
<package name="com.neu.dao"/>
</mappers>
因为你批量扫描和你的class扫描一样,你sql映射文件他不知道要到哪一个xml文件,class的方法是将dao.xml放到和com.nue.dao包下让他俩同目录
另一种方法就是让config下创建一个一样名称的com.nue.dao包将xml文件放进去
上一篇: react-native搭建环境遇到的坑
下一篇: 集合