MyBatis直接执行SQL的工具SqlMapper


本文整理自网络,侵删。

可能有些人也有过类似需求,一般都会选择使用其他的方式如Spring-JDBC等方式解决。

能否通过MyBatis实现这样的功能呢?

为了让通用Mapper更彻底的支持多表操作以及更灵活的操作,在2.2.0版本增加了一个可以直接执行SQL的新类SqlMapper。

我们来了解一下SqlMapper。

SqlMapper提供的方法

SqlMapper提供了以下这些公共方法:

  • Map<String,Object> selectOne(String sql)
  • Map<String,Object> selectOne(String sql, Object value)
  • <T> T selectOne(String sql, Class<T> resultType)
  • <T> T selectOne(String sql, Object value, Class<T> resultType)
  • List<Map<String,Object>> selectList(String sql)
  • List<Map<String,Object>> selectList(String sql, Object value)
  • <T> List<T> selectList(String sql, Class<T> resultType)
  • <T> List<T> selectList(String sql, Object value, Class<T> resultType)
  • int insert(String sql)
  • int insert(String sql, Object value)
  • int update(String sql)
  • int update(String sql, Object value)
  • int delete(String sql)
  • int delete(String sql, Object value)

一共14个方法,这些方法的命名和参数和SqlSession接口的很像,只是基本上第一个参数都成了sql。

其中Object value为入参,入参形式和SqlSession中的入参一样,带有入参的方法,在使用时sql可以包含#{param}或${param}形式的参数,这些参数需要通过入参来传值。需要的参数过多的时候,参数可以使用Map类型。另外这种情况下的sql还支持下面这种复杂形式:

String sql = "<script>select * from sys_user where 1=1" + 
    "<if test=\"usertype != null\">usertype = #{usertype}</if></script>";

这种情况用的比较少,不多说。

不带有Object value的所有方法,sql中如果有参数需要手动拼接成一个可以直接执行的sql语句。

在selectXXX方法中,使用Class<T> resultType可以指定返回类型,否则就是Map<String,Object>类型。

实例化SqlMapper

SqlMapper构造参数public SqlMapper(SqlSession sqlSession),需要一个入参SqlSession sqlSession,在一般系统中,可以按照下面的方式获取:

SqlSession sqlSession = (...);//通过某些方法获取sqlSession
//创建sqlMapper
SqlMapper sqlMapper = new SqlMapper(sqlSession);

如果使用的Spring,那么可以按照下面的方式配置<bean>:

<bean id="sqlMapper" class="com.github.abel533.sql.SqlMapper" scope="prototype">
 <constructor-arg ref="sqlSession"/>
</bean>

在Service中使用的时候可以直接使用@Autowired注入。

简单例子

在src/test/java目录的com.github.abel533.sql包中包含这些方法的测试。

下面挑几个看看如何使用。

阅读剩余部分

相关阅读 >>

sql中select语句的语法结构是什么?

sqlserver 常用日期时间函数

sql server 分组统计并合计总数及with rollup应用

如何写优雅的sql原生语句

asp.net中数据库操作初步

oracle plsql中异常高级特性示例解析

sql server 2008中的代码安全(八)透明加密(tde)

mybatis动态sqlif的test写法及规则详解

mysql单表查询常见操作实例总结

sql触发器之常用语句(总结)

更多相关阅读请进入《sql》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...