数据表结构
弄个测试的数据表,不同类型的几个字段,表名位 mp_reply。
生成代码
ELAdmin 可以自动生成代码。
左侧目录系统工具–代码生成,点开以后可以看到上面创建的数据表mp_reply,点击配置。
进入的页面内容有两部分,上方是字段配置,下方是生成配置。
- 字段配置:配置查询方式、是否显示等。MyBatis 版本和 JPA 版本相比,不支持自动维护创建时间和更新时间,我是后期手动维护上了,理论上框架应该支持自动,可能是我还没找到位置。
- 生成配置:
作者名称:任意写
模块名称:要生成代码对应的 Module 名称
至于包下:包名
接口名称:swagger 上和前端页面会显示
前端路径:eladmin-web 项目要保存前端页面的路径。我的是/Users/admin/Desktop/workspace/idea2024/eladmin-mp/eladmin-web/src/views/mp/reply
都完成以后,点击顶部的保存&生成,对应的代码会自动加入到后台和前端代码中,后端需要重启,前端会自动部署上。
配置菜单
新建一个目录
该目录下再新建一个菜单。
菜单标题:比较容易理解,左侧菜单最终显示的文字
路由地址:访问的 url,会和目录的路由拼接,我的就是/mp/mp/reply
权限标识:可以从自动生成代码的 controller 注解中查看到,复制过来就行。测试阶段也可以先为空
组件名称:可以从前端代码中找到
组件路径:查看前端代码的路径
授权
进入角色管理,将对应菜单权限勾选上,点击保存。
测试
刷新页面,左侧目录能查看到新添加的菜单了,对应功能也可以正常使用。除了:编辑的时候报错。
原因分析:创建的表主键使用的是 bigint 类型,长度超过 16 位的话就会引起后几位都是 0。
处理方式:将返回值的主键字段添加上注解@JSONField(serializeUsing = ToStringSerializer.class),比如自动生成的代码是直接返回的实体类,那么就在实体类主键上增加一行注解。
@JSONField(serializeUsing = ToStringSerializer.class)
@TableId(value = "reply_id")
@ApiModelProperty(value = "ID")
private Long replyId;
重启后运行,各项功能正常。
其他微调比如调整宽度,文字内容等,只需要进入前端 index.vue 修改。
匿名访问
在 controller 方法上增加注解 @AnonymousAccess 即可
@GetMapping("/search")
@Log("查询公众号自动回复单条")
@ApiOperation("查询公众号自动回复单条")
@AnonymousAccess
public ResponseEntity<MpReply> queryMpReplyOne(MpReplyQueryCriteria criteria){
return new ResponseEntity<>(mpReplyService.queryOne(criteria),HttpStatus.OK);
}
调用的 service层增加对应代码
@Override
public MpReply queryOne(MpReplyQueryCriteria criteria) {
return mpReplyMapper.findOne(criteria);
}
mapper中增加
MpReply findOne(@Param("criteria") MpReplyQueryCriteria criteria);
mapper.xml 增加
<select id="findOne" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from mp_reply
<where>
<if test="criteria.itCode != null">
and it_code = #{criteria.itCode}
</if>
</where>
</select>
本地浏览器访问:http://localhost:8000/api/mpReply/search?itCode=录入过的 itCode
无需登录就能返回结果。如果 itCode 不存在,返回的是 null