内容简介:前段时间一直忙项目,而且一直在用 typescript 写动态查询,结果一看 java 版本已经一年没有更新了,感觉要加点东西了。更新了两点:默认来说,我们会把所有的字段全部返回,有些字段我们不想返回,比如 password
前段时间一直忙项目,而且一直在用 typescript 写动态查询,结果一看 java 版本已经一年没有更新了,感觉要加点东西了。
2.3 更新
更新了两点:
- 支持选择字段查询
- 支持链式调用在 DynamicQuery 类中
选择字段查询
默认来说,我们会把所有的字段全部返回,有些字段我们不想返回,比如 password
下面我们来看个例子:
- 创建一个实体 Entity
@Table(name = "product") public class Product{ @Column(name = "product_id", insertable = false, updatable = false) private Integer productID; private String productName; private BigDecimal price; private Integer categoryID; ... }
- 创建我们 Dao 继承自 DynamicQueryMapper
public interface ProductDaoextends DynamicQueryMapper<Product>{ }
- 利用 addSelectField 方法来描述我们需要哪些字段,这里例子中,我们只需要:productName, price.
@Test public void testSelectFields(){ DynamicQuery<Product> dynamicQuery = DynamicQuery.createQuery(Product.class) .addSelectField(Product::getProductName) .addSelectField(Product::getPrice); List<Product> products = PageHelper.startPage(0, 3, false) .doSelectPage(() -> productDao.selectByDynamicQuery(dynamicQuery)); for (Product p : products) { // categoryID ignore to select assertEquals(null, p.getCategoryID()); assertEquals(true, StringUtils.isNotBlank(p.getProductName())); } }
- 我们同样可以看一下 mybatis 控制台输出结果, 确实我们只选择了 productName 和 price
==> Preparing: SELECT price AS price, product_name AS product_name FROM product LIMIT 3 ==> Parameters: <== Columns: PRICE, PRODUCT_NAME <== Row: 18.0000, Northwind Traders Chai <== Row: 7.5000, Northwind Traders Syrup <== Row: 16.5000, Northwind Traders Cajun Seasoning <== Total: 3
链式调用
为了让代码写的比较舒服,不用再手动 new FilterDescritpor 了。
@Resource private ProductDao productDao; @Test public void testLinkOperation(){ DynamicQuery<Product> dynamicQuery = DynamicQuery.createQuery(Product.class) .addSelectField(Product::getProductID) .addSelectField(Product::getProductName) .addSelectField(Product::getPrice) .addFilterDescriptor(Product::getPrice, FilterOperator.GREATER_THAN, 16) .addSortDescriptor(Product::getPrice, SortDirection.DESC) .addSortDescriptor(Product::getProductID, SortDirection.DESC); List<Product> products = PageHelper.startPage(0, 100, false) .doSelectPage(() -> productDao.selectByDynamicQuery(dynamicQuery)); for (Product p : products) { // categoryID ignore to select assertEquals(null, p.getCategoryID()); assertEquals(true, StringUtils.isNotBlank(p.getProductName())); // price > 16 assertEquals(1, p.getPrice().compareTo(BigDecimal.valueOf(16))); } }
看一下输出结果和用 new FilterDescriptor,new SortDesciptor 效果是一样的, 并且在价格一样的时候,ID 是倒叙排列的。
==> Preparing: SELECT product_id AS product_id, price AS price, product_name AS product_name FROM product WHERE (price > ?) ORDER BY price DESC, product_id DESC LIMIT 100 ==> Parameters: 16(Integer) <== Columns: PRODUCT_ID, PRICE, PRODUCT_NAME <== Row: 1, 18.0000, Northwind Traders Chai <== Row: 4, 16.5000, Northwind Traders Olive Oil <== Row: 3, 16.5000, Northwind Traders Cajun Seasoning <== Total: 3
结束
时隔一年已经在项目中一直使用,感觉还是蛮顺手的,希望大家能支持一下。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- oscnews 1.3.0 更新,更新趋势榜功能
- VLOOK V9.23 更新!表格自动排版大更新
- oscnews 1.0.0 更新,软件更新资讯 Chrome 插件
- .NET Framework 4.8 的 Microsoft 更新目录更新
- 网游丨一月一更新,一更更一月,如何实现热更新?
- CCleaner v5.74.8184 发布:重要更新版本、可自动更新
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Making Things See
Greg Borenstein / Make / 2012-2-3 / USD 39.99
Welcome to the Vision Revolution. With Microsoft's Kinect leading the way, you can now use 3D computer vision technology to build digital 3D models of people and objects that you can manipulate with g......一起来看看 《Making Things See》 这本书的介绍吧!