一个网络应用例如Web应用、移动应用都可以大致划分为三层架构:
其中和用户直接交互的是UI层,是影响应用体验感受的最直观的层。其次是服务层,用户在使用应用的过程中会产生大量的数据和请求,服务层需要实现用户请求和数据的处理,是用户功能体验的关键。Dao层则是隐藏在整个应用的最底层架构,该层需要实现各种接口的底层实现,例如数据库的连接,增删查改等具体操作,为Service层提供易用的接口。(为了使开发时更容易理解,可以在Service和Dao层之间添加一层,用于实现对各个功能的具体化,这可以使Service层简化,也使整个架构更易于维护)。但是,在开发Dao层的时候,会有很多冗余的代码,既不易于理解,也不利于维护,因此,我选择使用Mybatis进行Dao层数据持久化(DB)的搭建。它采用了XML文件进行增删查改语句的管理,也提供了很多易于使用的句柄和封装,这可以使我的开发工作变得简便。
Mybatis在IntellJ IDEA上是收费的,这使得我不得不使用Eclipse进行开发。开发前所需准备的工作:
- Eclipse开发软件
- Mybatis插件包
- mysql的JDBC包
- mysql数据库安装
Mybatis的插件包可以在 https://github.com/mybatis/mybatis-3/releases进行下载,mysql及其JDBC可以在mysql的官方网站进行下载。下载完插件包后,在Eclipse上新建一个工程,将ZIP包中的mybatis-3.5.3.jar拷贝进项目并构建路径到库中,同理于JDBC。
在mysql中创建一个test表,里面随便填入几个数据,在项目中创建相应的Entity类,并在类中实现所有数据的getter,setter,构造和toString方法。
public class TestPerson { private int Test_id; private String Test_name; private int Test_age; public TestPerson() { } public TestPerson(int test_id, String test_name, int test_age) { Test_id = test_id; Test_name = test_name; Test_age = test_age; } @Override public String toString() { return "TestPerson [Test_id=" + Test_id + ", Test_name=" + Test_name + ", Test_age=" + Test_age + "]"; } public int getTest_id() { return Test_id; } public void setTest_id(int test_id) { Test_id = test_id; } public String getTest_name() { return Test_name; } public void setTest_name(String test_name) { Test_name = test_name; } public int getTest_age() { return Test_age; } public void setTest_age(int test_age) { Test_age = test_age; }}
要使用Mybatis就需要配置相应的XML,进行数据库的连接以及SQL语句的管理(相应的文档可以参考ZIP中的PDF(英文版),也可以参考https://mybatis.org/mybatis-3/zh/getting-started.html(中文版)。首先是config.xml,配置连接数据库的各种参数:
<?xml version="1.0" encoding="UTF-8" ?>
该文件需要置换的数据是property中的几个value。第一个是数据库的JDBC,注意,JDBC的版本分为com.mysql.cj.jdbc.Driver和com.mysql.jdbc.Driver,注意版本区分(新版普遍是com.mysql.cj.jdbc.Driver),第二个是数据库的地址,ORACLE和MYSQL的写法不同,我用的是MYSQLjdbc:mysql://数据库地址:数据库端口号/数据库名字?serverTimezone=UTC,最后的serverTimezone不能省略否则会报错,第三个是用户名,第四个是密码。接着配置Entity对应的Mapper,新建一个Mapper.xml文件,下面是配置代码:
<?xml version="1.0" encoding="UTF-8" ?>-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> ------------------------------------------------------------------------------------- select * from test where Test_id = #{Test_id} select * from test where Test_name = #{Test_name} --------------------------------------------------------------------------------------
在配置文件中加粗字体是需要置换的信息,namespace是该Mapper所在的位置,中id是sql语句的名字(写过xml的同学应该不陌生),resultType是返回值的类型,parameterType是参数的类型,之后就是sql语句。值得注意的是,你的Entity与数据库所对应的表中的名字应完全相同,否则就会出现查询为空的情况。最后贴一张数据库的照片和最后的结果:
第一天Mybatis的基础配置和使用测试结束了。
(2020-1-9日报)