/** * Copyright (c) 2011-2020, hubin (jobob@qq.com). *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package com.baomidou.mybatisplus.mapper; import java.util.List; import org.apache.ibatis.logging.Log; import org.apache.ibatis.logging.LogFactory; import org.apache.ibatis.session.Configuration; import org.apache.ibatis.session.ExecutorType; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import com.baomidou.mybatisplus.entity.TableInfo; import com.baomidou.mybatisplus.exceptions.MybatisPlusException; import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.toolkit.CollectionUtils; import com.baomidou.mybatisplus.toolkit.GlobalConfigUtils; import com.baomidou.mybatisplus.toolkit.MapUtils; import com.baomidou.mybatisplus.toolkit.TableInfoHelper; /** *

* SQL 辅助类 *

* * @author hubin * @Date 2016-11-06 */ public class SqlHelper { private static final Log logger = LogFactory.getLog(SqlHelper.class); /** *

* 获取Session 默认自动提交 *

*

* 特别说明:这里获取SqlSession时这里虽然设置了自动提交但是如果事务托管了的话 是不起作用的 切记!! *

* * @return SqlSession */ public static SqlSession sqlSession(Class clazz) { return sqlSession(clazz, true); } /** *

* 批量操作 SqlSession *

* * @param clazz 实体类 * @return SqlSession */ public static SqlSession sqlSessionBatch(Class clazz) { return GlobalConfigUtils.currentSessionFactory(clazz).openSession(ExecutorType.BATCH); } /** *

* 获取sqlSession *

* * @param clazz 对象类 * @return */ private static SqlSession getSqlSession(Class clazz) { SqlSession session = null; try { SqlSessionFactory sqlSessionFactory = GlobalConfigUtils.currentSessionFactory(clazz); Configuration configuration = sqlSessionFactory.getConfiguration(); session = GlobalConfigUtils.getGlobalConfig(configuration).getSqlSession(); } catch (Exception e) { // ignored } return session; } /** *

* 获取Session *

* * @param clazz 实体类 * @param autoCommit true自动提交false则相反 * @return SqlSession */ public static SqlSession sqlSession(Class clazz, boolean autoCommit) { SqlSession sqlSession = getSqlSession(clazz); return (sqlSession != null) ? sqlSession : GlobalConfigUtils.currentSessionFactory(clazz).openSession(autoCommit); } /** *

* 获取TableInfo *

* * @param clazz 对象类 * @return TableInfo 对象表信息 */ public static TableInfo table(Class clazz) { TableInfo tableInfo = TableInfoHelper.getTableInfo(clazz); if (null == tableInfo) { throw new MybatisPlusException("Error: Cannot execute table Method, ClassGenricType not found ."); } return tableInfo; } /** *

* 判断数据库操作是否成功 *

* * @param result 数据库操作返回影响条数 * @return boolean */ public static boolean retBool(Integer result) { return null != result && result >= 1; } /** *

* 删除不存在的逻辑上属于成功 *

* * @param result 数据库操作返回影响条数 * @return boolean */ public static boolean delBool(Integer result) { return null != result && result >= 0; } /** *

* 返回SelectCount执行结果 *

* * @param result * @return int */ public static int retCount(Integer result) { return (null == result) ? 0 : result; } /** *

* 从list中取第一条数据返回对应List中泛型的单个结果 *

* * @param list * @param * @return */ public static E getObject(List list) { if (CollectionUtils.isNotEmpty(list)) { int size = list.size(); if (size > 1) { logger.warn(String.format("Warn: execute Method There are %s results.", size)); } return list.get(0); } return null; } /** *

* 填充Wrapper *

* * @param page 分页对象 * @param wrapper SQL包装对象 */ public static void fillWrapper(Page page, Wrapper wrapper) { if (null == page) { return; } // wrapper 不存创建一个 Condition if (isEmptyOfWrapper(wrapper)) { wrapper = Condition.create(); } // 排序 if (page.isOpenSort()) { wrapper.orderAsc(page.getAsc()); wrapper.orderDesc(page.getDesc()); } // MAP 参数查询 if (MapUtils.isNotEmpty(page.getCondition())) { wrapper.allEq(page.getCondition()); } } /** *

* 判断Wrapper为空 *

* * @param wrapper SQL包装对象 * @return */ public static boolean isEmptyOfWrapper(Wrapper wrapper) { return null == wrapper || Condition.EMPTY.equals(wrapper); } /** *

* 判断Wrapper不为空 *

* * @param wrapper SQL包装对象 * @return */ public static boolean isNotEmptyOfWrapper(Wrapper wrapper) { return !isEmptyOfWrapper(wrapper); } }