【瑞吉外卖】day04:员工分页查询、启用/禁用员工账号、编辑员工信息(二)

简介: 员工分页查询、启用/禁用员工账号、编辑员工信息

4.3 代码实现


在开发代码之前,需要梳理一下整个程序的执行过程:

1). 页面发送ajax请求,将参数(id、status)提交到服务端

2). 服务端Controller接收页面提交的数据并调用Service更新数据

3). Service调用Mapper操作数据库

启用、禁用员工账号,本质上就是一个更新操作,也就是对status状态字段进行操作。在Controller中创建update方法,此方法是一个通用的修改员工信息的方法。

<span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#aa5500">/**</span>
 <span style="color:#aa5500">* 根据id修改员工信息</span>
 <span style="color:#aa5500">* @param employee</span>
 <span style="color:#aa5500">* @return</span>
 <span style="color:#aa5500">*/</span>
<span style="color:#555555">@PutMapping</span>
<span style="color:#770088">public</span> <span style="color:#000000">R</span><span style="color:#981a1a"><</span><span style="color:#008855">String</span><span style="color:#981a1a">></span> <span style="color:#0000ff">update</span>(<span style="color:#000000">HttpServletRequest</span> <span style="color:#000000">request</span>,<span style="color:#555555">@RequestBody</span> <span style="color:#000000">Employee</span> <span style="color:#000000">employee</span>){
    <span style="color:#000000">log</span>.<span style="color:#000000">info</span>(<span style="color:#000000">employee</span>.<span style="color:#000000">toString</span>());
    <span style="color:#008855">Long</span> <span style="color:#000000">empId</span> <span style="color:#981a1a">=</span> (<span style="color:#008855">Long</span>)<span style="color:#000000">request</span>.<span style="color:#000000">getSession</span>().<span style="color:#000000">getAttribute</span>(<span style="color:#aa1111">"employee"</span>);
    <span style="color:#000000">employee</span>.<span style="color:#000000">setUpdateTime</span>(<span style="color:#000000">LocalDateTime</span>.<span style="color:#000000">now</span>());
    <span style="color:#000000">employee</span>.<span style="color:#000000">setUpdateUser</span>(<span style="color:#000000">empId</span>);
    <span style="color:#000000">employeeService</span>.<span style="color:#000000">updateById</span>(<span style="color:#000000">employee</span>);
    <span style="color:#770088">return</span> <span style="color:#000000">R</span>.<span style="color:#000000">success</span>(<span style="color:#aa1111">"员工信息修改成功"</span>);
}</span></span>

4.4 功能测试


代码编写完毕之后,我们需要将工程重启。 然后访问前端页面, 进行 "启用" 或 "禁用" 的测试。

image.png

测试过程中没有报错,但是功能并没有实现,查看数据库中的数据也没有变化。但是从控制台输出的日志, 可以看出确实没有更新成功。

image.png

4.5 代码修复


4.5.1 原因分析


image.png

通过观察控制台输出的SQL发现页面传递过来的员工id的值和数据库中的id值不一致,这是怎么回事呢?

在分页查询时,服务端会将返回的R对象进行json序列化,转换为json格式的数据,而员工的ID是一个Long类型的数据,而且是一个长度为 19 位的长整型数据, 该数据返回给前端是没有问题的。

image.png

那么具体的问题出现在哪儿呢?

问题实际上, 就出现在前端JS中, js在对长度较长的长整型数据进行处理时, 会损失精度, 从而导致提交的id和数据库中的id不一致。 这里,我们也可以做一个简单的测试,代码如下:

<span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#555555"><!DOCTYPE html></span>
<span style="color:#117700"><</span><span style="color:#117700">html</span> <span style="color:#0000cc">lang</span>=<span style="color:#aa1111">"en"</span><span style="color:#117700">></span>
<span style="color:#117700"><</span><span style="color:#117700">head</span><span style="color:#117700">></span>
    <span style="color:#117700"><</span><span style="color:#117700">meta</span> <span style="color:#0000cc">charset</span>=<span style="color:#aa1111">"UTF-8"</span><span style="color:#117700">></span>
    <span style="color:#117700"><</span><span style="color:#117700">title</span><span style="color:#117700">></span>Title<span style="color:#117700"></</span><span style="color:#117700">title</span><span style="color:#117700">></span>
    <span style="color:#117700"><</span><span style="color:#117700">script</span><span style="color:#117700">></span>
        <span style="color:#000000">alert</span>(<span style="color:#116644">1420038345634918401</span>);
    <span style="color:#117700"></</span><span style="color:#117700">script</span><span style="color:#117700">></span>
<span style="color:#117700"></</span><span style="color:#117700">head</span><span style="color:#117700">></span>
<span style="color:#117700"><</span><span style="color:#117700">body</span><span style="color:#117700">></span>
<span style="color:#117700"></</span><span style="color:#117700">body</span><span style="color:#117700">></span>
<span style="color:#117700"></</span><span style="color:#117700">html</span><span style="color:#117700">></span></span></span>

4.5.2 解决方案


要想解决这个问题,也很简单,我们只需要让js处理的ID数据类型为字符串类型即可, 这样就不会损失精度了。同样, 大家也可以做一个测试:

<span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#555555"><!DOCTYPE html></span>
<span style="color:#117700"><</span><span style="color:#117700">html</span> <span style="color:#0000cc">lang</span>=<span style="color:#aa1111">"en"</span><span style="color:#117700">></span>
<span style="color:#117700"><</span><span style="color:#117700">head</span><span style="color:#117700">></span>
    <span style="color:#117700"><</span><span style="color:#117700">meta</span> <span style="color:#0000cc">charset</span>=<span style="color:#aa1111">"UTF-8"</span><span style="color:#117700">></span>
    <span style="color:#117700"><</span><span style="color:#117700">title</span><span style="color:#117700">></span>Title<span style="color:#117700"></</span><span style="color:#117700">title</span><span style="color:#117700">></span>
    <span style="color:#117700"><</span><span style="color:#117700">script</span><span style="color:#117700">></span>
        <span style="color:#000000">alert</span>(<span style="color:#aa1111">"1420038345634918401"</span>);
    <span style="color:#117700"></</span><span style="color:#117700">script</span><span style="color:#117700">></span>
<span style="color:#117700"></</span><span style="color:#117700">head</span><span style="color:#117700">></span>
<span style="color:#117700"><</span><span style="color:#117700">body</span><span style="color:#117700">></span>
<span style="color:#117700"></</span><span style="color:#117700">body</span><span style="color:#117700">></span>
<span style="color:#117700"></</span><span style="color:#117700">html</span><span style="color:#117700">></span></span></span>

那么在我们的业务中, 我们只需要让分页查询返回的json格式数据库中, long类型的属性, 不直接转换为数字类型, 转换为字符串类型就可以解决这个问题了 , 最终返回的结果为 :

image.png

4.5.3 代码修复


由于在SpringMVC中, 将Controller方法返回值转换为json对象, 是通过jackson来实现的, 涉及到SpringMVC中的一个消息转换器

MappingJackson2HttpMessageConverter, 所以我们要解决这个问题, 就需要对该消息转换器的功能进行拓展。

具体实现步骤:

1). 提供对象转换器JacksonObjectMapper,基于Jackson进行Java对象到json数据的转换(资料中已经提供,直接复制到项目中使用)

2). 在WebMvcConfig配置类中扩展Spring mvc的消息转换器,在此消息转换器中使用提供的对象转换器进行Java对象到json数据的转换

1). 引入JacksonObjectMapper

<span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#770088">import</span> <span style="color:#000000">com</span>.<span style="color:#000000">fasterxml</span>.<span style="color:#000000">jackson</span>.<span style="color:#000000">databind</span>.<span style="color:#000000">DeserializationFeature</span>;
<span style="color:#770088">import</span> <span style="color:#000000">com</span>.<span style="color:#000000">fasterxml</span>.<span style="color:#000000">jackson</span>.<span style="color:#000000">databind</span>.<span style="color:#000000">ObjectMapper</span>;
<span style="color:#770088">import</span> <span style="color:#000000">com</span>.<span style="color:#000000">fasterxml</span>.<span style="color:#000000">jackson</span>.<span style="color:#000000">databind</span>.<span style="color:#000000">module</span>.<span style="color:#000000">SimpleModule</span>;
<span style="color:#770088">import</span> <span style="color:#000000">com</span>.<span style="color:#000000">fasterxml</span>.<span style="color:#000000">jackson</span>.<span style="color:#000000">databind</span>.<span style="color:#000000">ser</span>.<span style="color:#000000">std</span>.<span style="color:#000000">ToStringSerializer</span>;
<span style="color:#770088">import</span> <span style="color:#000000">com</span>.<span style="color:#000000">fasterxml</span>.<span style="color:#000000">jackson</span>.<span style="color:#000000">datatype</span>.<span style="color:#000000">jsr310</span>.<span style="color:#000000">deser</span>.<span style="color:#000000">LocalDateDeserializer</span>;
<span style="color:#770088">import</span> <span style="color:#000000">com</span>.<span style="color:#000000">fasterxml</span>.<span style="color:#000000">jackson</span>.<span style="color:#000000">datatype</span>.<span style="color:#000000">jsr310</span>.<span style="color:#000000">deser</span>.<span style="color:#000000">LocalDateTimeDeserializer</span>;
<span style="color:#770088">import</span> <span style="color:#000000">com</span>.<span style="color:#000000">fasterxml</span>.<span style="color:#000000">jackson</span>.<span style="color:#000000">datatype</span>.<span style="color:#000000">jsr310</span>.<span style="color:#000000">deser</span>.<span style="color:#000000">LocalTimeDeserializer</span>;
<span style="color:#770088">import</span> <span style="color:#000000">com</span>.<span style="color:#000000">fasterxml</span>.<span style="color:#000000">jackson</span>.<span style="color:#000000">datatype</span>.<span style="color:#000000">jsr310</span>.<span style="color:#000000">ser</span>.<span style="color:#000000">LocalDateSerializer</span>;
<span style="color:#770088">import</span> <span style="color:#000000">com</span>.<span style="color:#000000">fasterxml</span>.<span style="color:#000000">jackson</span>.<span style="color:#000000">datatype</span>.<span style="color:#000000">jsr310</span>.<span style="color:#000000">ser</span>.<span style="color:#000000">LocalDateTimeSerializer</span>;
<span style="color:#770088">import</span> <span style="color:#000000">com</span>.<span style="color:#000000">fasterxml</span>.<span style="color:#000000">jackson</span>.<span style="color:#000000">datatype</span>.<span style="color:#000000">jsr310</span>.<span style="color:#000000">ser</span>.<span style="color:#000000">LocalTimeSerializer</span>;
<span style="color:#770088">import</span> <span style="color:#000000">java</span>.<span style="color:#000000">math</span>.<span style="color:#000000">BigInteger</span>;
<span style="color:#770088">import</span> <span style="color:#000000">java</span>.<span style="color:#000000">time</span>.<span style="color:#000000">LocalDate</span>;
<span style="color:#770088">import</span> <span style="color:#000000">java</span>.<span style="color:#000000">time</span>.<span style="color:#000000">LocalDateTime</span>;
<span style="color:#770088">import</span> <span style="color:#000000">java</span>.<span style="color:#000000">time</span>.<span style="color:#000000">LocalTime</span>;
<span style="color:#770088">import</span> <span style="color:#000000">java</span>.<span style="color:#000000">time</span>.<span style="color:#000000">format</span>.<span style="color:#000000">DateTimeFormatter</span>;
<span style="color:#770088">import</span> <span style="color:#770088">static</span> <span style="color:#000000">com</span>.<span style="color:#000000">fasterxml</span>.<span style="color:#000000">jackson</span>.<span style="color:#000000">databind</span>.<span style="color:#000000">DeserializationFeature</span>.<span style="color:#000000">FAIL_ON_UNKNOWN_PROPERTIES</span>;
<span style="color:#aa5500">/**</span>
 <span style="color:#aa5500">* 对象映射器:基于jackson将Java对象转为json,或者将json转为Java对象</span>
 <span style="color:#aa5500">* 将JSON解析为Java对象的过程称为 [从JSON反序列化Java对象]</span>
 <span style="color:#aa5500">* 从Java对象生成JSON的过程称为 [序列化Java对象到JSON]</span>
 <span style="color:#aa5500">*/</span>
<span style="color:#770088">public</span> <span style="color:#770088">class</span> <span style="color:#0000ff">JacksonObjectMapper</span> <span style="color:#770088">extends</span> <span style="color:#000000">ObjectMapper</span> {
    <span style="color:#770088">public</span> <span style="color:#770088">static</span> <span style="color:#770088">final</span> <span style="color:#008855">String</span> <span style="color:#000000">DEFAULT_DATE_FORMAT</span> <span style="color:#981a1a">=</span> <span style="color:#aa1111">"yyyy-MM-dd"</span>;
    <span style="color:#770088">public</span> <span style="color:#770088">static</span> <span style="color:#770088">final</span> <span style="color:#008855">String</span> <span style="color:#000000">DEFAULT_DATE_TIME_FORMAT</span> <span style="color:#981a1a">=</span> <span style="color:#aa1111">"yyyy-MM-dd HH:mm:ss"</span>;
    <span style="color:#770088">public</span> <span style="color:#770088">static</span> <span style="color:#770088">final</span> <span style="color:#008855">String</span> <span style="color:#000000">DEFAULT_TIME_FORMAT</span> <span style="color:#981a1a">=</span> <span style="color:#aa1111">"HH:mm:ss"</span>;
    <span style="color:#770088">public</span> <span style="color:#000000">JacksonObjectMapper</span>() {
        <span style="color:#770088">super</span>();
        <span style="color:#aa5500">//收到未知属性时不报异常</span>
        <span style="color:#770088">this</span>.<span style="color:#000000">configure</span>(<span style="color:#000000">FAIL_ON_UNKNOWN_PROPERTIES</span>, <span style="color:#221199">false</span>);
        <span style="color:#aa5500">//反序列化时,属性不存在的兼容处理</span>
        <span style="color:#770088">this</span>.<span style="color:#000000">getDeserializationConfig</span>().<span style="color:#000000">withoutFeatures</span>(<span style="color:#000000">DeserializationFeature</span>.<span style="color:#000000">FAIL_ON_UNKNOWN_PROPERTIES</span>);
        <span style="color:#000000">SimpleModule</span> <span style="color:#000000">simpleModule</span> <span style="color:#981a1a">=</span> <span style="color:#770088">new</span> <span style="color:#000000">SimpleModule</span>()
                .<span style="color:#000000">addDeserializer</span>(<span style="color:#000000">LocalDateTime</span>.<span style="color:#770088">class</span>, <span style="color:#770088">new</span> <span style="color:#000000">LocalDateTimeDeserializer</span>(<span style="color:#000000">DateTimeFormatter</span>.<span style="color:#000000">ofPattern</span>(<span style="color:#000000">DEFAULT_DATE_TIME_FORMAT</span>)))
                .<span style="color:#000000">addDeserializer</span>(<span style="color:#000000">LocalDate</span>.<span style="color:#770088">class</span>, <span style="color:#770088">new</span> <span style="color:#000000">LocalDateDeserializer</span>(<span style="color:#000000">DateTimeFormatter</span>.<span style="color:#000000">ofPattern</span>(<span style="color:#000000">DEFAULT_DATE_FORMAT</span>)))
                .<span style="color:#000000">addDeserializer</span>(<span style="color:#000000">LocalTime</span>.<span style="color:#770088">class</span>, <span style="color:#770088">new</span> <span style="color:#000000">LocalTimeDeserializer</span>(<span style="color:#000000">DateTimeFormatter</span>.<span style="color:#000000">ofPattern</span>(<span style="color:#000000">DEFAULT_TIME_FORMAT</span>)))
                .<span style="color:#000000">addSerializer</span>(<span style="color:#000000">BigInteger</span>.<span style="color:#770088">class</span>, <span style="color:#000000">ToStringSerializer</span>.<span style="color:#000000">instance</span>)
                .<span style="color:#000000">addSerializer</span>(<span style="color:#008855">Long</span>.<span style="color:#770088">class</span>, <span style="color:#000000">ToStringSerializer</span>.<span style="color:#000000">instance</span>)
                .<span style="color:#000000">addSerializer</span>(<span style="color:#000000">LocalDateTime</span>.<span style="color:#770088">class</span>, <span style="color:#770088">new</span> <span style="color:#000000">LocalDateTimeSerializer</span>(<span style="color:#000000">DateTimeFormatter</span>.<span style="color:#000000">ofPattern</span>(<span style="color:#000000">DEFAULT_DATE_TIME_FORMAT</span>)))
                .<span style="color:#000000">addSerializer</span>(<span style="color:#000000">LocalDate</span>.<span style="color:#770088">class</span>, <span style="color:#770088">new</span> <span style="color:#000000">LocalDateSerializer</span>(<span style="color:#000000">DateTimeFormatter</span>.<span style="color:#000000">ofPattern</span>(<span style="color:#000000">DEFAULT_DATE_FORMAT</span>)))
                .<span style="color:#000000">addSerializer</span>(<span style="color:#000000">LocalTime</span>.<span style="color:#770088">class</span>, <span style="color:#770088">new</span> <span style="color:#000000">LocalTimeSerializer</span>(<span style="color:#000000">DateTimeFormatter</span>.<span style="color:#000000">ofPattern</span>(<span style="color:#000000">DEFAULT_TIME_FORMAT</span>)));
        <span style="color:#aa5500">//注册功能模块 例如,可以添加自定义序列化器和反序列化器</span>
        <span style="color:#770088">this</span>.<span style="color:#000000">registerModule</span>(<span style="color:#000000">simpleModule</span>);
    }
}</span></span>

该自定义的对象转换器, 主要指定了, 在进行json数据序列化及反序列化时, LocalDateTime、LocalDate、LocalTime的处理方式, 以及BigInteger及Long类型数据,直接转换为字符串。

2). 在WebMvcConfig中重写方法extendMessageConverters

<span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#aa5500">/**</span>
 <span style="color:#aa5500">* 扩展mvc框架的消息转换器</span>
 <span style="color:#aa5500">* @param converters</span>
 <span style="color:#aa5500">*/</span>
<span style="color:#555555">@Override</span>
<span style="color:#770088">protected</span> <span style="color:#008855">void</span> <span style="color:#0000ff">extendMessageConverters</span>(<span style="color:#000000">List</span><span style="color:#981a1a"><</span><span style="color:#000000">HttpMessageConverter</span><span style="color:#981a1a"><?>></span> <span style="color:#000000">converters</span>) {
    <span style="color:#000000">log</span>.<span style="color:#000000">info</span>(<span style="color:#aa1111">"扩展消息转换器..."</span>);
    <span style="color:#aa5500">//创建消息转换器对象</span>
    <span style="color:#000000">MappingJackson2HttpMessageConverter</span> <span style="color:#000000">messageConverter</span> <span style="color:#981a1a">=</span> <span style="color:#770088">new</span> <span style="color:#000000">MappingJackson2HttpMessageConverter</span>();
    <span style="color:#aa5500">//设置对象转换器,底层使用Jackson将Java对象转为json</span>
    <span style="color:#000000">messageConverter</span>.<span style="color:#000000">setObjectMapper</span>(<span style="color:#770088">new</span> <span style="color:#000000">JacksonObjectMapper</span>());
    <span style="color:#aa5500">//将上面的消息转换器对象追加到mvc框架的转换器集合中</span>
    <span style="color:#000000">converters</span>.<span style="color:#000000">add</span>(<span style="color:#116644">0</span>,<span style="color:#000000">messageConverter</span>);
}</span></span>

5. 编辑员工信息


5.1 需求分析


在员工管理列表页面点击 "编辑" 按钮,跳转到编辑页面,在编辑页面回显员工信息并进行修改,最后点击 "保存" 按钮完成编辑操作。

image.png

那么从上述的分析中,我们可以看出当前实现的编辑功能,我们需要实现两个方法:

A. 根据ID查询, 用于页面数据回显

B. 保存修改

5.2 程序执行流程


在开发代码之前需要梳理一下操作过程和对应的程序的执行流程:

1). 点击编辑按钮时,页面跳转到add.html,并在url中携带参数[员工id]

image.png

2). 在add.html页面获取url中的参数[员工id]

3). 发送ajax请求,请求服务端,同时提交员工id参数

4). 服务端接收请求,根据员工id查询员工信息,将员工信息以json形式响应给页面

image.png

5). 页面接收服务端响应的json数据,通过VUE的数据绑定进行员工信息回显

6). 点击保存按钮,发送ajax请求,将页面中的员工信息以json方式提交给服务端

7). 服务端接收员工信息,并进行处理,完成后给页面响应

8). 页面接收到服务端响应信息后进行相应处理

image.png

注意:add.html页面为公共页面,新增员工和编辑员工都是在此页面操作

5.3 代码实现


5.3.1 根据ID查询


经过上述的分析,我们看到,在根据ID查询员工信息时,请求信息如下:

请求 说明
请求方式 GET
请求路径 /employee/{id}

代码实现:

在EmployeeController中增加方法, 根据ID查询员工信息。

<span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#aa5500">/**</span>
 <span style="color:#aa5500">* 根据id查询员工信息</span>
 <span style="color:#aa5500">* @param id</span>
 <span style="color:#aa5500">* @return</span>
 <span style="color:#aa5500">*/</span>
<span style="color:#555555">@GetMapping</span>(<span style="color:#aa1111">"/{id}"</span>)
<span style="color:#770088">public</span> <span style="color:#000000">R</span><span style="color:#981a1a"><</span><span style="color:#000000">Employee</span><span style="color:#981a1a">></span> <span style="color:#0000ff">getById</span>(<span style="color:#555555">@PathVariable</span> <span style="color:#008855">Long</span> <span style="color:#000000">id</span>){
    <span style="color:#000000">log</span>.<span style="color:#000000">info</span>(<span style="color:#aa1111">"根据id查询员工信息..."</span>);
    <span style="color:#000000">Employee</span> <span style="color:#000000">employee</span> <span style="color:#981a1a">=</span> <span style="color:#000000">employeeService</span>.<span style="color:#000000">getById</span>(<span style="color:#000000">id</span>);
    <span style="color:#770088">if</span>(<span style="color:#000000">employee</span> <span style="color:#981a1a">!=</span> <span style="color:#221199">null</span>){
        <span style="color:#770088">return</span> <span style="color:#000000">R</span>.<span style="color:#000000">success</span>(<span style="color:#000000">employee</span>);
    }
    <span style="color:#770088">return</span> <span style="color:#000000">R</span>.<span style="color:#000000">error</span>(<span style="color:#aa1111">"没有查询到对应员工信息"</span>);
}</span></span>

5.3.2 修改员工


经过上述的分析,我们看到,在修改员工信息时,请求信息如下:

请求 说明
请求方式 PUT
请求路径 /employee
请求参数 {.......} json格式数据

代码实现:

在EmployeeController中增加方法, 根据ID更新员工信息。


1.<span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#aa5500">/**</span>
 <span style="color:#aa5500">* 根据id修改员工信息</span>
 <span style="color:#aa5500">* @param employee</span>
 <span style="color:#aa5500">* @return</span>
 <span style="color:#aa5500">*/</span>
<span style="color:#555555">@PutMapping</span>
<span style="color:#770088">public</span> <span style="color:#000000">R</span><span style="color:#981a1a"><</span><span style="color:#008855">String</span><span style="color:#981a1a">></span> <span style="color:#0000ff">update</span>(<span style="color:#000000">HttpServletRequest</span> <span style="color:#000000">request</span>,<span style="color:#555555">@RequestBody</span> <span style="color:#000000">Employee</span> <span style="color:#000000">employee</span>){
    <span style="color:#000000">log</span>.<span style="color:#000000">info</span>(<span style="color:#000000">employee</span>.<span style="color:#000000">toString</span>());
    <span style="color:#008855">Long</span> <span style="color:#000000">empId</span> <span style="color:#981a1a">=</span> (<span style="color:#008855">Long</span>)<span style="color:#000000">request</span>.<span style="color:#000000">getSession</span>().<span style="color:#000000">getAttribute</span>(<span style="color:#aa1111">"employee"</span>);
    <span style="color:#000000">employee</span>.<span style="color:#000000">setUpdateTime</span>(<span style="color:#000000">LocalDateTime</span>.<span style="color:#000000">now</span>());
    <span style="color:#000000">employee</span>.<span style="color:#000000">setUpdateUser</span>(<span style="color:#000000">empId</span>);
    <span style="color:#000000">employeeService</span>.<span style="color:#000000">updateById</span>(<span style="color:#000000">employee</span>);
    <span style="color:#770088">return</span> <span style="color:#000000">R</span>.<span style="color:#000000">success</span>(<span style="color:#aa1111">"员工信息修改成功"</span>);
}</span></span>

5.4 功能测试


代码编写完毕之后,我们需要将工程重启。 然后访问前端页面, 按照前面分析的操作流程进行测试,查看数据是否正常修改即可。

相关文章
|
6月前
|
前端开发
会员系统02--,后台管理系统,包含网站运营,统计分析,用户中心,财务管理,资金明细,系统管理,参数配置,后台管理系统可以观看配置资料,广告位的相关资料,客服工单最主要是客户反馈给我们的问题,登录统计
会员系统02--,后台管理系统,包含网站运营,统计分析,用户中心,财务管理,资金明细,系统管理,参数配置,后台管理系统可以观看配置资料,广告位的相关资料,客服工单最主要是客户反馈给我们的问题,登录统计
|
8月前
|
SQL 数据挖掘 数据处理
「SQL面试题库」 No_99 顾客的可信联系人数量
「SQL面试题库」 No_99 顾客的可信联系人数量
部门员工信息的录入代码实现
部门员工信息的录入代码实现
|
SQL 存储 数据库
学生信息管理信息系统--添加用户
学生信息管理信息系统--添加用户
|
缓存 安全 NoSQL
人事项目开发记录-登录模块
人事项目开发记录-登录模块
|
JSON 前端开发 JavaScript
基于Springboot外卖系统09:员工信息编辑+员工信息保存
那么从上述的分析中,当前实现的编辑功能需要实现两个方法:
149 0
|
存储
宿舍管理查询系统
宿舍管理查询系统 1.任务: 为宿舍管理人员编写一个宿舍管理查询软件, 程序设计
184 0
|
Oracle 关系型数据库 Java
5-企业权限管理-订单分页
PageHelper是国内非常优秀的一款开源的mybatis分页插件,它支持基本主流与常用的数据库,例如mysql、oracle、mariaDB、DB2、SQLite、Hsqldb等。
5-企业权限管理-订单分页
|
监控 前端开发 JavaScript
|
前端开发 测试技术 数据库

热门文章

最新文章