• spring boot集成mybatis


    1.在pom中添加依赖:

    #mybatis依赖

    <dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.1.1</version>
    </dependency>

    #mysql
    <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.21</version>
    </dependency>

    #分页插件 

    <dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>4.1.1</version>
    </dependency>

    #通用mapper
    <dependency>
    <groupId>tk.mybatis</groupId>
    <artifactId>mapper</artifactId>
    <version>3.3.6</version>
    </dependency>

    2.在application.properties中添加:

    spring.datasource.url=jdbc:mysql://ip:3306/myht?characterEncoding=utf-8
    spring.datasource.username=root
    spring.datasource.password=root
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    spring.datasource.minPoolSize = 3
    spring.datasource.maxPoolSize = 25
    spring.datasource.maxLifetime = 20000
    spring.datasource.borrowConnectionTimeout = 30
    spring.datasource.loginTimeout = 30
    spring.datasource.maintenanceInterval = 60
    spring.datasource.maxIdleTime = 60
    spring.datasource.testQuery =select 1
    spring.datasource.autoReconnect = true
    spring.datasource.test-while-idle=true
    spring.datasource.time-between-eviction-runs-millis=27800

    3.MyBatis基础配置

    /** * MyBatis基础配置 * * @author liuzh * @since 2015-12-19 10:11 */

    @Configuration
    @EnableTransactionManagement
    public class MyBatisConfig implements TransactionManagementConfigurer {

    @Autowired
    DataSource dataSource;

    @Bean(name = "sqlSessionFactory")
    public SqlSessionFactory sqlSessionFactoryBean() {
    SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
    bean.setDataSource(dataSource);
    bean.setTypeAliasesPackage("com.bfd.api.*.domain");

    //分页插件
    PageHelper pageHelper = new PageHelper();
    Properties properties = new Properties();
    properties.setProperty("reasonable", "true");
    properties.setProperty("supportMethodsArguments", "true");
    properties.setProperty("returnPageInfo", "check");
    properties.setProperty("params", "count=countSql");
    pageHelper.setProperties(properties);

    //添加插件
    bean.setPlugins(new Interceptor[]{pageHelper});

    //设置配置参数
    org.apache.ibatis.session.Configuration conf = new org.apache.ibatis.session.Configuration();
    conf.setMapUnderscoreToCamelCase(true);
    //conf.setLogPrefix("api-cloud.");
    bean.setConfiguration(conf);

    //添加XML目录
    ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
    try {
    bean.setMapperLocations(resolver.getResources("classpath:mapper/*.xml"));
    return bean.getObject();
    } catch (Exception e) {
    LogUtil.error("classpath:mapper/*.xml", "mapper解析错误", e);
    throw new RuntimeException(e);
    }

    }


    @Bean
    public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) {
    return new SqlSessionTemplate(sqlSessionFactory);
    }

    @Bean
    @Override
    public PlatformTransactionManager annotationDrivenTransactionManager() {
    return new DataSourceTransactionManager(dataSource);
    }

    }

    4.MyBatis扫描接口

    /** * MyBatis扫描接口 * * @author liuzh * @since 2015-12-19 14:46 */

    @Configuration //TODO 注意,由于MapperScannerConfigurer执行的比较早,所以必须有下面的注解 @AutoConfigureAfter(MyBatisConfig.class) public class MyBatisMapperScannerConfig { @Bean public MapperScannerConfigurer mapperScannerConfigurer() { MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer(); mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactory"); mapperScannerConfigurer.setBasePackage("tk.mybatis.springboot.mapper"); return mapperScannerConfigurer; } }

    这个配置一定要注意@AutoConfigureAfter(MyBatisConfig.class),必须有这个配置,否则会有异常。原因就是这个类执行的比较早,由于sqlSessionFactory还不存在,后续执行出错。

    做好上面配置以后就可以使用MyBatis了。

  • 相关阅读:
    Java——基本语法
    Java——基本概念
    [Educational Codeforces Round 81 (Rated for Div. 2)]E. Permutation Separation(线段树,思维,前缀和)
    Educational Codeforces Round 81 (Rated for Div. 2)] D. Same GCDs (数论,因子分解,容斥定理)
    Educational Codeforces Round 81 (Rated for Div. 2) C. Obtain The String(序列自动机,贪心)
    Educational Codeforces Round 81 B. Infinite Prefixes(数学,字符串,思维)
    Codeforces Round #615 (Div. 3) F. Three Paths on a Tree(树的直径,dfs)
    Codeforces Round #612 (Div. 2) C. Garland 动态规划
    Codeforces Round #612 (Div. 2) D. Numbers on Tree 构造,树dfs
    关于set/map 等容器对string类的时间性能指标对比
  • 原文地址:https://www.cnblogs.com/wangjing666/p/6994645.html
Copyright © 2020-2023  润新知