SqlMapConfig.xml中配置的内容和顺序如下:
- properties,属性
- settings,全局配置参数
- typeAliases,类型别名
- typeHandlers,类型处理器
- objectFactory,对象工厂
- plugins,插件
- environments,环境集合属性对象
-
environment,环境子属性对象
-
transactionManager,事务管理
-
dataSource,数据源
-
-
-
mappers,映射器
标签properties的使用
在SqlMapConfig.xml配置文件中,配置properties标签
- 可以在标签内部配置连接数据库的信息,配置<property>标签的name和value,在其他位置使用变量引用
- 可以通过属性引用外部配置文件信息,指定resource属性和url属性来引用
- resource属性,常用的,用于指定配置文件的位置,是按照类路径的写法来写,并且必须存在于类路径下;
- url属性,要求按照Url的写法来写地址,唯一标识一个资源的位置;
1、配置<property>标签的name和value,在其他位置可以使用变量引用,如:value="${driver}"
<?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">
<!--mybatis的主配置文件-->
<configuration>
<!--配置properties-->
<properties>
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://192.168.171.131:3306/mybatis?characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</properties>
<!--配置环境-->
<environments default="mysql">
<!-- 配置mysql的环境-->
<environment id="mysql">
<!-- 配置事务的类型 -->
<transactionManager type="JDBC"></transactionManager>
<!--配置数据源(连接池)-->
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<!-- 配置映射文件的位置,映射配置文件指每个dao独立的配置文件 -->
<mapper resource="com/itheima/dao/IUserDao.xml"/>
</mappers>
</configuration>
2、配置<properties>标签的resource属性,引用外部的配置文件,如jdbcConfig.properties
jdbcConfig.properties,放在resources下面,即类路径下;变量引用方式value="${jdbc.driver}"
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://192.168.171.131:3306/mybatis?characterEncoding=UTF-8
jdbc.username=root
jdbc.password=root
<?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">
<!--mybatis的主配置文件-->
<configuration>
<!--配置properties
可以在标签内部配置连接数据库的信息,也可以通过属性引用外部配置文件信息
resource属性:用于指定配置文件的位置,是按照类路径的写法来写,并且必须存在于类路径下。
-->
<properties resource="jdbcConfig.properties">
<!-- <property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://192.168.171.131:3306/mybatis?characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="root"/>-->
</properties>
<!--配置环境-->
<environments default="mysql">
<!-- 配置mysql的环境-->
<environment id="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>
</environments>
<mappers>
<!-- 配置映射文件的位置,映射配置文件指每个dao独立的配置文件 -->
<mapper resource="com/itheima/dao/IUserDao.xml"/>
</mappers>
</configuration>
3、配置<properties>标签的url属性,引用外部的配置文件,如jdbcConfig.properties
jdbcConfig.properties的url地址:文件拖到浏览器中,可查看到url地址
file:///D:/Nikey/Project/Repository/gitee/spring/mybatis/day02_eesy_02mybatisDAO/src/main/resources/jdbcConfig.properties
url属性:要求按照Url的写法来写地址
URL: Uniform Resource Locator 统一资源定位符,它是可以唯一标识一个资源的位置;
它的写法:
http://localhost:8080/mybatisserver/demo1Servlet
协议 主机 端口 URI
URI:Uniform Resource Identifier 统一资源标识符,它是在应用中可以唯一定位一个资源的
<?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">
<!--mybatis的主配置文件-->
<configuration>
<!--配置properties
可以在标签内部配置连接数据库的信息,也可以通过属性引用外部配置文件信息
resource属性:常用的
用于指定配置文件的位置,是按照类路径的写法来写,并且必须存在于类路径下。
url属性:
是要求按照Url的写法来写地址
URL: Uniform Resource Locator 统一资源定位符,它是可以唯一标识一个资源的位置;
它的写法:
http://localhost:8080/mybatisserver/demo1Servlet
协议 主机 端口 URI
URI:Uniform Resource Identifier 统一资源标识符,它是在应用中可以唯一定位一个资源的
-->
<properties url="file:///D:/Nikey/Project/Repository/gitee/spring/mybatis/day02_eesy_02mybatisDAO/src/main/resources/jdbcConfig.properties">
<!-- <property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://192.168.171.131:3306/mybatis?characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="root"/>-->
</properties>
<!--配置环境-->
<environments default="mysql">
<!-- 配置mysql的环境-->
<environment id="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>
</environments>
<mappers>
<!-- 配置映射文件的位置,映射配置文件指每个dao独立的配置文件 -->
<mapper resource="com/itheima/dao/IUserDao.xml"/>
</mappers>
</configuration>
标签typeAliases的使用
typeAlias用于配置别名,type属性指定的是实体类全限定类名,alias属性指定别名,当指定了别名,引用别名的地方,就不再区分大小写;
<!--使用typeAliases配置别名,它只能配置domain中类的别名-->
<typeAliases>
<!--typeAlias用于配置别名,type属性指定的是实体类全限定类名,alias属性指定别名,当指定了别名,引用别名的地方,就不再区分大小写-->
<typeAlias type="com.itheima.domain.User" alias="user"></typeAlias>
</typeAliases>
com/itheima/dao/IUserDao.xml
- parameterType="user"
- parameterType="User"
<!--保存用户-->
<insert id="saveUser" parameterType="user">
<!--配置插入操作后,获取插入数据的id-->
<!--keyProperty代表要返回的值名称,keyColumn代表数据库列名,order取值为AFTER代表插入后的行为,resultType代表返回值的类型-->
<selectKey keyProperty="id" keyColumn="id" resultType="int" order="AFTER">
select last_insert_id();
</selectKey>
insert into user(username,birthday,sex,address) values (#{username},#{birthday},#{sex},#{address})
</insert>
<!--更新用户-->
<update id="updateUser" parameterType="User">
update user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address} where id = #{id}
</update>
标签package的使用
用于指定要配置别名的包,当指定之后,该包下的实体类都会注册别名,并且类名就是别名,不再区分大小写
<!--使用typeAliases配置别名,它只能配置domain中类的别名-->
<typeAliases>
<!--用于指定要配置别名的包,当指定之后,该包下的实体类都会注册别名,并且类名就是别名,不再区分大小写-->
<package name="com.itheima.domain"/>
</typeAliases>
<mappers>中的package标签,是用于指定dao接口所在的包,当指定了之后,就不需要再写mapper,以及resource或者class了
<mappers>
<!-- 配置映射文件的位置,映射配置文件指每个dao独立的配置文件 -->
<!--<mapper resource="com/itheima/dao/IUserDao.xml"/>-->
<!--package标签是用于指定dao接口所在的包,当指定了之后,就不需要再写mapper,以及resource或者class了-->
<package name="com.itheima.dao"/>
</mappers>