精华内容
下载资源
问答
  • Spring Boot PageHelper 局限性解决方案 ——自定义List分页工具类
    千次阅读
    2018-12-14 12:46:37

    Java 自定义分页工具类

    1、为什么要写这个工具类:

    Mybatis 分页插件只能够对mapper的select返回的数据进行分页操作,而要对分页数据进行包装的话,目前只能自定义工具类了,我还没有找到合适的解决办法。

    2、代码实现如下:

    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * @author ZSCDumin
     * @version 1.0
     * @description: 自定义分页工具类:传递参数只需要(要分页的数组,当前页,每页大小)
     * @date 2018/12/13 21:10
     */
    public class MyPageHelper<T> {
    
        private List<T> list;//要分页的数组
        private Integer total; //总个数
        private Integer currentPage; //当前页
        private Integer totalPages; //总页数
        private Integer pageSize; // 每页个数大小
        private Integer previousPage; //前一页
        private Integer nextPage;//后一页
    
        public Integer getPreviousPage() {
            return previousPage;
        }
    
        public void setPreviousPage() {
            this.previousPage = currentPage > 0 ? currentPage - 1 : currentPage;
        }
    
        public Integer getNextPage() {
            return nextPage;
        }
    
        public void setNextPage() {
    
            this.nextPage = currentPage < totalPages ? currentPage + 1 : currentPage;
        }
    
        public List<T> getList() {
            return list;
        }
    
        public void setList(List<T> list) {
            this.list = list;
        }
    
        public Integer getTotal() {
            return total;
        }
    
        public void setTotal() {
            this.total = list.size();
        }
    
        public Integer getCurrentPage() {
            return currentPage;
        }
    
        public void setCurrentPage(Integer currentPage) {
            this.currentPage = currentPage;
        }
    
        public Integer getTotalPages() {
            return totalPages;
        }
    
        public void setTotalPages() {
            this.totalPages = (int) Math.ceil(1.0 * total / pageSize);
        }
    
        public Integer getPageSize() {
            return pageSize;
        }
    
        public void setPageSize(Integer pageSize) {
            this.pageSize = pageSize;
        }
    
        /**
         * @param list
         * @param currentPage
         * @param pageSize
         */
        public MyPageHelper(List<T> list, Integer currentPage, Integer pageSize) {
            this.list = list;
            this.currentPage = currentPage;
            this.pageSize = pageSize;
            setTotal();
            setTotalPages();
            setNextPage();
            setPreviousPage();
            getResult();
        }
    
        /**
         * 获取结果
         */
        public void getResult() {
            if (pageSize < total && pageSize > 0) {// 每页小于总数目
                int start = 0, end = 0;
                if (currentPage < totalPages - 1 && currentPage >= 0) {
                    start = currentPage * pageSize;
                    end = (currentPage + 1) * pageSize - 1;
                    setData(start, end);
                } else if (currentPage == totalPages - 1) {
                    start = currentPage * pageSize;
                    end = total - 1;
                    setData(start, end);
                }
            }
        }
    
        /**
         * 获取数组指定位置的元素
         *
         * @param start 起始位置
         * @param end   截止位置
         * @return
         */
        void setData(int start, int end) {
            if (start >= 0 && end < total) {
                List<T> list1 = new ArrayList<>();
                for (int i = start; i <= end; i++) {
                    list1.add(list.get(i));
                }
                this.list.clear();
                setList(list1);
            }
        }
    }
    

    3、使用方式

    MyPageHelper<User> myPageHelper = new MyPageHelper<>(list, pageNum, pageSize);
    
    更多相关内容
  • 主要介绍了C#使用IComparer自定义List类实现排序的方法,涉及C#使用IComparer接口定义List类进行排序的相关技巧,需要的朋友可以参考下
  • 自定义list

    2013-06-29 14:24:47
    自定义圆角listview,使用的是android:shape设置样式
  • 安卓自定义list的listitem,item中添加图片,按钮等元素
  • mybatis自定义List集合解析器

    千次阅读 2020-10-13 13:17:33
    1. 编写类型解析器 方案1:实现TypeHandler重写方法 ... import org.apache.ibatis.type.*;...import java.util.List; /** * Created with IntelliJ IDEA. * * @author: wb-zcx696752 * @descriptio

    1. 编写类型解析器

    方案1:实现TypeHandler重写方法
    package com.aliyun.kuxuandemo.typeHandler;
    
    import org.apache.ibatis.type.*;
    
    import java.sql.*;
    import java.util.Arrays;
    import java.util.List;
    
    /**
     * Created with IntelliJ IDEA.
     *
     * @author: wb-zcx696752
     * @description:
     * @data: 2020/10/13 11:19 PM
     */
    
    @MappedJdbcTypes(JdbcType.VARCHAR)
    @MappedTypes(List.class)
    public class ListTypeHandler implements TypeHandler<List<String>> {
    
        @Override
        public void setParameter(PreparedStatement ps, int i, List<String> parameter, JdbcType jdbcType) throws SQLException {
            StringBuffer sb = new StringBuffer();
            for (String pa : parameter) {
                sb.append(pa).append(",");
            }
    
            ps.setString(i, sb.toString().substring(0, sb.toString().length() - 1));
        }
    
        @Override
        public List<String> getResult(ResultSet resultSet, String s) throws SQLException {
            String[] split = resultSet.getString(s).split(",");
            return Arrays.asList(split);
        }
    
        @Override
        public List<String> getResult(ResultSet resultSet, int i) throws SQLException {
            String[] split = resultSet.getString(i).split(",");
            return Arrays.asList(split);
        }
    
        @Override
        public List<String> getResult(CallableStatement callableStatement, int i) throws SQLException {
            String[] split = callableStatement.getString(i).split(",");
            return Arrays.asList(split);
        }
    
    }
    
    方案二:继承BaseTypeHandler类,重写方法
    package com.aliyun.kuxuandemo.typeHandler;
    
    import org.apache.ibatis.type.BaseTypeHandler;
    import org.apache.ibatis.type.JdbcType;
    import org.apache.ibatis.type.MappedJdbcTypes;
    import org.apache.ibatis.type.MappedTypes;
    
    import java.sql.CallableStatement;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.Arrays;
    import java.util.List;
    
    /**
     * Created with IntelliJ IDEA.
     *
     * @author: wb-zcx696752
     * @description:
     * @data: 2020/10/13 12:56 PM
     */
    @MappedJdbcTypes(JdbcType.VARCHAR)
    @MappedTypes(List.class)
    public class ListTypeHandler extends BaseTypeHandler<List<String>> {
        @Override
        public void setNonNullParameter(PreparedStatement preparedStatement, int i, List<String> strings, JdbcType jdbcType) throws SQLException {
            //1.List集合转字符串
            StringBuffer sb = new StringBuffer();
            for (String string : strings) {
                sb.append(string).append(",");
            }
            //2.设置给ps
            preparedStatement.setString(i, sb.toString().substring(0, sb.toString().length() - 1));
        }
    
        @Override
        public List<String> getNullableResult(ResultSet resultSet, String s) throws SQLException {
            String[] split = resultSet.getString(s).split(",");
            return Arrays.asList(split);
        }
    
        @Override
        public List<String> getNullableResult(ResultSet resultSet, int i) throws SQLException {
            String[] split = resultSet.getString(i).split(",");
            return Arrays.asList(split);
        }
    
        @Override
        public List<String> getNullableResult(CallableStatement callableStatement, int i) throws SQLException {
            String[] split = callableStatement.getString(i).split(",");
            return Arrays.asList(split);
        }
    }
    

    2. 在mybatis-config.xml中注册该解析器

    <typeHandlers>
            <typeHandler handler="com.aliyun.kuxuandemo.typeHandler.ListTypeHandler"/>
        </typeHandlers>
    

    3.使用自定义类型解析器

    查询时
    @Select("select video_id,corp_id,oss_url,title,category_list,description from video_basic_info " +
                "where video_id=#{VideoID} and corp_id=#{CorpID}")
        @Results({
                @Result(property = "videoId", column = "video_id"),
                @Result(property = "corpId", column = "corp_id"),
                @Result(property = "ossUrl", column = "oss_url"),
                @Result(property = "categoryList", column = "category_list", typeHandler = com.aliyun.kuxuandemo.typeHandler.ListTypeHandler.class)
        })
    
    插入修改时
    @Update({
                "<script> ",
                "update video_basic_info ",
                "<set> ",
                "<if test = \"Title != null and Title != '' \"> ",
                "title=#{Title}, ",
                "</if> ",
                "<if test = \"Desc != null and Desc != '' \"> ",
                "description=#{Desc}, ",
                "</if> ",
                "<if test = \"Tag != null and Tag.size() > 0 \"> ",
                "category_list=#{Tag,javaType=List,jdbcType=VARCHAR,typeHandler=com.aliyun.kuxuandemo.typeHandler.ArrayTypeHandler} ",
                "</if> ",
                "</set> ",
                "where video_id=#{VideoID} and corp_id=#{CorpID}",
                "</script>"
        })
        int updateVideoBasicInfoTitleDescTag(BaseRequestParameterValidationModel parameter);
    
    展开全文
  • C# 通过数组实现一个自定义List

    千次阅读 2018-11-25 13:27:34
    先在主方法使用一下自己定义的集合类 MyList,MyList代码在最下面(MyList集合类的功能还有很多可以完善,这里仅举例) using System; using System....namespace _005_List的创建和使用 { class Program ...

    使用泛型和索引器来实现一个我们自己的集合类MyList
    创建一个类MyList.cs继承接口IComparable

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace _005_List的创建和使用
    {
        //使用泛型和索引器来实现一个我们自己的集合类MyList
        class MyList<T> where T : IComparable//继承接口(加一个约束)
        {
            private T[] array;
            private int count = 0; //表示当前的元素的个数
    
            //构造方法new MyList<T>(size)
            public MyList(int size)
            {
                if (size >= 0)
                {
                    array = new T[size];
                }
            }
    
            public MyList()
            {
                array = new T[0];
            }
    
            //容量其实就是数组长度
            public int Capacity
            {
                get { return array.Length; }
            }
    
            //元素个数
            public int Count
            {
                get { return count; }
            }
    
            //添加元素
            public void Add(T item)
            {
                if (Count == Capacity) //判断元素个数跟列表容量大小是否一样大,如果一样大,说明数组容量不用,需要创建新的数组
                {
                    if (Capacity == 0) //当数组长度为0的时候,创建一个长度为4的数组
                    {
                        array = new T[4];
                    }
                    else
                    {
                        var newArray = new T[Capacity * 2]; //当长度不为0的时候,我们创建一个长度为原来2倍的数组
                        Array.Copy(array, newArray, Count); //把旧数组中的元素复制到新的数组中 , 复制前count个  array-->newArray
                        array = newArray; //数组是引用类型,newArray赋值给array的是堆中的储存地址
                    }
                }
                array[Count] = item;
                count++;
            }
    
            //通过索引获取元素
            public T GetItem(int index)
            {
                if (index >= 0 && index < count)
                {
                    return array[index];
                }
                else
                {
                    throw new Exception("索引超出了范围");
                }
            }
    
            //创建索引器,索引器:通过[index]这种形式去访问数据,就是索引器
            public T this[int index]
            {
                get { return GetItem(index); }
                set
                {
                    if (index >= 0 && index < count)
                    {
                        array[index] = value;
                    }
                    else
                    {
                        throw new Exception("索引超出了范围");
                    }
                }
            }
    
            //插入元素
            public void Insert(int index, T item)
            {
                if (index >= 0 && index < count)
                {
                    if (Count == Capacity)
                    {
                        if (Capacity == 0)
                        {
                            array = new T[4];
                        }
                        else
                        {
                            var newArray = new T[Capacity * 2];
                            Array.Copy(array, newArray, Count);
                            array = newArray;
                        }
    
                        for (int i = count - 1; i >= index; i--)
                        {
                            array[i + 1] = array[i]; //把i位置的值放在后面,就是向后移动一个单位
                        }
    
                        array[index] = item;
                        count++;
                    }
                }
                else
                {
                    throw new Exception("索引超出了范围");
                }
            }
    
            //删除元素
            public void RemoveAt(int index)
            {
                if (index >= 0 && index < count)
                {
                    for (int i = index + 1; i < count; i++)
                    {
                        array[i - 1] = array[i];
                    }
                    count--;
                }
                else
                {
                    throw new Exception("索引超出了范围");
                }
            }
    
            //从前(后)查找
            public int IndexOf(T item)
            {
                for (int i = 0; i < count; i++)
                {
                    if (array[i].Equals(item))
                    {
                        return i;
                    }
                }
    
                return -1;
            }
    
            public int LastIndexOf(T item)
            {
                for (int i = Count - 1; i >= 0; i--)
                {
                    if (array[i].Equals(item))
                    {
                        return i;
                    }
                }
    
                return -1;
            }
    
            //排序
            public void Sort()
            {
                for (int i = 0; i < Count - 1; i++)
                {
                    if (array[i].CompareTo(array[i + 1]) > 0)//CompareTo返回值是int,返回值大于零表示前者大于后者,小于表示前者小于后者,等于零表示俩者相等
                    {
                        T temp = array[i];
                        array[i] = array[i + 1];
                        array[i + 1] = temp;
    
                    }
                }
    
            }
    
        }
    }
    

    在主方法调用自己定义的集合类 MyList

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace _005_List的创建和使用
    {
        class Program
        {
            static void Main(string[] args)
            {
                MyList<int> mylist = new MyList<int>();
                //MyList<int> mylist2 = new MyList<int>(10);
                //添加元素
                mylist.Add(234);
                mylist.Add(24);
                mylist.Add(24);
                mylist.Add(274);
                ForList();//循环列表
                //插入元素
                mylist.Insert(2, 9000);
                ForList();//循环列表
                //访问元素个数
                Console.WriteLine(mylist.Count);
                //获取容量大小
                Console.WriteLine(mylist.Capacity);
                //移除指定位置的元素
                mylist.RemoveAt(2);
                ForList();//循环列表
                //IndexOf索引从第一个元素开始取得元素所在列表中的索引位置(LastIndexOf从后往前开始),查找不到返回-1
                Console.WriteLine(mylist.IndexOf(24));
                Console.WriteLine(mylist.LastIndexOf(24));
                Console.WriteLine(mylist.IndexOf(999));
                ForList();
                //排序
                mylist.Sort();
                ForList();
                Console.WriteLine();
                //mylist[0] = 100;//可以通过索引器 设置值
                //循环数组
                void ForList()
                {
                    /*for (int i = 0; i < mylist.Count; i++)
                    {
                        Console.WriteLine(mylist.GetItem(i));//通过GetItem方法取元素
                    }*/
                    
    
                    for (int i = 0; i < mylist.Count; i++)
                    {
                        Console.Write(mylist[i]+"  ");//通过索引器 取值
                    }
                    Console.WriteLine();
    
                }
                Console.ReadKey();
            }
        }
    }
    

    运行结果
    在这里插入图片描述

    展开全文
  • 内嵌图片,下拉框,排序,单选框,显示,隐藏,链接等自定义列表功能,MFC版本
  • 自定义Listctrl

    2013-09-11 14:15:40
    自定义listctrl,第一列checkbox居中显示,第二列显示图片,第三列自定义文字显示
  • 我有一个dto类,里面有一个int字段,一个list<String> 字段,一个list<dto2>字段,这个dto2字段里面也就一些long字段和string字段。 发生了什么 只能解析int字段,list<String> 字段,但是不能...

    背景

    我有一个dto类,里面有一个int字段,一个list<String> 字段,一个list<dto2>字段,这个dto2字段里面也就一些long字段和string字段。

    发生了什么

    只能解析int字段,list<String> 字段,但是不能解析list<dto2>

    干了什么事情

    追了一波源码,发现解析intlist<dto2>都没有问题,唯独在解析list<dto2> 的时候发现这个字段反解析对象filedDeser为空

    在这里插入图片描述
    进入这个smartMatch(key)的方法,发现这个filedDeserializer为null
    在这里插入图片描述
    进入这个getFiledDeserializer方法发现,

    在这里插入图片描述
    在这里插入图片描述

    解决方案

    投向了google 的gson

    DTO res = new GsonBuilder().create().fromJson(resStr, DTO.class);
    
    展开全文
  • 主要给大家介绍了关于C#创建自定义控件及添加自定义属性和事件使用的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用C#具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
  • 自定义实现的ArrayList

    2017-03-03 22:38:57
    自定义实现的ArrayList数据结构,有大量注释以及编写思路,帮助新手用Java语言来实现数据结构
  • 1、问题描述 List是java中一个有序可重复的的集合,其中自带的.sort()排序方法,该方法在...java中List允许我们自定义sort()排序方法,以下自定义List集合的sort排序方法,用于对一个字符串类型的日期集合进行...
  • C# 传入自定义列表List 到Oracle存储过程 亲测有效,执行速度极快
  • 增加 自定义listfilter

    2013-04-11 11:29:11
    这里是具体内容和方法: http://blog.csdn.net/jk007/article/details/8211928
  • 主要介绍了list泛型自定义排序示例,实现List泛型类将制定元素至前排序,大家参考使用吧
  • 自定义了一个list,在定义其中一个查看是否有序的方法时,提示比较没有被定义,怎么解决这个问题啊
  • Java中实现List自定义排序

    万次阅读 2019-01-30 10:46:49
    list . add ( new User ( 1 , "java" , 20 ) ) ; list . add ( new User ( 2 , "spark" , 19 ) ) ; list . add ( new User ( 3 , "hive" , 21 ) ) ; for ( User user : list ) ...
  • Xadmin自定义list_display_links链接跳转页面通常list_display_links跳转的是编辑页面,如果想要在列表页之间进行跳转,而不是跳转到update页面怎么办呢:需要自定义xadmin/views/base.py 和list.py文件以自定义开始...
  • 自定义listcontrl单行颜色 单行,多行,自定义行, 很方便的类
  • list集合实现自定义排序

    千次阅读 2020-06-08 09:51:30
    1.基本数据类型的简单排序 public class Demo01 {... List<Integer> list = Arrays.asList(1,5,2,0,-1); Collections.sort(list); System.out.println(list); } } (1)Collections.sort(list)分析: @Suppress
  • List排序根据自定义字段自定义排序规则 1.ListSortUtils自定义工具类【 List排序根据自定义字段自定义排序规则】: import com.dahuatech.bigfish.project.planmanage.entity.PlanVO; import java.lang.reflect....
  • 主要介绍了Java Collections.sort()实现List排序的默认方法和自定义方法,需要的朋友可以参考下
  • ubuntu自定义sourcelist

    2019-04-26 01:10:49
    NULL 博文链接:https://snv.iteye.com/blog/2357537
  • 自定义结构体前加 [System.Serializable] using UnityEngine; [System.Serializable] public struct MyStruct { public string name; public Transform trans_Obj; public bool isOK; } 在创建该结构体的...
  • import java.util.ArrayList;...import java.util.List; public class Lab { public static void main(String[] args) { List<Student> list = new ArrayList<>(); //构建Student对.
  • C#中List自定义类的集合操作

    千次阅读 2019-05-08 09:48:20
    List<User> list = list1.MyDistinct(s => s.Id).ToList(); Console.WriteLine("去重:"); foreach (var item in list) { Console.WriteLine(item.Id); } list = list1.MyExcept(list2, s => s.Id).ToList();...
  • 自定义注解 @Target({ElementType.FIELD}) @Retention(RetentionPolicy.RUNTIME) @Constraint(validatedBy = ListValidator.class) public @interface ListValid { int min() default 0; int max() default ...
  • C++ list自定义函数排序

    千次阅读 2019-03-31 21:15:55
    总时间限制: 1000ms 内存限制: 65536kB // 在此处补充你的代码 描述 程序填空,产生指定输出 #include <cstdio> #include <iostream>...list> using namespace std; int main()...
  • 自定义列表项符号list-style-image详解

    千次阅读 2021-06-12 11:42:43
    本篇文章给大家带来的内容是关于自定义列表项符号list-style-image详解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。一、list-style-image属性不管是有序列表,还是无序列表,都有它们自身的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 845,684
精华内容 338,273
关键字:

自定义list

友情链接: spam.rar