1. 创建mapper和主配置文件模板
每次创建mapper和主配置文件都会有很多重复的语句,可以使用idea创建一个模板来简化文件的创建。
- 添加自定义模板:
- 模板的配置:
- mapper模板代码:
<?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="dao接口的全限定名称">
<mapper/>
- 主配置文件模板代码:
<?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>
<!-- 配置 mybatis 的环境 -->
<environments default="mysql">
<!-- 配置 mysql 的环境 -->
<environment id="mysql">
<!-- 配置事务的类型 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 配置连接数据库的信息:用的是数据源(连接池) -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=utf-8"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<!-- 告知 mybatis 映射配置的位置 -->
<mappers>
<mapper resource=""/>
</mappers>
</configuration>
2. 创建获取SqlSession的工具类
public class MyBatisUtils {
private static SqlSessionFactory factory = null;
static {
String config = "mybatis.xml";
try {
InputStream resource = Resources.getResourceAsStream(config);
factory = new SqlSessionFactoryBuilder().build(resource);
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 获取SqlSession对象
* @return
*/
public static SqlSession getSqlSession(){
SqlSession sqlSession = null;
if (factory != null) {
sqlSession = factory.openSession();
}
return sqlSession;
}
}
3. Dao代理技术
1. dao代理技术:
由mybatis创建studentDao接口的实现类Proxy(相当于StudentDaoImpl),不用开发人员写dao接口的实现类。
2. 使用dao的代理要求:
- mapper文件中namespace:必须是dao按口的全限定名称
- mapper文件中标签mid是dao按口中的方法名称(一莫一样的)
3. mybatis代理实现方式:
使用SqISession对象的方法getMapper(StudentDao.class)
SqlSession session = MyBatisUtils.getSqlSession;
StudentDao dao = session.getMapper(StudentDao.class);