• Pojo, 也就是面向对象Java Object。Beetlsql操作将选取Pojo的属性和sql列的交集。额外属性和额外列将忽略.
    • Map/List, 对于一些敏捷开发,可以直接使用Map/List 作为输入输出参数
    • 混合模型,推荐使用混合模型。兼具灵活性和更好的维护性。Pojo可以实现Tail(尾巴的意思),或者继承TailBean,这样查询出的ResultSet 除了按照pojo进行映射外,无法映射的值将按照列表/值保存。如下一个混合模型:
    1. public User extends TailBean{
    2. private int id ;
    3. private String name;
    4. private int roleId;
    5. /*以下是getter和setter 方法*/

    对于sql语句:

    执行查询的时候

    1. List<User> list = sqlManager.select("user.selectUser",User.class,paras);
    2. System.out.println(user.getId());
    3. System.out.println(user.get("rName"));
    4. }

    另外一种更自由的实现混合模型的方法是在目标Pojo上采用注解@Tail,如果注解不带参数,则默认会调用set(String,Object) 方法来放置额外的查询属性,否则,依据注解的set参数来确定调用方法

    不仅仅查询结果支持这种混合模型,查询条件也支持。BeetlSql在调用底层SQLScript的时候,传递的参数实际上是Map,包含了sql语句需要的键值对。有一个特殊的键是"_root", 如果Beetlsql未在Map中找到,则从"_root"中查找,"_root"可以是个Map,或者是个Pojo。从"_root" 继续查找

    1. Map map = new HashMap();
    2. User query = .....
    3. map.put("_root",query);
    4. map.put("maxAge",19);
    5. List<User> list = sqlManager.select("user.select",User.class,map);

    sql语句可以使用user的所有属性,“user.select” 如下

    翻页查询中的参数设置PageQuery.setParas 同样可以使用这种方式,或者直接通过PageQuery API完成

    1. PageQuery query = .....
    2. User user = ...
    3. query.setParas(user);
    4. query.setParas("maxAge",19);
    5. query.setParas("minAge",15);