/** * Copyright (c) 2011-2020, hubin (jobob@qq.com). * <p> * 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 * <p> * http://www.apache.org/licenses/LICENSE-2.0 * <p> * 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.GlobalConfiguration; 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.TableInfoHelper; /** * <p> * SQL 辅助类 * </p> * * @author hubin * @Date 2016-11-06 */ public class SqlHelper { private static final Log logger = LogFactory.getLog(SqlHelper.class); /** * 获取Session 默认自动提交 * <p> * 特别说明:这里获取SqlSession时这里虽然设置了自动提交但是如果事务托管了的话 是不起作用的 切记!! * <p/> * * @return SqlSession */ public static SqlSession sqlSession(Class<?> clazz) { return sqlSession(clazz, true); } /** * <p> * 批量操作 SqlSession * </p> * * @param clazz 实体类 * @return SqlSession */ public static SqlSession sqlSessionBatch(Class<?> clazz) { return GlobalConfiguration.currentSessionFactory(clazz).openSession(ExecutorType.BATCH); } /** * 获取sqlSessionå * * @param clazz * @return */ private static SqlSession getSqlSession(Class<?> clazz) { SqlSession session = null; try { SqlSessionFactory sqlSessionFactory = GlobalConfiguration.currentSessionFactory(clazz); Configuration configuration = sqlSessionFactory.getConfiguration(); session = GlobalConfiguration.getGlobalConfig(configuration).getSqlSession(); } catch (Exception e) { // ignored } return session; } /** * <p> * 获取Session * </p> * * @param clazz 实体类 * @param autoCommit true自动提交false则相反 * @return SqlSession */ public static SqlSession sqlSession(Class<?> clazz, boolean autoCommit) { SqlSession sqlSession = getSqlSession(clazz); return (sqlSession != null) ? sqlSession : GlobalConfiguration.currentSessionFactory(clazz).openSession(autoCommit); } /** * 获取TableInfo * * @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; } /** * <p> * 判断数据库操作是否成功 * </p> * * @param result 数据库操作返回影响条数 * @return boolean */ public static boolean retBool(Integer result) { return null != result && result >= 1; } /** * <p> * 返回SelectCount执行结果 * </p> * * @param result * @return int */ public static int retCount(Integer result) { return (null == result) ? 0 : result; } /** * <p> * 从list中取第一条数据返回对应List中泛型的单个结果 * </p> * * @param list * @param <E> * @return */ public static <E> E getObject(List<E> 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 */ public static void fillWrapper(Page<?> page, Wrapper<?> wrapper) { if (null == page) { return; } if (isNotEmptyOfWrapper(wrapper)) { if (page.isOpenSort()) { wrapper.orderBy(page.getOrderByField(), page.isAsc()); } wrapper.allEq(page.getCondition()); } } /** * 判断Wrapper为空 * * @param wrapper * @return */ public static boolean isEmptyOfWrapper(Wrapper<?> wrapper) { return null == wrapper || Condition.EMPTY.equals(wrapper); } /** * 判断Wrapper不为空 * * @param wrapper * @return */ public static boolean isNotEmptyOfWrapper(Wrapper<?> wrapper) { return !isEmptyOfWrapper(wrapper); } }