目录
前言
初学SSM框架,首先学习了MyBatis。MyBatis是一个用于持久层的框架,主要用于与简化与数据库的交互。我们可以直接通过注解或者XML进行配置。我们只需要写DAO的接口,并将实际的查询语句进行配置,MyBatis通过创建该接口的动态代理来实现具体的持久化操作,而不需要我们手动来实现JDBC的细节。
MyBatis运行流程概览
一般的MyBatis配置方法
// 1.读取配置文件
InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
// 2.获取SqlSessionFactory
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(in);
// 3.通过工厂获取SqlSession对象
SqlSession sqlSession = factory.openSession();
// 4.使用SqlSession创建Dao接口的代理对象
UserDao userDao = sqlSession.getMapper(UserDao.class);
// 5.通过代理对象实现数据库的访问
List<User> users = userDao.findAll();
for(User user:users){
System.out.println(user);
}
// 6.关闭资源
in.close();
sqlSession.close();
源码中主要运用了两个设计模式:工厂模式、生成器模式,具体的细节不介绍了
而在配置文件中,只需要指定映射配置文件的位置,其中每个DAO接口的配置文件是唯一的,并且路径需要和UserDao.java一致:比如User类的位置是src/main/java/com.billsjc.bean.User
,对应的位置是src/main/resources/com/billsjc/dao/UserDao.xml
。
<!-- 指定配置文件的位置,映射配置文件指的是每个dao独立的配置文件 -->
<mappers>
<mapper resource="com/billsjc/dao/UserDao.xml"/>
</mappers>
在UserDao.xml中,namespace对应的是接口的全类名,每一个select标签对应一个方法,比如id=findAll代表该标签配置的是findAll()方法且返回类型是User类。标签中的文本则是具体的sql语句。
<mapper namespace = "com.billsjc.dao.UserDao">
<select id="findAll" resultType="com.billsjc.bean.User">
select * from user
</select>
</mapper>
对于DAO接口,我们只需要写如下的代码即可
/**
* @description: 用户的持久层接口(XML)
* @author: 1