/** * 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* 填充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); } }