Mybatis使用Annotation实现动态参数和自定义返回对象查询

最近又复习了JPA和Hibernate,JPA-hibernate到现在支持自定义对象和动态参数查询都很复杂,早应该简化了。

Mybatis变得如此受欢迎,确实有原因的。

查询语句需要:

a.自定义Object,比如ProductWithTypeName

b.支持根据动态参数组装sql语句

在Mybatis里面实现这两个要求就很简单和方便。

我喜欢用注解,不想用xml配置文件,继续简化和少些代码。

public class ProductWithTypeName {

private Integer prodectId;

private String productName;

private  Integer typeId;

private String typeName;

1. 实现方式一

@Select({ ""

  })

public List queryProductAnnotation(@Param("pname")String

  productName,@Param("tname") String typeName);

根据参数动态构建查询sql也可以写在注解里面,确实方便。

2.实现方式二,增加provider

@SelectProvider(type=MerchantManageDaoSqlProvider.class,method="queryProductProvider")

public List queryProduct(String productName,String typeName);

public class MerchantManageDaoSqlProvider {

public String queryProductProvider(String productName,String typeName) {

String sql="select p.id as prodectId, p.name as productName,type.id as typeId,type.name as typeName "

+ "from product p left join product_type type on p.product_type =type.id where 1=1 ";

if(StringUtils.isNotBlank(productName)) {

sql+=" and p.name='"+productName+"'";

}

if(StringUtils.isNotBlank(typeName)) {

sql+=" and type.name='"+typeName+"'";

}

return sql;

}

}

这两种实现方式都很方便。

Mybatis确实实用。

你可能感兴趣的:(Mybatis使用Annotation实现动态参数和自定义返回对象查询)