目录
如果我们也想要像下图那种分页查询的方式,那么我们应该怎么做才可以呢?
分页查询时,Sql语句使用limit关键字,需要传入开始索引和每页条数两个参数。MyBatis的多参数处理有以下方式:
Sql中的参数使用arg0,arg1...或param1,param2...表示参数的顺序。此方法可读性较低,在开发中不建议使用。但是我这里测试的时候,参数可以随便定义的,并不一定按照上述的格式来定义
/**
* 分页查询 -- 顺序传参
* @param startIndex 开始索引
* @param pageSize 每页条数
* @return
*/
List<User> findPage(int startIndex,int pageSize);
<!-- 分页查询-顺序传参 -->
<select id="findPage" resultType="com.mybatisstudy.pojo.User">
select * from user limit #{param1},#{param2}
</select>
这里我发现不用定义参数类型类型也可以
// 测试分页查询方法 -- 顺序传参
@Test
public void testFindPage(){
List<User> users = userMapper.findPage(0,3);
users.forEach(System.out::println);
}

由于这里的起始条数是从0开始,数据的id从1开始,所以,别惊讶
在接口方法的参数列表中通过@Param定义参数名称,在Sql语句中通过注解中所定义的参数名称指定参数位置。此方式参数比较直观的,推荐使用。
/**
* 分页查询 -- @param传参
* @param startIndex 开始索引
* @param pageSize 每页条数
* @return
*/
List<User> findPage1(@Param("startIndex")int startIndex,@Param("pageSize")int pageSize);
<!-- 分页查询-@param传参 -->
<select id="findPage1" resultType="com.mybatisstudy.pojo.User">
select * from user limit #{startIndex},#{pageSize}
</select>
注意,这里里面的参数就一定要和持久层接口的参数一致,否则就会报错
// 测试分页查询方法 -- @param传参
@Test
public void testFindPage1(){
List<User> users = userMapper.findPage1(3,3);
users.forEach(System.out::println);
}

自定义POJO类,该类的属性就是要传递的参数,在SQL语句中绑定参数时使用POJO的属性名作为参数名即可。此方式推荐使用。
由于这里我们需要两个参数,一个是查询开始条数,一个是每页有多少条数,所以这个pojo类只需要两个参数即可
package com.mybatisstudy.pojo;
public class PageQuery {
private int startIndex;
private int pageSize;
public PageQuery(int i, int i1) {
this.startIndex = i;
this.pageSize = i1;
}
public int getStartIndex() {
return startIndex;
}
public void setStartIndex(int startIndex) {
this.startIndex = startIndex;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
}
/**
* 分页查询 -- POJO传参
* @param PageQuery
* @return
*/
List<User> findPage2(PageQuery pageQuery);
<!-- 分页查询-POJO传参 -->
<select id="findPage2" resultType="com.mybatisstudy.pojo.User" parameterType="com.mybatisstudy.pojo.PageQuery">
select * from user limit #{startIndex},#{pageSize}
</select>
这里同样需要注意的是,参数名称要和自定义的POJO类的成员变量名要一致,否则同样会报错
// 测试分页查询方法 -- POJO传参
@Test
public void testFindPage2(){
PageQuery pageQuery = new PageQuery(2,3);
List<User> users = userMapper.findPage2(pageQuery);
users.forEach(System.out::println);
}

如果不想自定义POJO,可以使用Map作为传递参数的载体,在SQL语句中绑定参数时使用Map的Key作为参数名即可。此方法推荐使用
/**
* 分页查询 -- Map传参
* @param Map
* @return
*/
List<User> findPage3(Map<String,Object> params);
<!-- 分页查询-Map传参 -->
<select id="findPage3" resultType="com.mybatisstudy.pojo.User" parameterType="map">
select * from user limit #{startIndex},#{pageSize}
</select>
这里同样需要注意的是,参数个数要和你map集合的个数一致,并且参数名称要和map集合里面的key的名称要一致,否则同样报错
// 测试分页查询方法 -- Map传参
@Test
public void testFindPage3(){
Map<String,Object> params = new HashMap<>();
params.put("startIndex",0);
params.put("pageSize",4);
List<User> users = userMapper.findPage3(params);
users.forEach(System.out::println);
}

OK,以上就是mybatis分页查询时可以用到的四种传参方式,简单易上手,快来和我一起操作吧 ~
我正在用Ruby编写一个简单的程序来检查域列表是否被占用。基本上它循环遍历列表,并使用以下函数进行检查。require'rubygems'require'whois'defcheck_domain(domain)c=Whois::Client.newc.query("google.com").available?end程序不断出错(即使我在google.com中进行硬编码),并打印以下消息。鉴于该程序非常简单,我已经没有什么想法了-有什么建议吗?/Library/Ruby/Gems/1.8/gems/whois-2.0.2/lib/whois/server/adapters/base.
我试图获取一个长度在1到10之间的字符串,并输出将字符串分解为大小为1、2或3的连续子字符串的所有可能方式。例如:输入:123456将整数分割成单个字符,然后继续查找组合。该代码将返回以下所有数组。[1,2,3,4,5,6][12,3,4,5,6][1,23,4,5,6][1,2,34,5,6][1,2,3,45,6][1,2,3,4,56][12,34,5,6][12,3,45,6][12,3,4,56][1,23,45,6][1,2,34,56][1,23,4,56][12,34,56][123,4,5,6][1,234,5,6][1,2,345,6][1,2,3,456][123
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
我知道我可以指定某些字段来使用pluck查询数据库。ids=Item.where('due_at但是我想知道,是否有一种方法可以指定我想避免从数据库查询的某些字段。某种反拔?posts=Post.where(published:true).do_not_lookup(:enormous_field) 最佳答案 Model#attribute_names应该返回列/属性数组。您可以排除其中一些并传递给pluck或select方法。像这样:posts=Post.where(published:true).select(Post.attr
question的一些答案关于redirect_to让我想到了其他一些问题。基本上,我正在使用Rails2.1编写博客应用程序。我一直在尝试自己完成大部分工作(因为我对Rails有所了解),但在需要时会引用Internet上的教程和引用资料。我设法让一个简单的博客正常运行,然后我尝试添加评论。靠我自己,我设法让它进入了可以从script/console添加评论的阶段,但我无法让表单正常工作。我遵循的其中一个教程建议在帖子Controller中创建一个“评论”操作,以添加评论。我的问题是:这是“标准”方式吗?我的另一个问题的答案之一似乎暗示应该有一个CommentsController参
在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList()Obt
我正在尝试查询我的Rails数据库(Postgres)中的购买表,我想查询时间范围。例如,我想知道在所有日期的下午2点到3点之间进行了多少次购买。此表中有一个created_at列,但我不知道如何在不搜索特定日期的情况下完成此操作。我试过:Purchases.where("created_atBETWEEN?and?",Time.now-1.hour,Time.now)但这最终只会搜索今天与那些时间的日期。 最佳答案 您需要使用PostgreSQL'sdate_part/extractfunction从created_at中提取小时
这是针对我无法破坏的现有公共(public)API,但我确实希望对其进行扩展。目前,该方法采用字符串或符号或任何其他在作为第一个参数传递给send时有意义的内容我想添加发送字符串、符号等列表的功能。我可以只使用is_a吗?数组,但还有其他发送列表的方法,这不是很像ruby。我将调用列表中的map,所以第一个倾向是使用respond_to?:map。但是字符串也会响应:map,所以这行不通。 最佳答案 如何将它们全部视为数组?String的行为与仅包含String的Array相同:deffoo(obj,arg)[*arg].eac
我创建了一个由于“在运行时执行的单例元类定义”而无法编码的对象(这段代码的描述是否正确?)。这是通过以下代码执行的:#defineclassXthatmyusesingletonclassmetaprogrammingfeatures#throughcallofmethod:break_marshalling!classXdefbreak_marshalling!meta_class=class我该怎么做才能使对象编码正确?是否可以从对象instance_of_x的classX中“移除”单例组件?我真的需要一个建议,因为我们的一些对象需要通过Marshal.dump序列化机制进行缓存。
我在Rails上使用带有ruby的solr。一切正常,我只需要知道是否有任何现有代码来清理用户输入,比如以?开头的查询。或* 最佳答案 我不知道执行此操作的任何代码,但理论上可以通过查看parsingcodeinLucene来完成并搜索thrownewParseException(只有16个匹配!)。在实践中,我认为您最好只捕获代码中的任何solr异常并显示“无效查询”消息或类似信息。编辑:这里有几个“sanitizer”:http://pivotallabs.com/users/zach/blog/articles/937-s