### 环境说明 本案例已经完成了基础环境的搭建,只需要大家导入day09-springboot-mybatis-dish模块,执行tb_dish.sql文件中的SQL创建数据库和表,打开application.properties配置文件,修改连接数据库的相关参数(==密码==)即可 ### 需求说明 #### 1、完成查询所有的功能 > 步骤一:在resources中定义和DishMapper接口对应的映射配置文件,注意映射配置文件和mapper接口的对应关系。 > > 步骤二:在映射配置文件中给selectAll方法配置SQL语句 > > 步骤三:在Day09SpringbootMybatisDishApplicationTests的testSelectAll方法中调用dishMapper的selectAll方法测试 #### 2、完成根据id查询,新增,根据id修改,根据id删除这四个需求 > 参考上面的步骤二和步骤三 #### 3、完成根据菜品名称(name)、菜品码(code)动态查询菜品信息 > 参考上面的步骤二和步骤三 > > 提示:动态SQL需要使用<where>和<if>标签,搜索需要使用模糊查询。 #### 4、完成根据id批量删除菜品 > 参考上面的步骤二和步骤三 > > 提示:动态SQL需要使用foreach标签遍历,遍历数组注意占位符的名称。

时间: 2023-06-26 17:06:44 浏览: 63
好的,对于这个需求我会逐一进行讲解和操作演示。 1. 查询所有菜品 首先,我们需要在 resources 目录下创建一个名为 `DishMapper.xml` 的文件,用于编写对应的 SQL 语句。 在 `DishMapper.xml` 文件中,我们需要定义一个 `<select>` 标签,用于查询所有的菜品信息。具体代码如下: ```xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.example.demo.mapper.DishMapper"> <select id="selectAll" resultType="com.example.demo.entity.Dish"> select * from tb_dish </select> </mapper> ``` 其中,`namespace` 属性应该填写对应的 `DishMapper` 接口的全限定名,`resultType` 属性应该填写对应实体类的全限定名。 接着,我们需要在 `DishMapper` 接口中添加一个方法,用于调用上面定义的 SQL 语句。具体代码如下: ```java public interface DishMapper { // 查询所有菜品 List<Dish> selectAll(); } ``` 最后,在 `Day09SpringbootMybatisDishApplicationTests` 类中,我们需要编写一个测试方法,用于测试查询所有菜品的功能。具体代码如下: ```java @SpringBootTest class Day09SpringbootMybatisDishApplicationTests { @Autowired private DishMapper dishMapper; @Test void testSelectAll() { List<Dish> dishes = dishMapper.selectAll(); for (Dish dish : dishes) { System.out.println(dish); } } } ``` 2. 根据 id 查询、新增、修改和删除菜品 对于这些操作,我们只需要在 `DishMapper.xml` 文件中分别定义对应的 SQL 语句,然后在 `DishMapper` 接口中分别添加对应的方法即可,具体代码如下: ```xml <!-- 根据 id 查询菜品 --> <select id="selectById" parameterType="int" resultType="com.example.demo.entity.Dish"> select * from tb_dish where id = #{id} </select> <!-- 新增菜品 --> <insert id="insert" parameterType="com.example.demo.entity.Dish"> insert into tb_dish(name, code, price) values(#{name}, #{code}, #{price}) </insert> <!-- 根据 id 修改菜品 --> <update id="updateById" parameterType="com.example.demo.entity.Dish"> update tb_dish set name = #{name}, code = #{code}, price = #{price} where id = #{id} </update> <!-- 根据 id 删除菜品 --> <delete id="deleteById" parameterType="int"> delete from tb_dish where id = #{id} </delete> ``` ```java public interface DishMapper { // 查询所有菜品 List<Dish> selectAll(); // 根据 id 查询菜品 Dish selectById(int id); // 新增菜品 int insert(Dish dish); // 根据 id 修改菜品 int updateById(Dish dish); // 根据 id 删除菜品 int deleteById(int id); } ``` 3. 根据菜品名称和菜品码动态查询菜品信息 对于这个需求,我们需要在 `DishMapper.xml` 文件中定义一个包含 `<where>` 和 `<if>` 标签的动态 SQL 语句。具体代码如下: ```xml <select id="selectByCondition" resultType="com.example.demo.entity.Dish"> select * from tb_dish <where> <if test="name != null and name != ''"> and name like concat('%', #{name}, '%') </if> <if test="code != null and code != ''"> and code like concat('%', #{code}, '%') </if> </where> </select> ``` 其中,`<where>` 标签用于将所有的条件组合成一个完整的查询条件,并自动去掉其中的无效条件;`<if>` 标签用于判断当前条件是否有效,如果有效就拼接到查询条件中。 接着,我们需要在 `DishMapper` 接口中添加一个方法,用于调用上面定义的 SQL 语句。具体代码如下: ```java public interface DishMapper { // 查询所有菜品 List<Dish> selectAll(); // 根据 id 查询菜品 Dish selectById(int id); // 新增菜品 int insert(Dish dish); // 根据 id 修改菜品 int updateById(Dish dish); // 根据 id 删除菜品 int deleteById(int id); // 根据菜品名称和菜品码动态查询菜品信息 List<Dish> selectByCondition(String name, String code); } ``` 最后,在 `Day09SpringbootMybatisDishApplicationTests` 类中,我们需要编写一个测试方法,用于测试根据菜品名称和菜品码动态查询菜品信息的功能。具体代码如下: ```java @Test void testSelectByCondition() { List<Dish> dishes = dishMapper.selectByCondition("宫保鸡丁", null); for (Dish dish : dishes) { System.out.println(dish); } } ``` 4. 根据 id 批量删除菜品 对于这个需求,我们需要在 `DishMapper.xml` 文件中定义一个包含 `<foreach>` 标签的动态 SQL 语句。具体代码如下: ```xml <delete id="batchDeleteByIds"> delete from tb_dish where id in <foreach collection="ids" item="id" separator="," open="(" close=")"> #{id} </foreach> </delete> ``` 其中,`<foreach>` 标签用于遍历指定的数组,并将其转换为逗号分隔的字符串,并在 SQL 语句中使用。 接着,我们需要在 `DishMapper` 接口中添加一个方法,用于调用上面定义的 SQL 语句。具体代码如下: ```java public interface DishMapper { // 查询所有菜品 List<Dish> selectAll(); // 根据 id 查询菜品 Dish selectById(int id); // 新增菜品 int insert(Dish dish); // 根据 id 修改菜品 int updateById(Dish dish); // 根据 id 删除菜品 int deleteById(int id); // 根据菜品名称和菜品码动态查询菜品信息 List<Dish> selectByCondition(String name, String code); // 根据 id 批量删除菜品 int batchDeleteByIds(int[] ids); } ``` 最后,在 `Day09SpringbootMybatisDishApplicationTests` 类中,我们需要编写一个测试方法,用于测试根据 id 批量删除菜品的功能。具体代码如下: ```java @Test void testBatchDeleteByIds() { int[] ids = new int[]{1, 2, 3}; int rows = dishMapper.batchDeleteByIds(ids); System.out.println("删除了 " + rows + " 条记录"); } ``` 好了,以上就是对于这个需求的详细讲解和操作演示。希望对你有所帮助!

相关推荐

最新推荐

recommend-type

springboot整合mybatis-plus逆向工程的实现

主要介绍了springboot整合mybatis-plus逆向工程的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
recommend-type

SpringBoot整合mybatis-plus实现多数据源的动态切换且支持分页查询.pdf

SpringBoot整合mybatis-plus实现多数据源的动态切换且支持分页查询,案例以postgresql和oracle数据库为数据源,分别使用mybatis-plus分页插件和pagehelper分页插件实现分页查询。
recommend-type

springboot集成mybatis-plus遇到的问题及解决方法

主要介绍了springboot集成mybatis-plus遇到的问题及解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
recommend-type

解决mybatis-plus3.1.1版本使用lambda表达式查询报错的方法

主要介绍了解决mybatis-plus3.1.1版本使用lambda表达式查询报错的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
recommend-type

MyBatis-Plus 快速入门案例(小白教程)

主要介绍了MyBatis-Plus 快速入门案例(小白教程),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

【实战演练】增量式PID的simulink仿真实现

# 2.1 Simulink仿真环境简介 Simulink是MATLAB中用于建模、仿真和分析动态系统的图形化环境。它提供了一个直观的用户界面,允许用户使用块和连接线来创建系统模型。Simulink模型由以下元素组成: - **子系统:**将复杂系统分解成更小的、可管理的模块。 - **块:**代表系统中的组件,如传感器、执行器和控制器。 - **连接线:**表示信号在块之间的流动。 Simulink仿真环境提供了广泛的块库,涵盖了各种工程学科,包括控制系统、电子和机械工程。它还支持用户自定义块的创建,以满足特定仿真需求。 # 2. Simulink仿真环境的搭建和建模 ### 2.
recommend-type

训练集和测试集的准确率都99%,但是预测效果不好

即使训练集和测试集的准确率都很高,但是在实际的预测中表现不佳,可能会有以下几个原因: 1. 数据质量问题:模型训练和测试的数据可能存在问题,比如数据标签错误、数据集采样不均衡、数据集中存在异常值等问题,这些问题可能会导致模型在实际预测中表现不佳。 2. 特征工程问题:模型的特征工程可能存在问题,导致模型无法很好地捕捉数据的特征,从而影响预测效果。 3. 模型选择问题:模型的选择可能不合适,比如选择的模型太简单,无法很好地拟合数据,或者选择的模型太复杂,导致过拟合等问题。 4. 超参数调整问题:模型的超参数可能没有调整到最佳状态,需要进行调整。 针对以上可能的原因,可以采取相应的措施进
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。