您好,登錄后才能下訂單哦!
小編給大家分享一下SpringBoot中集成Mybatis+xml格式的sql配置文件操作示例,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
最近一直在研究SpringBoot技術,由于項目需要,必須使用Mybatis持久化數據。所以就用SpringBoot集成Mybatis。
由于項目使用的是xml配置文件格式的SQL管理,所以SpringBoot必須配置Mybatis文件。但這樣做的話又與SpringBoot的零xml配置沖突。
所以索性使用java類來配置Mybatis。
import java.util.Properties; import javax.sql.DataSource; import org.apache.ibatis.plugin.Interceptor; import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.SqlSessionFactoryBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import org.springframework.core.io.support.ResourcePatternResolver; import com.github.pagehelper.PageHelper; import tk.mybatis.spring.mapper.MapperScannerConfigurer; /** * Mybatis & Mapper & PageHelper 配置 * * @file MybatisConfigurer.java * @author zoboy * @version 2.0.0 * @todo TODO Copyright(C), 2017 xi'an Coordinates Software Development Co., * Ltd. */ @Configuration public class MybatisConfigurer { static final String ALIASESPACKAG="com.cictec.cloud.bus.middleware.dc.common.biz.entity"; static final String MAPPERXMLPATH="classpath:sqlmapper/*.xml"; static final String BASEPACKAGE="com.cictec.cloud.bus.middleware.dc.mapper"; static final String DATABSAENAME="POSTGRESQL"; @Bean public SqlSessionFactory sqlSessionFactoryBean(DataSource dataSource) throws Exception { SqlSessionFactoryBean factory = new SqlSessionFactoryBean(); factory.setDataSource(dataSource); //實體類的包名(根據你的項目自行修改) factory.setTypeAliasesPackage(ALIASESPACKAG); //配置分頁插件,詳情請查閱官方文檔 PageHelper pageHelper = new PageHelper(); Properties properties = new Properties(); properties.setProperty("pageSizeZero", "true");//分頁尺寸為0時查詢所有紀錄不再執行分頁 properties.setProperty("reasonable", "true");//頁碼<=0 查詢第一頁,頁碼>=總頁數查詢最后一頁 properties.setProperty("supportMethodsArguments", "true");//支持通過 Mapper 接口參數來傳遞分頁參數 pageHelper.setProperties(properties); //添加插件 factory.setPlugins(new Interceptor[]{pageHelper}); //添加XML目錄 ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); //*.mapper.xml的地址(根據你的項目自行修改) factory.setMapperLocations(resolver.getResources(MAPPERXMLPATH)); return factory.getObject(); } @Bean public MapperScannerConfigurer mapperScannerConfigurer() { MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer(); mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactoryBean"); //*.mapper(*.dao)的包名(根據你的項目自行修改) mapperScannerConfigurer.setBasePackage(BASEPACKAGE); //配置通用Mapper,詳情請查閱官方文檔 Properties properties = new Properties(); //tk.mybatis.mapper.common.Mapper properties.setProperty("mappers", "tk.mybatis.mapper.common.Mapper"); properties.setProperty("notEmpty", "false");//insert、update是否判斷字符串類型!='' 即 test="str != null"表達式內是否追加 and str != '' //使用的數據庫類型名稱(MySQL,Oracle,Postgresql...) properties.setProperty("IDENTITY", DATABSAENAME); mapperScannerConfigurer.setProperties(properties); return mapperScannerConfigurer; } }
可以直接在你的項目中使用這個配置類,所要改動的地方有3處,我在代碼中用注釋標注了。
經測試,可以正常運行。
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <mapper namespace="com.test.dao.StrategyDao"> <resultMap id="StrategyResultMap" type="com.test.entity.Strategy"> <result property="id" column="id"/> <result property="projectId" column="project_id"/> <result property="strategyType" column="strategy_type"/> <result property="strategyName" column="strategy_name"/> <result property="alias" column="alias"/> </resultMap> <select id="findNameList" resultType="java.util.Map" parameterType="com.test.entity.Strategy"> SELECT DISTINCT t.strategy_name strategyName,t.alias from test_strategy t WHERE t.project_id=#{projectId, jdbcType=INTEGER} AND t.del_status=0 AND t.strategy_type =#{strategyType} AND (t.strategy_name LIKE concat('%',#{strategyName,jdbcType=VARCHAR},'%') or t.alias LIKE concat('%',#{strategyName,jdbcType=VARCHAR},'%')) </select> </mapper>
@MyBatisRepository public interface StrategyDao extends ICrudDao<Strategy, Integer> { List<Map<String,Object>> findNameList(Strategy entity); }
public List<Map<String, Object>> findNameList(Strategy strategy) throws Exception { try { return dao.findNameList(strategy); } catch (Exception var3) { throw new MySqlException("P2101", "數據庫執行異常", var3); } } ----------- public class MySqlException extends ServiceException { public MySqlException(String errorCode, Object[] args) { super(errorCode, args); } public MySqlException(String errorCode) { super(errorCode); } public MySqlException(String errorCode, String message) { super(errorCode, message); } public MySqlException(String errorCode, String message, Throwable cause) { super(errorCode, message, cause); } }
@RequestMapping("/nameList") public Map<String, Object> findNameList(@RequestBody Strategy strategy) throws Exception { try { return result(strategyService.findNameList(strategy)); } catch (Exception e) { throw e; } } ----------- public Map<String, Object> result(Object object) { Map<String, Object> result = new HashMap(); ResultUtil.addSuccessResult(result, object); return result; } ------- public class ResultUtil { public ResultUtil() { } public static void addSuccessResult(Map<String, Object> resultMap, Object data) { resultMap.put("result", "1"); resultMap.put("msg", "調用成功!"); resultMap.put("code", "200"); resultMap.put("data", data); } }
以上是“SpringBoot中集成Mybatis+xml格式的sql配置文件操作示例”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。