MyBatis 直接执行SQL语句的工具类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类型。

不带有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注入。