mybatis-动态sql动态bean实例

这里是一个针对开源项目若依框架的使用我们动态sql的改造过程的描述,但是其中主要还是介绍了如何使用本框架来实现sql的动态查询和动态bean,如果您使用的是自身的系统,这里对外部框架的改造过程,也可以作为参考。

首先,我们以一个功能的改造,来简单说明:

上图为该项目的通知管理,初始为一个单表的操作,显示的字段为序号、公告标题、公告类型、状态、创建人、创建时间。

下图为SysNotice的所有属性;(同时在baseEntity中有4个公共属性:createBy、createTime、updateBy、updateTime)

这是该项目SysNoticeController.java钟list方法的原写法:根据查询通知信息,是最简单的功能

public TableDataInfo list(SysNotice notice)

{

        startPage();

        List<SysNotice> list = noticeService.selectNoticeList(notice);

        return getDataTable(list);

}

  • 首先我们想与用户表关联,并在列表区显示该用户所属部门的id,为了测试,我们先随便用noticeId与用户表关联(发现他们id值有相同的,这里只是为了测试),ok,写法如下:

public TableDataInfo list(SysNotice notice)

{

   startPage();

   List<SysNotice> list = noticeService.selectNoticeList(notice);

//使用SysNotice表的noticeId字段与sysUser表的userId进行关联

JoinTableBean userJtb=JoinTableBean.fastGetJtb("sysUser", "noticeId", "userId");

userJtb.joinInto(notice);//将构建好的userJtb放入notice这个查询实体中

userJtb.putSelect("deptId");//关联完成后,增加一个sysUser表的select字段。

List<SysNotice> list = noticeService.findList(notice);//调用findList方法查询数据

TableDataInfo tdi=getDataTable(list);//装载到分页信息中

return tdi;

}

我们可以看到打印后的sql:

拼接参数后sql____________:[com.ruoyi.system.mapper.SysNoticeMainMapper.findList]:

SELECT a.notice_id AS "noticeId", a.notice_title AS "noticeTitle", a.notice_type AS "noticeType", a.notice_content AS "noticeContent", a.status AS "status"

           , a.create_by AS "createBy", a.create_time AS "createTime", a.update_by AS "updateBy", a.update_time AS "updateTime", a.remark AS "remark"

           , sysuser57.dept_id AS "deptId"

FROM sys_notice a

           LEFT JOIN sys_user sysuser57 ON notice_id = sysuser57.user_id

 

  • 然后这时我们想增加一个查询条件deptId,需要注意的是deptId实际在SysNotice中是不存在该属性的,他是在SysUser表中,下面详细介绍:

首先我在notice.html页面的查询条件区,增加一个查询条件deptId字段,效果如下

这时的request会增加 一个叫做deptId的字段 ,如果输入了值,那么就会有内容,因此我们需要调用notice=notice.initDynaMap(request);将request中的值自动copy到notice中,这时我们看到的notice的效果如下:

我们可以看到,多了几个动态属性,其中一个是deptId

 

接下来详细代码:

public TableDataInfo list(SysNotice notice,HttpServletRequest request)

{

startPage();

noti

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值