Mybatis映射DAO接口问题
/**
* 搜索条件类
*
*/
//为了做查询方便,添加了一个搜索条件类
public class Condition {
public String propName; //类属性
public Object propValue; //类属性值
public Relation relation; //关系类,一个枚举类,存放一些关系,如:>=,<=,like等
public Condition() {
}
public Condition(String propName, Object propValue, Relation relation) {
this.propName = propName;
this.propValue = propValue;
this.relation = relation;
}
}
//DAO接口里的方法,第二个参数和第三个参数为分页用
public List<T> findList(List<Condition> paramConditions,
int paramInt1, int paramInt2);
public List<T> findList(List<Condition> paramConditions);
这个方法在Mapper.XML里该怎么映射啊?还有如果DAO接口里的方法有重载又该怎么映射啊?怎么感觉Mybatis比Hibernate麻烦呢,还不如自己写HQL语句呢。。
------解决方案--------------------mybatis对应dao里貌似不能有重载,否在对应的sql id就会冲突
有两种方式可以传递参数:
1:注解方式 比如参数 @param
可以在org.apache.ibatis.annotations包中找到所有的注解
2:在对应的映射文件中使用参数类型
比如
<insert id="insert" parameterType="com.xxx.XXXVo">
把参数包装成bean的形式,对外提供setter,getter方法即可
在slq中可以使用类似这样的形式抓取数据USERNAME=#{userName},
------解决方案--------------------比如sql:select * from condition
queryForList("selectbypage", Condition, 3, 10)
和
queryForList("selectbypage")执行的是同一条sql,但是执行结果是不同的,第一个是根据起始index和查询条数查询出复合条件的10条数据,第二个是查询出所有复合条件的数据
------解决方案--------------------myibatis 本来就是要自己写sql 的
------解决方案--------------------自己写SqlBuilder类,或者SqlProvider类。