一、mybatis的安装使用:
1.导入架包:mybatis-x.x.x.jar;选择自己需要的版本;
maven工程在pox.xml文件引入依赖:
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>选择的mybatis版本</version>
</dependency>
2.配置数据源和事务管理
<?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="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="org/mybatis/example/BlogMapper.xml"/>
</mappers>
</configuration>
配置好数据源和事务管理后就可以使用mybatis。mybatis的核心实例是SQLSessionFactory。
3.创建SqlSessionFactory实例。
该工具类创建SqlSessionFactory对象并返回,通过Resources类的getResourceAsStream(resource);方法创建SqlSessionFactory对象;
/**
* 获取SQLSessionFactory对象
* @return 返回sqlSessionFactory对象
*/
public static SqlSessionFactory getSqlSessionFactory() {
SqlSessionFactory sqlSessionFactory = null;
try {
String resource = "/chapter2/src/main/resources/smart-context.xml";
InputStream inputStream;
inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
return sqlSessionFactory;
}
4.通过SqlSessionFactory对象获取SqlSession对象,并通过SqlSession对象获取已映射的sql语句,下面是获取已映射的sql语句的两种方法;图一是通过xml获取,图二是通过类映射器获取
//创建SqlSessionFactory 对象
SqlSessionFactory sqlSessionFactory = SqlSessionFactoryUtil.getSqlSessionFactory();
//通过SqlSessionFactory 对象获取SqlSession对象
SqlSession session = sqlSessionFactory.openSession();
try {
//通过sqlsession对象获取已映射的sql语句,并执行
Blog blog = (Blog) session.selectOne("org.mybatis.example.BlogMapper.selectBlog", 101);
} finally {
session.close();
}
//创建SqlSessionFactory 对象
SqlSessionFactory sqlSessionFactory = SqlSessionFactoryUtil.getSqlSessionFactory();
//通过SqlSessionFactory 对象获取SqlSession对象
SqlSession session = sqlSessionFactory.openSession();
try {
//通过sqlsession对象获取已映射的sql语句,并执行
BlogMapper mapper = session.getMapper(BlogMapper.class);
Blog blog = mapper.selectBlog(101);
} finally {
session.close();
}
5.mybatis-config.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">
<mapper namespace="org.mybatis.example.BlogMapper">
<select id="selectBlog" resultType="Blog">
select * from Blog where id = #{id}
</select>
</mapper>
6.获取已映射的sql语句的方法:下面是两种不同的方式获取已映射的sql语句;
Blog blog = (Blog) session.selectOne("org.mybatis.example.BlogMapper.selectBlog", 101);
BlogMapper mapper = session.getMapper(BlogMapper.class);
Blog blog = mapper.selectBlog(101);
二、XML映射文件:
1、
- cache – 对给定命名空间的缓存配置。
- cache-ref – 对其他命名空间缓存配置的引用。
- resultMap – 是最复杂也是最强大的元素,用来描述如何从数据库结果集中来加载对象。
parameterMap– 已被废弃!老式风格的参数映射。更好的办法是使用内联参数,此元素可能在将来被移除。文档中不会介绍此元素。- sql – 可被其他语句引用的可重用语句块。
- insert – 映射插入语句
- update – 映射更新语句
- delete – 映射删除语句
- select – 映射查询语句
2、myBatis中,接受参数使用#{}和${}的区别。#会创建一个 PreparedStatement 参数占位符并安全地设置参数,就像使用sql语句中的?。使用$符,不会修改和转义字符串。
3、myBatis结果映射:
(1)ResultMap 的简单实例:配置列对应结果集。
<resultMap id="userResultMap" type="User">
<id property="id" column="user_id" />
<result property="username" column="user_name"/>
<result property="password" column="hashed_password"/>
</resultMap>
(2)使用ResultMap:
<select id="selectUsers" resultMap="userResultMap">
select user_id, user_name, hashed_password
from some_table
where id = #{id}
</select>