JavaWeb实战(四)——加入MyBatis框架

上期说道Dao层中的SQL语句导致代码复杂难以维护。

这期我们用Mybatis框架来实现持久化


我们先将sql语句提取出来。将DaoImpl中的sql语句提取到UserMapper.xml文件:

JavaWeb实战(四)——加入MyBatis框架

将DaoImpl中的sql语句提取到UserMapper.xml文件

然后我们要怎么取执行这个文件里面的sql语句呢?

接触过其他ORM框架的同学可能知道:Sqlsession是mybatis里用于执行持久化操作的对象,类似于jdbc中的Connection,每一次操作数据库都需要先获取一个connection(关闭了之后)。Sqlsession也是每次执行语句都要先获取一个Sqlsession。

创建Sqlsession的地方只有一个,那就是SqlsessionFactory(sql会话工厂)的openSession方法

所以我们可以知道,要使用Mybatis,第一步就需要产生SqlSessionFactory类的实例(相当于是产生连接池)。所以我们可以在产生sqlSessionFactory类的实例的时候将sql语句加载进来。大概代码如下:

JavaWeb实战(四)——加入MyBatis框架

加载xml文件

但是当UserMapper.xml之类的文件多了起来的时候,我们就不能只加载一个xml文件了。所以我们需要将所有的类似的文件统一放到一个配置文件里。所以我们新建一个myBatis-config.xml文件:

JavaWeb实战(四)——加入MyBatis框架

myBatis-config.xml

现在我们就可以用Mybatis进行数据库操作了。我们修改UserDaoImpl.java和UserDao.java

将UserDao返回结果改为User具体代码如下:

JavaWeb实战(四)——加入MyBatis框架

UserDao.java

UserDaoImpl实现类的数据库连接可以删掉了。具体代码如下:

JavaWeb实战(四)——加入MyBatis框架

UserDaoImpl.java

其他代码不变。记得引入Mybatis的包。mybatis-3.4.2.jar或其他版本。具体效果就不演示了。

这样我们就加入了Mybatis框架。但是我们会发现代码还是比较多,其实Mybatis提供了一个MybatisGenerator项目。这个工程运行起来只要你数据库建好表结构。

可以一键生成Dao、VO、*Mapper.xml。运行的效果如下:

JavaWeb实战(四)——加入MyBatis框架

生成的文件

VO包含了所有的数据库字段的get/set方法和初始化。Dao包含了几个基本的增删改查。XML包含了几个增删改查的sql语句。

下期我们就讲讲MybatisGenerator项目。

后面再将Spring、日志、SpringMVC什么的加进来。


下期再见!

PS:想找一个前端模板整个进来。不知道什么好,有推荐的可以留言。