菜鸟在MyBatis路上前行-实现简单的CRUD,分页,ResultMap自定义映射操作

 

Mybatis介绍

MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

Mybatis资料

英文官网:http://www.mybatis.org/mybatis-3/

中文官网:http://www.mybatis.org/mybatis-3/zh/index.html

Mybatis实例

1 获取SqlSession对象案例

1.1 问题

在MyBaits中,对数据库操作首先要先获取SqlSession对象,那么该如何获取呢?

1.2 方案

首先用SqlSessionFactoryBuilder获取SqlSessionFactory实例,然后通过SqlSessionFactory再获取SqlSession对象。

1.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:在MySQL的test数据库中创建表和数据

请在MySQL的test数据库中执行以下SQL语句,用来创建表和相关数据:

 

步骤二:新建工程,加入依赖的jar包

新建名为mybatis-base的Java Maven工程

加入什么版本,可以参考:https://github.com/mybatis/mybatis-3/releases

加入以下的依赖

如果需要加入xml到java文件夹里面,需要在pom里面加入以下配置

详细请参考:Intellij IDEA创建Mybatis项目时候找不到xml文件的解决方案

步骤三:新建SqlMapConfig.xml文件

在resources目录下,新建SqlMapConfig.xml文件

SqlMapConfig.xml文件中的代码如下所示:

 

步骤四:新建TestSqlSession测试类

新建类TestSqlSession,如下所示:

步骤五:运行TestSqlSession测试

在TestSqlSession右键运行测试所示:

输出结果:

 

2 实现对Dept表的CRUD操作案例

2.1 问题

如何使用SqlSession对象数据表进行增加、删除、修改和查询操作?

2.2 方案

首先根据数据表编写实体类,然后编写Mapper映射文件,将SQL语句写在Mapper映射文件中,最后利用SqlSession对象提供的方法进行操作。

2.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:新建Dept实体类

Dept类文件中的代码如下所示:

 

步骤二:新建DeptMapper类和Dept.xml

新建DeptMapper类

新建Dept.xml映射文件

 

步骤三:修改SqlMapConfig.xml文件

修改SqlMapConfig.xml文件

添加以下配置

 

步骤四:新建MybatisTest类

新建类MybatisTest,代码如下:

 

步骤五:运行MybatisTest测试

在MybatisTest类中的方法testInsert运行测试

查看数据库表,新增加一条记录说明测试成功

 

步骤六:修改DeptMapper接口和Dept.xml

其他的类似往里面加配置,这些配置需要一一对应。

DeptMapper接口加入以下代码:

Dept.xml映射文件加入以下配置:

在MybatisTest中添加以下测试代码

 

3 实现对Dept表的分页查询操作案例

3.1 问题

当数据表记录很多时,需要将记录分页查询显示,那么在MyBatis中该如何实现呢?

3.2 方案

MyBatis提供了一个RowBounds类型,在查询时指定RowBounds参数对象可以控制抓取记录的起点和数量。

3.3 步骤

实现此案例需要按照如下步骤进行。

在MybatisTest测试类中,新增一个测试分页的方法

通过查询全部的方法,得出以下数据

通过分页查询,从第2条开始,页数为2

 

4 实现对Dept表的Map类型查询操作案例

4.1 问题

如何将查询结果以Map结构返回?

4.2 方案

在Mapper映射文件中,定义SQL查询语句时,将ResultType返回类型属性指定成java.util.HashMap。

4.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:修改Dept.xml

Dept.xml映射文件加入以下配置:

 

步骤二:新建MybatisTest类

在MybatisTest测试类中,新增一个测试返回map对象的方法

 

5 使用Mapper对Dept表操作案例

5.1 问题

如何使用Mapper接口对数据表操作。

5.2 方案

首先根据Mapper映射描述文件编写一个Mapper接口,接口方法名和SQL映射描述定义的id属性保持一致。

然后利用SqlSession提供的getMapper(..)方法,会自动返回一个Mapper接口实例。

5.3 步骤

实现此案例需要按照如下步骤进行。

在MybatisTest测试类中添加以下方法

 

6 利用ResultMap自定义映射案例

6.1 问题

当实体类属性和数据表字段名不一致时,该如何将查询结果映射成Bean对象。

6.2 方案

在Mapper映射描述文件中,利用<resultMap>元素可以指定字段值和属性之间的对应关系。

6.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:新建Dept1实体类

新建实体类Dept1:

 

步骤二:修改Dept.xml

Dept.xml映射文件加入配置:

在DeptMapper中添加以下测试方法

 

步骤三:新建测试方法

新建方法如下:

同样实现了查询全部的功能。

详细的代码请参考:mybatis-base

参考文章:

【1】Mybatis入门






如果您认为本教程质量不错,读后觉得收获很大,预期工资能蹭蹭蹭的往上涨,那么不妨小额赞助我一下,让我有动力继续写出高质量的教程。

发布者

souvc

souvc

搜你所想,投你所好。

发表评论