- Pojo, 也就是面向对象Java Object。Beetlsql操作将选取Pojo的属性和sql列的交集。额外属性和额外列将忽略.
- Map/List, 对于一些敏捷开发,可以直接使用Map/List 作为输入输出参数
- 混合模型,推荐使用混合模型。兼具灵活性和更好的维护性。Pojo可以实现Tail(尾巴的意思),或者继承TailBean,这样查询出的ResultSet 除了按照pojo进行映射外,无法映射的值将按照列表/值保存。如下一个混合模型:
public User extends TailBean{
private int id ;
private String name;
private int roleId;
/*以下是getter和setter 方法*/
对于sql语句:
执行查询的时候
List<User> list = sqlManager.select("user.selectUser",User.class,paras);
System.out.println(user.getId());
System.out.println(user.get("rName"));
}
另外一种更自由的实现混合模型的方法是在目标Pojo上采用注解@Tail,如果注解不带参数,则默认会调用set(String,Object) 方法来放置额外的查询属性,否则,依据注解的set参数来确定调用方法
不仅仅查询结果支持这种混合模型,查询条件也支持。BeetlSql在调用底层SQLScript的时候,传递的参数实际上是Map,包含了sql语句需要的键值对。有一个特殊的键是"_root", 如果Beetlsql未在Map中找到,则从"_root"中查找,"_root"可以是个Map,或者是个Pojo。从"_root" 继续查找
Map map = new HashMap();
User query = .....
map.put("_root",query);
map.put("maxAge",19);
List<User> list = sqlManager.select("user.select",User.class,map);
sql语句可以使用user的所有属性,“user.select” 如下
翻页查询中的参数设置PageQuery.setParas 同样可以使用这种方式,或者直接通过PageQuery API完成
PageQuery query = .....
User user = ...
query.setParas(user);
query.setParas("maxAge",19);
query.setParas("minAge",15);