封装Java类使得处理mybaties方法变得简单

 封装的效果:Java项目中可以直接使用类中的方法调用mapper.xml中对应namaspace、sqlid的SQL语句。不需要在Java中再申明接口等。

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.session.SqlSession;

public class MybatisUtils {

  private static SqlSession sqlSession = null;

  /**
   * 初始化SqlSession对象
   */
  public static void init(SqlSession session) {
    sqlSession = session;
  }

  /**
   * 通用查询方法,返回List>格式的结果集
   *
   * @param namespace mybatis mapper映射文件定义的命名空间
   * @param sqlid     mybatis mapper映射文件定义的sql id
   * @param param     map格式的入参
   * @return List>格式的结果集
   */
  public static List> queryForList(String namespace, String sqlid,
      Map param) {
    return sqlSession.selectList(namespace + "." + sqlid, param);
  }

  /**
   * 通用查询方法,返回指定类型的结果集
   *
   * @param namespace mybatis mapper映射文件定义的命名空间
   * @param sqlid     mybatis mapper映射文件定义的sql id
   * @param param     map格式的入参
   * @param clazz     返回结果的类型
   * @param        返回结果的类型
   * @return 指定类型的结果集
   */
  public static  List queryForList(String namespace, String sqlid, Map param,
      Class clazz) {
    return sqlSession.selectList(namespace + "." + sqlid, param, new MybatisResultHandler<>(clazz));
  }

  /**
   * 通用查询方法,返回Map格式的单条记录
   *
   * @param namespace mybatis mapper映射文件定义的命名空间
   * @param sqlid     mybatis mapper映射文件定义的sql id
   * @param param     map格式的入参
   * @return Map格式的单条记录
   */
  public static Map queryForMap(String namespace, String sqlid,
      Map param) {
    return sqlSession.selectOne(namespace + "." + sqlid, param);
  }

  /**
   * 通用查询方法,返回指定类型的单条记录
   *
   * @param namespace mybatis mapper映射文件定义的命名空间
   * @param sqlid     mybatis mapper映射文件定义的sql id
   * @param param     map格式的入参
   * @param clazz     返回结果的类型
   * @param        返回结果的类型
   * @return 指定类型的单条记录
   */
  public static  T queryForObject(String namespace, String sqlid, Map param,
      Class clazz) {
    return sqlSession.selectOne(namespace + "." + sqlid, param, new MybatisResultHandler<>(clazz));
  }

  /**
   * 通用插入方法,返回插入的记录数
   *
   * @param namespace mybatis mapper映射文件定义的命名空间
   * @param sqlid     mybatis mapper映射文件定义的sql id
   * @param param     map格式的入参
   * @return 插入的记录数
   */
  public static int insert(String namespace, String sqlid, Map param) {
    return sqlSession.insert(namespace + "." + sqlid, param);
  }

  /**
   * 通用更新方法,返回更新的记录数
   *
   * @param namespace mybatis mapper映射文件定义的命名空间
   * @param sqlid     mybatis mapper映射文件定义的sql id
   * @param param     map格式的入参
   * @return 更新的记录数
   */
  public static int update(String namespace, String sqlid, Map param) {
    return sqlSession.update(namespace + "." + sqlid, param);
  }

  /**
   * 通用删除方法,返回删除的记录数
   *
   * @param namespace mybatis mapper映射文件定义的命名空间
   * @param sqlid     mybatis mapper映射文件定义的sql id
   * @param param     map格式的入参
   * @return 删除的记录数
   */
  public static int delete(String namespace, String sqlid, Map param) {
    return sqlSession.delete(namespace + "." + sqlid, param);
  }

  /**
   * 通用查询方法,返回List>格式的结果集
   *
   * @param namespace mybatis mapper映射文件定义的命名空间
   * @param sqlid     mybatis mapper映射文件定义的sql id
   * @param args      key-value形式的入参,当需要传入参数是bean时,key设置为空字符串
   * @return List>格式的结果集
   */
  public static List> queryForList(String namespace, String sqlid,
      Object... args) {
    Map param = new HashMap<>();
    for (int i = 0; i < args.length; i += 2) {
      param.put((String) args[i], args[i + 1]);
    }
    return sqlSession.selectList(namespace + "." + sqlid, param);
  }

  /**
   * 通用查询方法,返回指定类型的结果集
   *
   * @param namespace mybatis mapper映射文件定义的命名空间
   * @param sqlid     mybatis mapper映射文件定义的sql id
   * @param clazz     返回结果的类型
   * @param args      key-value形式的入参,当需要传入参数是bean时,key设置为空字符串
   * @param        返回结果的类型
   * @return 指定类型的结果集
   */
  public static  List queryForList(String namespace, String sqlid, Class clazz,
      Object... args) {
    Map param = new HashMap<>();
    for (int i = 0; i < args.length; i += 2) {
      param.put((String) args[i], args[i + 1]);
    }
    return sqlSession.selectList(namespace + "." + sqlid, param, new MybatisResultHandler<>(clazz));
  }

  /**
   * 通用查询方法,返回Map格式的单条记录
   *
   * @param namespace mybatis mapper映射文件定义的命名空间
   * @param sqlid     mybatis mapper映射文件定义的sql id
   * @param args      key-value形式的入参,当需要传入参数是bean时,key设置为空字符串
   * @return Map格式的单条记录
   */
  public static Map queryForMap(String namespace, String sqlid,
      Object... args) {
    Map param = new HashMap<>();
    for (int i = 0; i < args.length; i += 2) {
      param.put((String) args[i], args[i + 1]);
    }
    return sqlSession.selectOne(namespace + "." + sqlid, param);
  }
}

你可能感兴趣的:(java,开发语言)