我有一个使用mybatis进行对象持久化的应用程序.但是我有机会运行任意的sql(来自用户).我可以用mybatis做吗?
更新:
我选择使用dbutils(JDBC)来运行用户定义的sql,但我需要一个DataSource实例来创建QueryRunner.有什么方法可以从mybatis获取数据源吗?
解决方法
我用这个实用类:
- import java.util.List;
- import org.apache.ibatis.annotations.SelectProvider;
- public interface sqlMapper {
- static class PuresqlProvider {
- public String sql(String sql) {
- return sql;
- }
- public String count(String from) {
- return "SELECT count(*) FROM " + from;
- }
- }
- @SelectProvider(type = PuresqlProvider.class,method = "sql")
- public List<?> select(String sql);
- @SelectProvider(type = PuresqlProvider.class,method = "count")
- public Integer count(String from);
- @SelectProvider(type = PuresqlProvider.class,method = "sql")
- public Integer execute(String query);
- }