中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SpringBoot中集成Mybatis+xml格式的sql配置文件操作示例

發布時間:2021-07-31 10:40:11 來源:億速云 閱讀:173 作者:小新 欄目:開發技術

小編給大家分享一下SpringBoot中集成Mybatis+xml格式的sql配置文件操作示例,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

最近一直在研究SpringBoot技術,由于項目需要,必須使用Mybatis持久化數據。所以就用SpringBoot集成Mybatis。

由于項目使用的是xml配置文件格式的SQL管理,所以SpringBoot必須配置Mybatis文件。但這樣做的話又與SpringBoot的零xml配置沖突。

所以索性使用java類來配置Mybatis。

下面是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處,我在代碼中用注釋標注了。

項目結構如下圖所示:

SpringBoot中集成Mybatis+xml格式的sql配置文件操作示例

經測試,可以正常運行。

Mybatis xml文件配置sql標準格式

1.Mapper.xml

<?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>

2.Dao

@MyBatisRepository
public interface StrategyDao extends ICrudDao<Strategy, Integer> {
  List<Map<String,Object>> findNameList(Strategy entity);
}

3.service

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);
    }
}

4.Controller

 @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配置文件操作示例”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

巩义市| 安泽县| 城市| 睢宁县| 桐城市| 永丰县| 缙云县| 辽中县| 新宾| 通许县| 图木舒克市| 赣州市| 长海县| 米泉市| 固阳县| 湘乡市| 昆明市| 昌图县| 利津县| 汉寿县| 惠水县| 桐梓县| 玛多县| 保德县| 徐州市| 海城市| 精河县| 波密县| 蕲春县| 隆安县| 长兴县| 寻甸| 德阳市| 惠安县| 彭阳县| 韶山市| 文安县| 邹平县| 伊吾县| 云和县| 夏津县|