一、用xml的方式查询
1.在test下面的java里面创建com.itheima.test.MybatisTest的测试类
2.resorces目录结构如下
注意此时resources下面有个com.itheima.dao.IUserDao.xml
在resorces文件夹下的SqlMapConfig.xml里面,指定配置映射的位置
注意此处是用xml,并且如前一天所提到的 IUserDao.xml的目录必须和接口的目录包名一致 分隔为斜线
<!--指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件
如果此处是用注解 则此处应该使用class属性指定被注解的dao全限定类名-->
<mappers>
<mapper resource="com/itheima/dao/IUserDao.xml"></mapper>
</mappers>
=
3.IUserDao.xml里面为对应的接口方法,查询的语句
标签名为select
其中findAll为IUserDao接口中的方法,对应唯一id
并且用resultType来封装这个结果到实体类中 (全限定类名)
<select id="findAll" resultType="com.itheima.domain.User">
select * from user;
</select>
4.醉醉重要的来了! 编写MybatisTest测试类!
这里有6个步骤
1.读取配置文件(读取resources文件下的SqlMapConfig.xml文件,该文件中配置的是数据库的连接信息 以及查询语句的xml的位置映射!)
2.创建SqlSessionFactory工厂(这里使用SqlSessionFactoryBuilder来创建Factory实例)因为SqlSessionFactory为一个接口 没有实体类,所以要通过SqlSessionFactoryBuilder这个工厂创建方法 来创建这个工厂!
3.使用工厂创建SqlSession对象(就是从这个工厂 来创造出一个Sql对话)
4.使用SqlSession来创建一个Dao接口的对象(代理模式 实现增强功能)
5.使用代理对象实现对象方法(具体的方法 打印啊 啥的)
6.最后要释放资源
接下来是代码
//读取配置文件
InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
//创建SqlSessionFactory工厂
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(in);
//用工厂创建一个SqlSession
SqlSession session = factory.openSession();
//用SqlSession来创建一个Dao接口的代理
IUserDao userDao = session.getMapper(IUserDao.class);
//实现功能
List<User> users = userDao.findAll();
for(User user : users){
System.out.println(user); // 因为在User类里面重写了tostring方法 所以这个就直接是相关的信息了
}
//最后释放资源 后开先关
session.close();
in.close();
执行结果
二、用注解的方式查询
用注解的时候 就不需要那个IUserDao.xml文件了!因为那个是用xml方式写的执行语句 现在用注解就用不到啦!
因此
1.删除resource下的com.itheima.dao.IUserDao.xml
(或者直接把整个com删掉就行…)
2.改变map方式
进入到SqlMaoConfig.xml中!
用xml方式为上图 这样!但是现在 我们将resource包下面的com…都删掉后 就没有上图所示的这个路径了!如上图的注释所说 我们要将resource改为class …如下图
3.在IUserDao接口中动动手脚
关键一步!使用注解!
在IUserDao接口中!
public interface IUserDao {
@Select("select * from user")
List<User> findAll();
}
看到这个@select了没 里面就是具体的查询语句了!
MybatisTest文件 并不用动 直接run
结果是一样的!
至此mybatis查询入门!