admin管理员组

文章数量:1616690

前台模板

<div class="ui secondary segment form">
            <!--查询表单需要是form提交数据-->
            <form th:action="/blogs?page=${ adminBlogPage!}&size=${adminBlogSize!}" method="get"
                  class="ui segment form">

                <!--fields代表一个区域,inline缩短区域的效果-->
                <div class="inline fields">
                    <div class="field">
                        <input type="text" name="adminSearchTitle" placeholder="标题" value="${adminSearchTitle!}">
                    </div>
                    <div class="field">
                        <!--dropdown是下拉框效果-->
                        <div class="ui labeled action input">
                            <div class="ui type selection dropdown">
                                <input type="hidden" name="typeId" value="${(type.id)!}">
                                <i class="dropdown icon"></i>
                                <div class="default text"> 分类 </div>
                                <!--menu是菜单-->
                                <div class="menu">
                                    <div data-value="-1" class="item">分类</div>
                                    <#--                                    <div  th:each="type : _{types}" th:data-value="_{type.id}" th:text="_{type.name}" class="item" data-value="1"  >错误日志</div>-->
                                    <#list typeList as type>
                                        <div data-value="${type.id}" class="item">${type.name}</div>
                                    </#list>
                                </div>
                            </div>
                            <a id="clear-btn" href="/admin/blogs"  class="ui compact button">clear</a>
                        </div>

                    </div>
                    <div class="field">
                        <div class="ui checkbox">
                            <input type="checkbox" id="recommend" name="recommend">
                            <label for="recommend">推荐</label>
                        </div>
                    </div>
                    <div class="field">
                        <button type="submit" id="search-btn" class="ui mini teal basic button"><i
                                    class="search icon"></i>搜索
                        </button>
                    </div>
                </div>
            </form>

            <div id="table-container">
                <table th:fragment="blogList" class="ui compact teal table">
                    <thead>
                    <tr>
                        <th></th>
                        <th>标题</th>
                        <th>类型</th>
                        <th>推荐</th>
                        <th>状态</th>
                        <th>更新时间</th>
                        <th>操作</th>
                    </tr>
                    </thead>
                    <tbody>

                    <#list  pageInfo.list as blogVo>
                        <tr>
                            <td>${blogVo_index}</td>
                            <td>${blogVo.blog.title}</td>
                            <td>${(blogVo.type.name)!""}</td>
                            <td>${(blogVo.blog.recommend==1)?string('是','否')}</td>
                            <td>${(blogVo.blog.published==1)?string('发布','草稿')}</td>
                            <td th:text="_{#dates.format(blog.updateTime,'yyyy-MM-dd')}">2020-3-02</td>
                            <td>
                                <a href="/admin/blogs/${blogVo.blog.id}/input }"
                                   class="ui mini teal basic button">编辑</a>
                                <a href="/admin/blogs/${blogVo.blog.id}/delete}" class="ui mini red basic button">删除</a>
                            </td>
                        </tr>
                    </#list>
                    </tbody>
                    <tfoot>
                    <tr>
                        <th colspan="7">
                            <div class="ui mini pagination menu">
                                <div class="item"><a
                                            href="blogs?adminSearchTitle=${adminSearchTitle!}&adminBlogPage=1">首页</a>
                                </div>
                                <div class="item"><a
                                            href="blogs?adminSearchTitle=${adminSearchTitle!}&adminBlogPage=${pageInfo.prePage}">上一页</a>
                                </div>
                                <#list pageInfo.navigatepageNums as page>
                                    <div class="item"><a
                                                href="blogs?adminSearchTitle=${adminSearchTitle!}&adminBlogPage=${page}">${page}</a>
                                    </div>
                                </#list>

                                <div class="item"><a
                                            href="blogs?adminSearchTitle=${adminSearchTitle!}&adminBlogPage=${(pageInfo.hasNextPage)?string(pageInfo.nextPage?string,pageInfo.pages?string)}">下一页</a>
                                </div>
                                <div class="item"><a
                                            href="blogs?adminSearchTitle=${adminSearchTitle!}&adminBlogPage=${pageInfo.pages}">尾页</a>
                                </div>
                            </div>
                            <a href="#" th:href="@{/admin/blogs/input}" class="ui mini right floated teal basic button">新增</a>
                        </th>
                    </tr>
                    </tfoot>
                </table>

                <div class="ui segment m-inline-block">
                    <p>
                        当前第<span>${pageInfo.pageNum}</span>页,总<span>${pageInfo.pages}</span>页,共<span>${pageInfo.total}</span>条记录
                    </p>
                </div>

 @GetMapping({"blogs"})
    public String blogsSimpleGet(
            @RequestParam(defaultValue = "1") Integer adminBlogPage,
            @RequestParam(defaultValue = "5") Integer adminBlogSize,
            @RequestParam(defaultValue = "") String adminSearchTitle,
            @RequestParam(required = false) Boolean recommend,
            @RequestParam(required = false) Long typeId,
            HttpSession session,
            Model model
    ) {

        model.addAttribute("adminBlogPage",adminBlogPage);
        model.addAttribute("adminBlogSize",adminBlogSize);
        model.addAttribute("adminSearchTitle",adminSearchTitle);
        // session.setAttribute("typeId",typeId);

        //获取 type 标签

        List<Type> types =  typeService.selectByExample(new TypeExample());
        List<BlogVO> blogList = blogService.selectBlogWithType(adminBlogPage,adminBlogSize,adminSearchTitle,recommend);
        if(typeId!=null) {
            Optional<Type> type = types.stream().filter(ty -> typeId.equals(ty.getId())).findAny();
            model.addAttribute("type",type.orElse(null));
        }
        //存入标签
        model.addAttribute("typeList",types);
        model.addAttribute("pageInfo",new PageInfo<BlogVO>(blogList));

        return "admin/blogs";
    }

一对多,sql 语句一般都用 left join 查询

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis//DTD Mapper 3.0//EN" "http://mybatis/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.lyr.blog3.mapper.manual.BlogVOMapper">
    <resultMap id="blogVOMap" type="com.lyr.blog3.pojo.vo.BlogVO">

        <association property="blog" javaType="com.lyr.blog3.pojo.po.Blog">
            <id     property="id" column="id"/>
            <result property="title" column="title"/>
            <result property="content" column="content"/>
            <result property="flag" column="flag"/>
            <result property="views" column="views"/>
            <result property="updateTime" column="update_time"/>
            <result property="typeId" column="type_id"/>
            <result property="firstPicture" column="first_picture"/>
            <result property="shareStatement" column="share_statement"/>
            <result property="published" column="published"/>
            <result property="appreciation" column="appreciation"/>
            <result property="commentabled" column="commentabled"/>

            <result property="recommend" column="recommend"/>
            <result property="createTime" column="create_time"/>
            <result property="typeId" column="type_id"/>
            <result property="userId" column="user_id"/>
            <result property="tagIds" column="tag_ids"/>
        </association>
        <association property="type" javaType="com.lyr.blog3.pojo.po.Type">
            <id property="id" column="typeid"/>
            <result property="name" column="typename"/>
        </association>
        <association property="user" javaType="com.lyr.blog3.pojo.po.User">
            <id property="id" column="uid"/>
            <result property="nickname" column="nickname"/>
            <result property="username" column="username"/>
            <result property="email" column="email"/>
            <result property="avatar" column="avatar"/>
        </association>
        <collection property="tags" ofType="com.lyr.blog3.pojo.po.Tag">
            <id property="id" column="tagid"/>
            <result property="name" column="tagname"/>
        </collection>
    </resultMap>
    <sql id="blog_all_Column_List">

        b.id, b.title, b.first_picture,b.flag, b.views,b.appreciation, b.share_statement, b.commentabled,
        b.published, b.recommend, b.create_time, b.update_time, b.type_id, b.user_id, b.tag_ids
    </sql>
    <sql id="tag_all_Column_List">

        t.`id` as typeid, t.`name` as typename
    </sql>

    <select id="selectBlogList" resultMap="blogVOMap" >
        select <include refid="blog_all_Column_List" />,<include refid="tag_all_Column_List" />

        from t_blog b left join t_type t on  b.`type_id` = t.`id` where 1=1
        <if test="searchTitle!='' and searchTitle!=null ">
            and  b.title like concat('%',#{searchTitle},'%')
        </if>
        <if test="recommend">
            and b.recommend = 1
        </if>


    </select>

</mapper>

总结技巧, 比如分页搜索,一般会在搜索框中 加个 <input type=hidden /> 保存 上一页的记录,比如当前的 page 页数,当前搜索的数量
,还有上一次请求的搜索参数,也一起设置

本文标签: 管理系统分页模板