目录
七、<mappers>标签(四种注册映射文件或持久层接口的方式)
4.注册一个包下的所有持久层接口
一、MyBatis配置文件结构:
注意:
配置文件各类型顺序要严格按照如下顺序配置,顺序不能错乱,否则会导致编译不通过。如properties配置文件不能再typeAliases配置文件下面。
二、<properties>标签
介绍:
属性值定义。properties标签中可以定义属性值,也可以引入外部配置文件。无论是内部定义还是外部引入,都可以使用${name}获取值。
例如:我们可以将数据源配置写到外部的db.properties中,再使用properties标签引入外部配置文件,这样可以做到动态配置数据源。
1.编写db.properties
jdbc.driver=com.mysql.cj.jdbc.Driver jdbc.url=jdbc:mysql:///mybatis jdbc.username=root jdbc.password=123456
2.在配置文件中引入db.properties
<!--导入db.properties文件--> <properties resource="db.properties"></properties> <!-- 配置环境 --> <environments default="mysql"> <environment id="mysql"> <!-- 事务类型 --> <!--type类型有JDBC、MANAGED两种,一般设为JDBC, JDBC需要对增删改进行手动提交事务,MANAGED会自动提交事务--> <transactionManager type="JDBC"></transactionManager> <!-- 数据源 --> <!--dataSource的type属性: POOLED:使用连接池管理连接,使用MyBatis自带的连接池(一般都是使用POOLED) UNPOOLED:不使用连接池,直接由JDBC连接 JNDI:由JavaEE服务器管理连接,如果使用Tomcat作为服务器则使用Tom自带的连接池管理 (JNDI一般由运维人员使用,关系到服务器)--> <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>
3.注意,properties文件中value的值不用双引号。如下:
4.知识点整理:
4.1.在MyBatis配置文件中,<properties>的作用是“配置属性”
4.2.在MyBatis配置文件中,<properties>引入外部文件的属性为“resource”
三、<settings>标签
介绍:
<settings> 是配置MyBatis运行时的一些行为的,例如缓存、延迟加载、命名规则等一系列控制性参数。后期会使用该标签配置缓存和延迟加载等。
四、<plugins>标签
介绍:
<plugins> 是配置MyBatis插件的。插件可以增强MyBatis功能,比如进行sql增强,打印日志,异常处理等。后期会使用该标签配置分页插件。
五、<typeAliases>标签
介绍:
MyBatis对常用类有默认别名支持,比如java.lang.Stirng的别名为string。除此之外,我们也可以使用 <typeAliases> 设置自定义别名。
1.为一个类配置别名
<!--语法:--> <typeAliases> <typeAlias type="全类名" alias="别名"></typeAlias> </typeAliases>
此时我们即可在映射文件中使用自定义别名,如:
(1)配置文件
<typeAliases> <!--typeAliases设置别名--> <!--为一个类设置别名--> <!--type:全类名 alias:别名--> <typeAlias type="com.itbaizhan.pojo.User" alias="user"></typeAlias> </typeAliases>
(2)映射文件
<!--给parameterType、resultType传入别名,其中 parameterType的别名是为一个包设置别名,别名和类名一致 resultType 的别名是为一个类设置别名,别名为自定义类型 --> <select id="findPage3" parameterType="PageQuery" resultType="user"> select * from user limit #{startIndex},#{pageSize} </select>
注意:数据库跟IDEA不区分大小写
2.为一个所有包下的所有类配置别名
<!--语法:--> <typeAliases> <package name="包名"></package> </typeAliases>
(1)配置文件:
<typeAliases> <!--为一个包下的所有类设置别名,别名是:省略包名,和类名一样--> <package name="com.itbaizhan.pojo"/> </typeAliases>
(2)映射文件:
<!--给parameterType、resultType传入别名,其中 parameterType的别名是为一个包设置别名,别名和类名一致 resultType 的别名是为一个类设置别名,别名为自定义类型 --> <select id="findPage3" parameterType="PageQuery" resultType="user"> select * from user limit #{startIndex},#{pageSize} </select>
3.知识点整理:
在MyBatis配置文件中,配置别名使用的标签为“typeAliases”
<typeAliases>中使用“<package>”可以为一个包下的所有类配置别名
六、<environments>标签
1.<environments> 可以为MyBatis配置数据环境。
2.配置事务管理、连接池
<!-- 配置环境 --> <environments default="mysql"> <environment id="mysql"> <!-- 事务类型 --> <!--type类型有JDBC、MANAGED两种,一般设为JDBC, JDBC需要对增删改进行手动提交事务,MANAGED会自动提交事务--> <transactionManager type="JDBC"></transactionManager> <!-- 数据源 --> <!--dataSource的type属性: POOLED:使用连接池管理连接,使用MyBatis自带的连接池(一般都是使用POOLED) UNPOOLED:不使用连接池,直接由JDBC连接 JNDI:由JavaEE服务器管理连接,如果使用Tomcat作为服务器则使用Tom自带的连接池管理 (JNDI一般由运维人员使用,关系到服务器)--> <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>
3.dataSource的type属性:
POOLED:使用连接池管理连接,使用MyBatis自带的连接池。
UNPOOLED:不使用连接池,直接由JDBC连接。
JNDI:由JAVAEE服务器管理连接,如果使用Tomcat作为服务器则使用Tomcat自带的连接池管理。
七、<mappers>(四种注册映射文件或持久层接口的方式)
介绍:
<mappers> 用于注册映射文件或持久层接口,只有注册的映射文件才能使用,共有四种方式都可以完成注册:
1 使用相对路径注册映射文件
<mappers> <!--第一种:使用相对路径注册映射文件--> <mapper resource="com/itbaizhan/mapper/UserMapper.xml"></mapper> </mappers>
2.使用绝对路径注册映射文件
<mappers> <!--第二种:使用绝对路径注册映射文件--> <mapper url="file:///C:\Users\txxiaoer\Desktop\SSM框架Demo\mybatiscase\mybatisDemo1\src\main\resources\com\itbaizhan\mapper\UserMapper.xml"></mapper> </mappers>
3.注册持久层接口
<mappers> <!--第三种:注册持久层接口--> <mapper class="com.itbaizhan.mapper.UserMapper"></mapper> </mapppers>
4.注册一个包下的所有持久层接口
<mappers> <!--第四种:注册一个包下的所有持久层接口--> <package name="com.itbaizhan.mapper"/> </mappers>
5.知识点整理:
5.1.在MyBatis配置文件中, <mapper> 注册持久层接口使用的属性是“class”
5.2.在MyBatis配置文件中, <mappers> 下使用 <package> 表示 “注册一个包下的所有持久层接口 ”