1. crtl键查看
2. mybatis-3-config.dtd文件
3. 以上标签挑几个常用的详细说明
- 强调一点,顺序也要依次写
3.1 properties标签
代码如下
<?xml version="1.0" encoding="UTF8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 数据源的配置信息会单独放在jdbc.properties文件中,这里加载到mybatis配置文件来,使用的时候用EL表达式${}-->
<properties resource="jdbc.properties"></properties>
</configuration>
3.2 setting标签【重点】
3.2.1 缓存
- 无缓存:用户在访问相同数据时,需要发器多次对数据库的直接访问,导致产生大量IO、读写硬盘的操作,效率低下
- 有缓存:sql语句查询的表格数据,我们放入缓存,再次查找相同数据时,直接拿来用,减少IO、硬盘读写次数,提高效率
3.2.2 setting标签
代码如下
<?xml version="1.0" encoding="UTF8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--数据源的配置信息会单独放在jdbc.properties文件中,这里加载到mybatis配置文件来,使用的时候用EL表达式${}-->
<properties resource="jdbc.properties"></properties>
<!--缓存-->
<settings>
<setting name="cacheEnabled" value="true"/>
</settings>
</configuration>
二级缓存是默认开启的,但是要把查询数据放到
缓存,还要在mapper.xml文件加cache标签
<?xml version="1.0" encoding="UTF8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.qf.dao.PassengerDao">
<!-- 二级缓存是默认开启的,但是要把查询数据放到
缓存,还要加cache标签-->
<cache/>
<resultMap id="first" type="Passenger">
<id column="id" property="id"></id>
<result column="name" property="name"></result>
<result column="sex" property="sex"></result>
<result column="birthday" property="birthday"></result>
<!-- 描述id nationality expire 和passport的映射规则-->
<association property="passport" javaType="Passport">
<id column="id" property="id"></id>
<result column="nationality" property="nationality"></result>
<result column="expire" property="expire"></result>
</association>
</resultMap>
<select id="queryPassengerByid" resultMap="first">
select e.id,e.name,e.sex,e.birthday,p.id,p.nationality,p.expire
from t_passengers e join t_passports p
on e.id = p.passenger_id
where e.id = #{id}
</select>
</mapper>
3.2 typeAliases标签
- 一次性给某个包下的所有类设置别名
代码如下
<?xml version="1.0" encoding="UTF8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--数据源的配置信息会单独放在jdbc.properties文件中,这里加载到mybatis配置文件来,使用的时候用EL表达式${}-->
<properties resource="jdbc.properties"></properties>
<!--缓存-->
<settings>
<setting name="cacheEnabled" value="true"/>
</settings>
<!--一次性给某个包下的所有类设置别名-->
<typeAliases>
<package name="com.qf.entity"/>
</typeAliases>
</configuration>
3.3 plugins 标签
- 以用来配置mybatis的插件,比如在开发中经常需要对查询结果进行分页,就需要用 PageHelper 分页插件
- 依赖如下
<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.10</version>
</dependency>
- 配置如下
<?xml version="1.0" encoding="UTF8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--数据源的配置信息会单独放在jdbc.properties文件中,这里加载到mybatis配置文件来,使用的时候用EL表达式${}-->
<properties resource="jdbc.properties"></properties>
<!--缓存-->
<settings>
<setting name="cacheEnabled" value="true"/>
</settings>
<!--一次性给某个包下的所有类设置别名-->
<typeAliases>
<package name="com.qf.entity"/>
</typeAliases>
<!--以用来配置mybatis的插件,比如在开发中经常需要对查询结果进行分页,就需要用到pageHelper分页插件-->
<!-- PageHelper 分页插件 -->
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<property name="helperDialect" value="mysql"/>
</plugin>
</plugins>
<!-- 核心配置信息-->
<environments default="xmq_config">
<!-- 数据库相关配置-->
<environment id="xmq_config">
<!-- 事务控制类型 connection对象-->
<transactionManager type="JDBC"></transactionManager>
<!-- 数据库连接参数 连接池-->
<dataSource type="org.apache.ibatis.datasource.pooled.PooledDataSourceFactory">
<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>
<!-- Mapper文件注册-->
<mappers>
<mapper resource="com/qf/dao/UserDaoMapper.xml"/>
<mapper resource="com/qf/dao/PassengerDaoMapper.xml"/>
</mappers>
</configuration>
- 使用分页查询
- PageHelper.startPage(pageNum,pageSize)
- PageHelper 对其之后的第一个查询进行分页功能的追加
- 所以我们只要在使用mapper.queryUsers();这种方法的前面写上代码就可以了。
public static void test() {
//1. inputStream
InputStream inputStream = null;
try {
//2. 加载配置文件
inputStream = Resources.getResourceAsStream("mybatis-config.xml");
} catch (IOException e) { e.printStackTrace(); }
//3.创建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//4.通过SqlSessionFactory 创建 sqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
//5.通过sqlSession,获得Dao实现类对象
UserDao mapper = sqlSession.getMapper(UserDao.class);
// PageHelper 对其之后的第一个查询进行分页功能的追加
PageHelper.startPage(1,3);
User user = mapper.queryUserById(1);
System.out.println(user);
}
3.4 environments标签、mappers标签
我们已经使用过了就不再讲了