summaryrefslogtreecommitdiff
path: root/src/main/java/com/nis/config/MybatisPlusConfig.java
blob: 6f10943a9ef224d19a200478b18c1c2e4e8a2c0b (plain)
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
package com.nis.config;

import cn.hutool.log.Log;
import com.baomidou.mybatisplus.core.incrementer.IKeyGenerator;
import com.baomidou.mybatisplus.core.injector.ISqlInjector;
import com.baomidou.mybatisplus.extension.injector.LogicSqlInjector;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import com.nis.util.Constant;
import com.nis.util.ToolUtil;

import org.apache.ibatis.mapping.DatabaseIdProvider;
import org.apache.ibatis.mapping.VendorDatabaseIdProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.DependsOn;

import javax.sql.DataSource;
import java.sql.SQLException;
import java.util.Properties;

/**
 * mybatis-plus配置
 *

 */
@Configuration
public class MybatisPlusConfig {
	private static final Log logger = Log.get();
    /**
     * 分页插件
     */
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }

    /*@Bean
    public SeqKeyGenerator seqKeyGenerator() {
    	return new SeqKeyGenerator();
    }*/
    
    @Bean
    public ISqlInjector sqlInjector() {
        return new LogicSqlInjector();
    }
    
    /**
     * 自定义主键生成器
     * @author fang
     *
     
    static class SeqKeyGenerator implements IKeyGenerator {
    	@Autowired
    	DatabaseIdProvider databaseIdProvider;
    	@Autowired
    	DataSource dataSource;
    	
		@Override
		public String executeSql(String incrementerName) {
	        String databaseId = null;
			try {
				databaseId = databaseIdProvider.getDatabaseId(dataSource);
			} catch (SQLException e) {
				logger.error(e);
			}

			if(ToolUtil.isEmpty(databaseId)){
				throw new RuntimeException("MybatisPlusConfig databaseId error");
			}
			
			switch (databaseId){
	            case Constant.MYSQL:
	                return String.format("select seq_nextval('%s')", incrementerName);
	            case Constant.POSTGRESQL:
	                return String.format("select seq_nextval('%s')", incrementerName);
	            case Constant.ORACLE:
	                return String.format("select %s.nextval from dual", incrementerName);
	            default:
	                return String.format("select seq_nextval('%s')", incrementerName);
	        }
		}
		
    }*/
    @Bean
    public DatabaseIdProvider getDatabaseIdProvider(){
        DatabaseIdProvider databaseIdProvider = new VendorDatabaseIdProvider();
        Properties properties = new Properties();
        properties.setProperty("Oracle","oracle");
        properties.setProperty("MySQL","mysql");
        properties.setProperty("DB2","db2");
        properties.setProperty("Derby","derby");
        properties.setProperty("H2","h2");
        properties.setProperty("HSQL","hsql");
        properties.setProperty("Informix","informix");
        properties.setProperty("MS-SQL","ms-sql");
        properties.setProperty("PostgreSQL","postgresql");
        properties.setProperty("Sybase","sybase");
        properties.setProperty("Hana","hana");
        databaseIdProvider.setProperties(properties);

        return databaseIdProvider;
    }
}