gpt4 book ai didi

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

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章SpringBoot集成Mybatis+xml格式的sql配置文件操作由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

SpringBoot集成Mybatis+xml格式的sql配置文件

最近一直在研究SpringBoot技术,由于项目需要,必须使用Mybatis持久化数据。所以就用SpringBoot集成Mybatis.

由于项目使用的是xml配置文件格式的SQL管理,所以SpringBoot必须配置Mybatis文件。但这样做的话又与SpringBoot的零xml配置冲突.

所以索性使用java类来配置Mybatis.

下面是Mybatis的配置类:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<? 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

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

3.service

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
@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);
     }
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我.

原文链接:https://blog.csdn.net/u011051912/article/details/74295172 。

最后此篇关于SpringBoot集成Mybatis+xml格式的sql配置文件操作的文章就讲到这里了,如果你想了解更多关于SpringBoot集成Mybatis+xml格式的sql配置文件操作的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com