> 文档中心 > 全网最详细的零基础动态web项目集成mybatis框架实现增删改查系统(案例+源码)

全网最详细的零基础动态web项目集成mybatis框架实现增删改查系统(案例+源码)

文章目录

  • 环境准备
  • 问题分析
  • 实现
    • 创建数据库、数据表、添加测试数据
      • 打开mysql服务
      • 连接mysql并创建数据库
      • 根据设计创建数据表
      • 添加测试数据
      • 导出数据库脚本
    • 项目实现
      • 创建动态web项目
      • 配置mybatis
      • 根据数据表创建实体类
      • 生成实体类中的封装方法
      • 生成toString方法
    • 接口编写
      • 映射文件编写
      • 测试实现的接口

环境准备

此系统使用的环境为

  1. Eclipse
  2. jdk1.8
  3. .mysql数据库
  4. tomcat 8 .5
  5. 数据库工具:navicat

环境不会配置的请挪步到我的另一篇文章
eclipse离线搭建maven项目,配置本地仓库,并创建mybatis项目

问题分析

本案例将针对商品系统中的数据库 db_goods 中的商品表 tb_goods 做一个详细的展示,该表设计如下:

字段 类型 长度 非空 说明
id int 11 主键、自增
name varchar 32 商品名称
price decimal (6,2) 商品价格
store_number int 5 商品库存
goods_type varchar 6 商品类型(实物,虚拟交易物品)
in_time datetime 商品入库时间

在本案例中,将针对该数据表实现增删改查。

实现

创建数据库、数据表、添加测试数据

打开mysql服务

方式1.使用指令打开mysql服务

net start mysql

方式2.从任务管理器中打开(适合小白)
打开任务管理,找到服务选项,往下一直划,找到mysql服务,如果状态显示停止,则右键该服务选择运行。
在这里插入图片描述

连接mysql并创建数据库

服务打开后,使用navicat软件进行连接。
在这里插入图片描述

从问题分析中,我们分析出,数据库名为db_goods,表名为tb_goods。
使用navicat软件创建数据库
在这里插入图片描述
输入数据库名,选择编码和排序规则。

在这里插入图片描述
创建完成后即在数据库列表栏多了一个数据库。
在这里插入图片描述

根据设计创建数据表

双击打开前面创建的数据db_goods。打开后颜色会发生变化,不再是灰色。然后右键选择新建表。
在这里插入图片描述
根据表的设计规则输入表的设计信息。其中id字段需要添加主键和自动递增两个设置。
在这里插入图片描述
表格设计完成,点击保存,在弹出的输入框内输入表名tb_goods(从问题中抽取出来的)。
全网最详细的零基础动态web项目集成mybatis框架实现增删改查系统(案例+源码)
点击确定后,该数据库内就会多出一个表。
全网最详细的零基础动态web项目集成mybatis框架实现增删改查系统(案例+源码)

添加测试数据

双击该tb_goods数据表进入该表的预览页面。点击面板下方的添加符号即可进行数据的添加。
在这里插入图片描述
备注:在录入数据时,由于id字段是自增的,所以不需要再该列输入值。

导出数据库脚本

当数据添加完成后,可以通过可视化操作导出数据库脚本。右键点击需要导出的数据库,选择转储SQL文件,类型为结构和数据。
在这里插入图片描述
存储位置选择桌面即可。
在这里插入图片描述
导出数据库的目的是为了保存当前设计的表和存储的数据内容。下次需要时可以将该脚本导入到数据库之中,即可使用。

项目实现

创建动态web项目

打开Eclipse,点击左上角的工具栏,找到File选项。找到Dynamic Web Project选项进行创建。
在这里插入图片描述
如果没有该选项,则找到最后一个Other选项。
在这里插入图片描述
在弹出框中先找到web目录进行展开,即可找到Dynamic Web Project选项了。
在这里插入图片描述
然后点击Next选项。
在弹出框内输入项目名即可。当然,其他那些默认配置有需要的请自行更改。
在这里插入图片描述
项目创建成功后,目录结构如下图所示。
在这里插入图片描述
项目创建完成后,导入此次案例需要的jar包。每个jar包对应的介绍如下

jar包 说明
mysql-connector-java-5.1.14.jar mysql连接的jar包
mybatis-3.4.6.jar mybatis数据库框架所依赖的jar包
jstl-1.2.jar jstl标签库,jsp页面中使用
standard-1.1.2.jar 标准库,配合jstl标签库使用

将上述四个标签库添加至项目依赖目录,即WebContent目录下Web-Info内的lib文件夹下。
在这里插入图片描述
初次复制进来,需要右键选中这些标签,然后选择Build Path 选择Add to Build Path。将这些jar包添加至项目构建路径。否则是无法在项目中生效的。

配置mybatis

在项目的src目录下创建mybaits-config.xml文件。
在这里插入图片描述
其配置内容如下:

其中主要记清楚两个包和mysql连接池的配置信息即可。
根据配置文件创建对应的包。
在这里插入图片描述
如上述结构即可。

根据数据表创建实体类

在pojo包下创建的对应的实体类。
类名命名规则一般为数据表前缀去掉,后续单词首字母大写,如有下划线的也去掉,下划线后的首字母大写。遵循驼峰式命名规则。
如tb_goods 的实体类名为Goods
在这里插入图片描述
像这种简单的案例的话,属性名保持和字段名一致即可。但是要注意数据类型兼容。
正常来说 decimal 对应double int 对应int 其他用String基本都可以实现兼容,但是不建议全使用String。

生成实体类中的封装方法

先生成setter和getter方法。
在这里插入图片描述

在这里插入图片描述
选下方的Generate按钮即可生成。
效果图如下。
在这里插入图片描述

生成toString方法

在这里插入图片描述
在这里插入图片描述
效果图如下
在这里插入图片描述
到这一步,实体类即创建完成。

接口编写

根据mybatis-config.xml配置文件所述,映射文件应该写在com.lvan.mapper包内,注意是使用的package标签才能声明扫描范围为包。如果使用mapper标签则需要指定到对应的mapper.xml文件
在这里插入图片描述
在mapper包下,创建一个接口文件。
全网最详细的零基础动态web项目集成mybatis框架实现增删改查系统(案例+源码)
接口文件的名字为实体类名后跟Mapper 如下:
在这里插入图片描述
即在该接口文件中声明好要实现的方法即可。
根据需求,本案例中需要实现对商品表的增删改查。因此查询商品声明的接口如下:
在这里插入图片描述
下述是接口示例:

  1. 查询商品 根据关键词进行搜索,如果查询的内容为空字符,那么就为全部查询
List query(@Param("key")String key);
  1. 更新商品 更新商品的话使用实体类对象进行更新,即该实体类对象有哪些属性就更改表的哪些字段
int updateGoods(Goods goods);
  1. 添加商品 添加商品也是要实体类对象进行添加,sql语句中使用对象的属性进行取值
int addGoods(Goods goods);
  1. 删除商品 删除商品是根据id进行删除,即删除指定编号的那条数据记录
int deleteGoods(@Param("id")String id);
  1. 根据id获取对应的实体对象,编辑商品时可以回显商品信息到页面
Goods getGoodsById(@Param("id")String id);

代码结构如下:
在这里插入图片描述
也即是上述接口声明完成后,基本可以实现对商品表的管理了。

映射文件编写

在上面的教程中,已根据案例所需编写了对应的接口。本节的内容是对上述接口进行一一实现。

  1. 创建接口对应的映射文件,后缀名是.xml
    其内容大致如下:

注意:该文件名需要与接口文件名保持一致,否则会出现无法匹配等问题。
2. 绑定命名空间
需要保持接口文件和映射文件的文件名一致,可以理解为穿情侣装。
在这里插入图片描述
3. 实现接口
查询接口的实现
在这里插入图片描述
实现代码如下:

select * from tb_goods where name like concat('%',#{key},'%')

更新接口的实现
在这里插入图片描述
更新接口的代码如下:

update tb_goods setname=#{name},price=#{price},store_number=#{store_number},goods_type=#{goods_type},in_time=#{in_time},id=#{id}where id=#{id}

添加接口的实现
在这里插入图片描述
具体的实现代码如下:

insert int tb_goods(name,price,store_number,goods_type,in_time)values (#{name},#{price},#{store_number},#{goods_type},now())
  1. 删除接口实现
    在这里插入图片描述
    实现代码如下:
delete from tb_goods where id=#{id}
  1. 根据id获取指定商品接口实现在这里插入图片描述
    代码实现如下:
select * from tb_goods where id=#{id}

测试实现的接口

  1. 编写SqlUtil工具包
    创建com.lvan.util包 并创建测试类
    在这里插入图片描述
  2. 编写测试所需的工具类
    在这里插入图片描述
    实现代码如下:
package com.lvan.util;import java.io.Reader;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;public class SqlUtil {//1.声明静态的SqlSession对象 用于获取mysql连接public static SqlSession sqlSession;static {try {//2.读取mybatis配置文件 Reader reader=Resources.getResourceAsReader("mybatis-config.xml");//3.根据配置对象生成对应的工厂对象 SqlSessionFactory sf=new SqlSessionFactoryBuilder().build(reader);//4.打开连接sqlSession=sf.openSession();} catch (Exception e) {e.printStackTrace();}}public static void main(String[] args) {System.out.println(sqlSession);}}
  1. 编写测试用例
    创建测试包,编写测试类
    在这里插入图片描述
    测试查询所有商品对象
    在这里插入图片描述
package com.lvan.test;import java.util.List;import com.lvan.mapper.GoodsMapper;import com.lvan.pojo.Goods;import com.lvan.util.SqlUtil;public class Test {public static void main(String[] args) {//获取接口对象 代理对象GoodsMapper goodsMapper=SqlUtil.sqlSession.getMapper(GoodsMapper.class);List goods=goodsMapper.query("");//传递空值 查询所有System.out.println("查询全部:"+goods);}}

运行截图如下:
全网最详细的零基础动态web项目集成mybatis框架实现增删改查系统(案例+源码)
搜索功能测试用例如下:

GoodsMapper goodsMapper=SqlUtil.sqlSession.getMapper(GoodsMapper.class);List goods=goodsMapper.query("Q");//传递空值 查询所有System.out.println("关键词查询:"+goods);

运行结果如下:
全网最详细的零基础动态web项目集成mybatis框架实现增删改查系统(案例+源码)
其他功能便不再测试,各位看官自行根据接口需求编写测试用例。

素描网