mybatis直接执行sql语句
2013-02-06 10:06
489 查看
在项目中,使用的是mybatis3.0.5,但没有采用其提供的DAO层接口映射的策略,而且在进行多种属性联合查找时,需要底层提供通用的解决方案,所以需要mybatis直接执行sql语句,各个daoImpl均可调用,减少了在每个mybatis文件中配置符合当前对象的select查询。。
(在mybatis中,需要通过传递对象,在select中判断对象属性是否为空进行where语句的拼凑,对后期的维护工作带来不小的考验,所以采用直接执行sql策略)
先说一说配置时,遇到的异常:
Xml代码
<select id="findRecords" parameterType="String" resultMap="orderTypeResultMap">
${sql}
</select>
这样配置时,会出现:there no getter sql in java.lang.String 的异常
所以考虑:用一个适配器,将sql作为属性加入其中
首先:
Xml代码
<typeAlias alias="sqladapter" type="com.zj.logistics.util.SQLAdapter" />
其次:
Java代码
public class SQLAdapter {
String sql;
public SQLAdapter(String sql) {
this.sql = sql;
}
public String getSql() {
return sql;
}
public void setSql(String sql) {
this.sql = sql;
}
}
最后:
Xml代码
<select id="findRecords" parameterType="SQLAdapter" resultMap="orderTypeResultMap">
${sql}
</select>
注意,不要忘记在调用该select方法时,用new SqlAdapter("自己写的sql语句")作为参数哦。。。
搞定。。
真能折腾人的,这个直接写 value 不就可以了?
<select id="findRecords" parameterType="String" resultMap="orderTypeResultMap">
${value}
</select>
(在mybatis中,需要通过传递对象,在select中判断对象属性是否为空进行where语句的拼凑,对后期的维护工作带来不小的考验,所以采用直接执行sql策略)
先说一说配置时,遇到的异常:
Xml代码
<select id="findRecords" parameterType="String" resultMap="orderTypeResultMap">
${sql}
</select>
这样配置时,会出现:there no getter sql in java.lang.String 的异常
所以考虑:用一个适配器,将sql作为属性加入其中
首先:
Xml代码
<typeAlias alias="sqladapter" type="com.zj.logistics.util.SQLAdapter" />
其次:
Java代码
public class SQLAdapter {
String sql;
public SQLAdapter(String sql) {
this.sql = sql;
}
public String getSql() {
return sql;
}
public void setSql(String sql) {
this.sql = sql;
}
}
最后:
Xml代码
<select id="findRecords" parameterType="SQLAdapter" resultMap="orderTypeResultMap">
${sql}
</select>
注意,不要忘记在调用该select方法时,用new SqlAdapter("自己写的sql语句")作为参数哦。。。
搞定。。
真能折腾人的,这个直接写 value 不就可以了?
<select id="findRecords" parameterType="String" resultMap="orderTypeResultMap">
${value}
</select>
相关文章推荐
- mybatis直接执行sql语句
- 原!!mybatis如何直接 执行传入的任意sql语句 并按照顺序取出查询的结果集
- mybatis直接执行sql语句
- mybatis如何直接 执行传入的任意sql语句 并按照顺序取出查询的结果集
- mybatis直接执行前台传递的sql语句(mapper参数即为sql字符串)
- 关于EF中直接执行sql语句的参数化问题
- MyBatis直接执行SQL查询及批量插入数据
- Django中直接执行SQL语句
- MyBatis直接执行SQL的工具SqlMapper
- mybatis将执行的sql语句输出
- MyBatis直接执行SQL查询及批量插入数据
- [MyBatis]获取数据库连接、批量执行SQL语句
- log4j2打印Mybatis执行的SQL语句及SQL语句的执行时间
- Java-mybatis-一次执行多条SQL语句
- Mybatis一条语句执行多条sql的方法
- Yii 直接执行SQL语句的几种使用方法
- 关于拼sql语句执行与直接执行存储过程的效率比较
- 在EF4.1的DBContext中实现事务处理(BeginTransaction)和直接执行SQL语句的示例
- 在mybatis执行SQL语句之前进行拦击处理实例
- .NET Entity Framework(EF)使用SqlQuery直接操作SQL查询语句或者执行过程