Jfinal 多表关联展示

多表查询展示

用左关联查询出的 表 怎么在 jfinal 项目中展示出来。
原理 跟单表查询 基本一样 只是 服务层的 sql语句处需要注意

我们先将 有关表 加入数据库中

前端页面:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ include file="/common.jsp"%>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <title>简历管理</title>
    <link rel="stylesheet" href="${ctx}/static/admin/css/switch.css">
</head>
<body>
    <div class="layui-card-body">
       <button class="layui-btn layui-btn-sm" id="add">添加</button>
       <button class="layui-btn layui-btn-sm" id="search_sidebar"><i class="layui-icon layui-icon-search"></i></button>
        <table class="layui-hide" id="jianli_table"></table>
    </div>
</body>
</html>
<script src="${ctx}/static/admin/layui/layui.js"></script>
<script src="${ctx}/static/admin/js/common.js"></script>


<script type="text/html" id="search_sidebar_tpl">
    <form class="layui-form">
        <div class="layui-form-item">
            <label class="layui-form-label">姓名</label>
            <div class="layui-input-block">
                <input type="text" name="name" placeholder="请输入姓名" autocomplete="off" class="layui-input">
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">公司</label>
            <div class="layui-input-block">
                <input type="text" name="companyname" placeholder="请输入公司名" autocomplete="off" class="layui-input">
            </div>
        </div>

        <div class="layui-form-item">
            <label class="layui-form-label">职位</label>
            <div class="layui-input-block">
                <input type="text" name="job" placeholder="请输入职位" autocomplete="off" class="layui-input">
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">等级</label>
            <div class="layui-input-block">
                <select name="lv">
                    <option value="">初级</option>
                    <option value="1">中级</option>
                    <option value="2">高级</option>
                    <option value="3">资深</option>
                </select>
            </div>
        </div>

        <div class="layui-form-item">
            <div class="layui-input-block">
                <button class="layui-btn" lay-submit lay-filter="serach_form"><i class="layui-icon">&#xe615;</i> 搜索</button>
                <button type="reset" class="layui-btn layui-btn-primary">重置</button>
            </div>
        </div>
    </form>
</script>
<script type="text/javascript">
    layui.use(['table','layer','jquery','element','sidebar','form','laytpl','laydate'], function(){
        var $ = jQuery = layui.$;
        var table = layui.table;
        var layer = layui.layer;
        var laytpl = layui.laytpl;
        var element = layui.element;
        var sidebar = layui.sidebar;
        var form = layui.form;
        var laydate=layui.laydate;
        var tableIns = table.render({
            elem: '#jianli_table',
            cellMinWidth: 80,
            url: '${ctx}/sys/jl/getList',
            height:'full-70',
            page: true,
            size: 'sm',
            cols: [[
                {type: 'numbers'},
                {field: 'id', title: '序号'},
                {field: 'name', title: '姓名'},
                {field: 'companyname', title: '公司名'},
                {field: 'job', title: '职位'},
                {field: 'lv', title: '级别'},
                {field: 'money', title: '薪酬'},

            ]]
        });


        $("#add").on('click', function() {
            parent.layer.open({
                type: 2,
                area: ['700px', '450px'],
                fixed: false, //不固定
                maxmin: true,
                content: '${ctx}/sys/jl/form',
                btn: ['保存', '重置', '关闭'],
                yes: function(index, layero){
                    var iframeWin = layero.find('iframe')[0];//得到iframe页的窗口对象,执行iframe页的方法:
                    iframeWin.contentWindow.table = tableIns;
                    layero.find('iframe').contents().find('#submit-btn').click();
                },
                btn2: function(index, layero){
                    layero.find('iframe').contents().find('#reset-btn').click();
                    return false;
                },
                btn3: function(index, layero){
                    var index = layer.getFrameIndex(window.name);
                    layer.close(index); //再执行关闭
                }
            });
        });




        var html = laytpl($('#search_sidebar_tpl').html()).render({});

        $('#search_sidebar').on('click', function () {
            var that = this;
            sidebar.render({
                elem: that,
                content: html,
                title: '搜索',
                shade: false,
                width: '30%', //可以设置百分比和px
                done: function () {
                    form.render();
                    form.on('submit(serach_form)', function (data) {
                        table.reload('jianli_table', {
                            method : 'post',
                            where: {
                                name : data.field.name,
                                companyname : data.field.companyname,
                                job : data.field.job,
                                lv : data.field.lv

                            }
                        });
                        return false;
                    });
                }
            });
        });
    });
</script>

Controller层 的代码:

@Clear(IfLoginInterceptor.class)
public class MoneyController extends BaseController {

    public void index() {
        render("money.jsp");
    }

    public void getList1() {
        String name =this.getHeader("name");
        String companyname =this.getHeader("companyname");
        String job =this.getHeader("job");
        String lv =this.getHeader("lv");

        List<Record> pageInfo = Money.dao.getUsers();
        this.renderJson(DataGridModelUtils.toDataGridView(pageInfo));
    }

    public void getList() {
        String name =this.getPara("name");
        String companyname =this.getPara("companyname");
        String job =this.getPara("job");
        String lv =this.getPara("lv");
        Page<Money> pageInfo=Money.dao.getMoneyPage(getPage(), getRows(), name,companyname,job,lv, getOrderbyStr());
        this.renderJson(DataGridModelUtils.toDataGridView(pageInfo));
    }

    

}

Service层:

public class Money extends BaseMoney<Money> {
	public static final Money dao = new Money().dao();



	public Page<Money> getMoneyPage(int page, int rows, String name,String companyname,String job,String lv, String orderbyStr) {
		try{
			String select="SELECT t.id,t1.name,t2.companyname,t3.job,t3.lv,t.money ";
			StringBuffer sqlExceptSelect=new StringBuffer("FROM money t LEFT JOIN money_username t1 ON t1.nameid=t.nameid  LEFT JOIN money_company t2 ON t2.companyid=t.companyid LEFT JOIN money_job t3 ON t3.jobid=t.jobid where 1=1" );
			if(CommonUtils.isNotEmpty(name)) {
				sqlExceptSelect.append(" and t1.name like '%" +name+ "%'");
			}
			if(CommonUtils.isNotEmpty(companyname)) {
				sqlExceptSelect.append(" and t2.companyname like '%" +companyname+ "%'");
			}
			if(CommonUtils.isNotEmpty(job)) {
				sqlExceptSelect.append(" and t3.job like '%" +job+ "%'");
			}
			if(CommonUtils.isNotEmpty(lv)) {
				sqlExceptSelect.append(" and t3.lv like '%" +lv+ "%'");
			}

			sqlExceptSelect.append(" "+orderbyStr);
			return dao.paginate(page, rows, select, sqlExceptSelect.toString());
		} catch (Exception e) {
			e.printStackTrace();
			throw new RuntimeException();
		}
	}

	public List<Record> getUsers() {
		try {
			return Db.find("SELECT t.id,t1.name,t2.companyname,t3.job,t3.lv,t.money\n" +
					"FROM money t\n" +
					"LEFT JOIN money_username t1 ON t1.nameid=t.nameid\n" +
					"LEFT JOIN money_company  t2 ON t2.companyid=t.companyid\n" +
					"LEFT JOIN money_job t3 ON t3.jobid=t.jobid\n" +
					"ORDER BY t.id " );
		} catch (Exception e) {
			throw new RuntimeException("获取用户列表异常:"+e.getMessage());
		}


		}
	}


展示结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值