userInfo.setUserPassword("123456"); 36
		userInfo.setUserPhone("12345678");
37
		userInfo.setUserType(0);
38
		userInfoService.save(userInfo);
39
        List<UserInfo> list = userInfoService.list(new LambdaQueryWrapper<>(new UserInfo()).select(UserInfo::getUserId, UserInfo::getUserName));
40
        list.forEach(u -> LOGGER.info("当前用户数据:{}", u));
41
        return String.valueOf(userInfo.getUserId());
42
    }
43
}
44

+ 21 - 0
mybatisplus/src/main/java/com/ai/ipu/mybatisplus/controller/UserInfoController.java

@ -0,0 +1,21 @@
1
package com.ai.ipu.mybatisplus.controller;
2
3
4
import org.springframework.web.bind.annotation.RequestMapping;
5
6
import org.springframework.web.bind.annotation.RestController;
7
8
/**
9
 * <p>
10
 *  前端控制器
11
 * </p>
12
 *
13
 * @author weihf
14
 * @since 2020-11-27
15
 */
16
@RestController
17
@RequestMapping("/mybatisplus/user-info")
18
public class UserInfoController {
19
20
}
21

+ 95 - 0
mybatisplus/src/main/java/com/ai/ipu/mybatisplus/entity/ProductInfo.java

@ -0,0 +1,95 @@
1
package com.ai.ipu.mybatisplus.entity;
2
3
import com.baomidou.mybatisplus.annotation.TableName;
4
import java.util.Date;
5
import com.baomidou.mybatisplus.annotation.TableField;
6
import java.io.Serializable;
7
import lombok.Data;
8
import lombok.EqualsAndHashCode;
9
10
/**
11
 * <p>
12
 * 
13
 * </p>
14
 *
15
 * @author weihf
16
 * @since 2020-11-27
17
 */
18
@Data
19
@EqualsAndHashCode(callSuper = false)
20
@TableName("tab_product_info")
21
public class ProductInfo implements Serializable {
22
23
    private static final long serialVersionUID = 1L;
24
25
    @TableField("PRODUCT_ID")
26
    private Integer productId;
27
28
    @TableField("PRODUCT_NAME")
29
    private String productName;
30
31
    @TableField("PRODUCT_FOLDER")
32
    private Integer productFolder;
33
34
    @TableField("PRODUCT_LOGO_URL")
35
    private String productLogoUrl;
36
37
    @TableField("PRODUCT_DESC")
38
    private String productDesc;
39
40
    /**
41
     * 部分范围 0:根据权限公开;1:CMC;2:所有部门
42
     */
43
    @TableField("DEPT_RANGE")
44
    private Integer deptRange;
45
46
    @TableField("STATE")
47
    private Integer state;
48
49
    @TableField("PRODUCT_STAGE")
50
    private Integer productStage;
51
52
    @TableField("CREATE_TIME")
53
    private Date createTime;
54
55
    @TableField("MODIFY_TIME")
56
    private Date modifyTime;
57
58
    @TableField("CREATE_USER")
59
    private Integer createUser;
60
61
    @TableField("MANAGE_USER")
62
    private Integer manageUser;
63
64
    @TableField("VALID_DATE")
65
    private Date validDate;
66
67
    @TableField("EXPIRE_DATE")
68
    private Date expireDate;
69
70
    @TableField("HOME_URL")
71
    private String homeUrl;
72
73
    @TableField("SUCCESS_CASE_URL")
74
    private String successCaseUrl;
75
76
    @TableField("HAS_CODE_URL")
77
    private Integer hasCodeUrl;
78
79
    @TableField("CODE_URL")
80
    private String codeUrl;
81
82
    @TableField("ONLINE_DOCUMENT")
83
    private String onlineDocument;
84
85
    @TableField("TENANT_ID")
86
    private Integer tenantId;
87
    
88
    @TableField("RESERV1")
89
    private Integer reserv1;
90
91
    @TableField("RESERV2")
92
    private String reserv2;
93
94
95
}

+ 68 - 0
mybatisplus/src/main/java/com/ai/ipu/mybatisplus/entity/UserInfo.java

@ -0,0 +1,68 @@
1
package com.ai.ipu.mybatisplus.entity;
2
3
import com.baomidou.mybatisplus.annotation.TableName;
4
import com.baomidou.mybatisplus.annotation.FieldFill;
5
import com.baomidou.mybatisplus.annotation.IdType;
6
import java.util.Date;
7
import com.baomidou.mybatisplus.annotation.TableId;
8
import com.baomidou.mybatisplus.annotation.TableField;
9
import java.io.Serializable;
10
import lombok.Data;
11
import lombok.EqualsAndHashCode;
12
13
/**
14
 * <p>
15
 * 
16
 * </p>
17
 *
18
 * @author weihf
19
 * @since 2020-11-27
20
 */
21
@Data
22
@EqualsAndHashCode(callSuper = false)
23
@TableName("tab_user_info")
24
public class UserInfo implements Serializable {
25
26
    private static final long serialVersionUID = 1L;
27
28
    @TableId(value = "USER_ID", type = IdType.ASSIGN_ID)
29
    private Long userId;
30
31
    @TableField("USER_TYPE")
32
    private Integer userType;
33
34
    @TableField("USER_ACCOUNT")
35
    private String userAccount;
36
37
    @TableField("USER_NAME")
38
    private String userName;
39
40
    @TableField("USER_DEPT")
41
    private String userDept;
42
43
    @TableField("USER_EMAIL")
44
    private String userEmail;
45
46
    @TableField("USER_PHONE")
47
    private String userPhone;
48
49
    @TableField("USER_PASSWORD")
50
    private String userPassword;
51
52
    @TableField("CREATE_TIME")
53
    private Date createTime;
54
55
    @TableField("MODIFY_TIME")
56
    private Date modifyTime;
57
58
    @TableField(fill = FieldFill.INSERT_UPDATE)
59
    private String operator;
60
61
    @TableField("RESERV1")
62
    private Integer reserv1;
63
64
    @TableField("RESERV2")
65
    private String reserv2;
66
67
68
}

+ 87 - 0
mybatisplus/src/main/java/com/ai/ipu/mybatisplus/entity/UserInfoAR.java

@ -0,0 +1,87 @@
1
package com.ai.ipu.mybatisplus.entity;
2
3
import com.baomidou.mybatisplus.annotation.TableName;
4
import com.baomidou.mybatisplus.annotation.Version;
5
import com.baomidou.mybatisplus.extension.activerecord.Model;
6
import com.baomidou.mybatisplus.annotation.FieldFill;
7
import com.baomidou.mybatisplus.annotation.IdType;
8
import com.baomidou.mybatisplus.annotation.TableId;
9
import com.baomidou.mybatisplus.annotation.TableField;
10
11
import java.io.Serializable;
12
import java.util.Date;
13
import lombok.Data;
14
import lombok.EqualsAndHashCode;
15
16
/**
17
 * <p>
18
 * 
19
 * </p>
20
 *
21
 * @author weihf
22
 * @since 2020-11-27
23
 */
24
@Data
25
@EqualsAndHashCode(callSuper = false)
26
@TableName("tab_user_info")
27
public class UserInfoAR extends Model<UserInfoAR> {
28
29
    /**
30
	 * 
31
	 */
32
	private static final long serialVersionUID = 5606997867147972334L;
33
34
	@TableId(value = "USER_ID", type = IdType.ASSIGN_ID)
35
    private Long userId;
36
37
    @TableField("USER_TYPE")
38
    private Integer userType;
39
40
    @TableField("USER_ACCOUNT")
41
    private String userAccount;
42
43
    @TableField("USER_NAME")
44
    private String userName;
45
46
    @TableField("USER_DEPT")
47
    private String userDept;
48
49
    @TableField("USER_EMAIL")
50
    private String userEmail;
51
52
    @TableField("USER_PHONE")
53
    private String userPhone;
54
55
    @TableField("USER_PASSWORD")
56
    private String userPassword;
57
58
    @TableField(value="CREATE_TIME")
59
    private Date createTime;
60
61
    @TableField(value="MODIFY_TIME")
62
    private Date modifyTime;
63
64
    @TableField(value="OPERATOR", fill = FieldFill.INSERT_UPDATE)
65
    private String operator;
66
    
67
    @TableField(exist = false)
68
    private String year;
69
    
70
    @Version
71
    private Integer version;
72
    
73
    @TableField("RESERV1")
74
    private Integer reserv1;
75
76
    @TableField("RESERV2")
77
    private String reserv2;
78
79
    @Override
80
    protected Serializable pkVal() {
81
        /**
82
         * AR 模式这个必须有,否则 xxById 的方法都将失效!
83
         * 另外 UserMapper 也必须 AR 依赖该层注入,有可无 XML
84
         */
85
        return userId;
86
    }
87
}

+ 29 - 0
mybatisplus/src/main/java/com/ai/ipu/mybatisplus/handle/MyMetaObjectHandler.java

@ -0,0 +1,29 @@
1
package com.ai.ipu.mybatisplus.handle;
2
3
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
4
import lombok.extern.slf4j.Slf4j;
5
6
7
import org.apache.ibatis.reflection.MetaObject;
8
import org.springframework.stereotype.Component;
9
10
11
@Slf4j
12
@Component
13
public class MyMetaObjectHandler implements MetaObjectHandler {
14
15
    @Override
16
    public void insertFill(MetaObject metaObject) {
17
        log.info("start insert fill ....");
18
        this.setInsertFieldValByName("operator", "Jetty", metaObject);
19
//        this.strictInsertFill(metaObject, "operator", String.class, "Jetty");
20
    }
21
22
    @Override
23
    public void updateFill(MetaObject metaObject) {
24
    	//3.4.0更新填充的bug又复现了
25
        log.info("start update fill ....");
26
        this.setUpdateFieldValByName("operator", "Tom", metaObject);
27
        //this.strictUpdateFill(metaObject, "operator", String.class, "Tom");
28
    }
29
}

+ 31 - 0
mybatisplus/src/main/java/com/ai/ipu/mybatisplus/injector/MyLogicSqlInjector.java

@ -0,0 +1,31 @@
1
package com.ai.ipu.mybatisplus.injector;
2
3
import java.util.List;
4
5
import com.ai.ipu.mybatisplus.method.DeleteAll;
6
import com.baomidou.mybatisplus.core.injector.AbstractMethod;
7
import com.baomidou.mybatisplus.core.injector.DefaultSqlInjector;
8
import com.baomidou.mybatisplus.core.injector.methods.SelectById;
9
10
11
/**
12
 * 自定义 SqlInjector
13
 *
14
 * @author miemie
15
 * @since 2018-08-13
16
 */
17
public class MyLogicSqlInjector extends DefaultSqlInjector {
18
19
    /**
20
     * 如果只需增加方法,保留MP自带方法
21
     * 可以super.getMethodList() 再add
22
     * @return
23
     */
24
    @Override
25
    public List<AbstractMethod> getMethodList(Class<?> mapperClass) {
26
        List<AbstractMethod> methodList = super.getMethodList(mapperClass);
27
        methodList.add(new DeleteAll());
28
        methodList.add(new SelectById());
29
        return methodList;
30
    }
31
}

+ 72 - 0
mybatisplus/src/main/java/com/ai/ipu/mybatisplus/interceptor/MybatisQueryInterceptor.java

@ -0,0 +1,72 @@
1
package com.ai.ipu.mybatisplus.interceptor;
2
3
4
import com.baomidou.mybatisplus.core.conditions.AbstractWrapper;
5
import lombok.extern.slf4j.Slf4j;
6
import org.apache.ibatis.binding.MapperMethod.ParamMap;
7
import org.apache.ibatis.cache.CacheKey;
8
import org.apache.ibatis.executor.Executor;
9
import org.apache.ibatis.mapping.BoundSql;
10
import org.apache.ibatis.mapping.MappedStatement;
11
import org.apache.ibatis.mapping.SqlCommandType;
12
import org.apache.ibatis.plugin.*;
13
import org.apache.ibatis.session.ResultHandler;
14
import org.apache.ibatis.session.RowBounds;
15
import org.springframework.stereotype.Component;
16
17
import java.util.Iterator;
18
import java.util.Map;
19
import java.util.Properties;
20
21
/**
22
 * mybatis拦截器,去掉字符串参数的前后空格
23
 *
24
 * @see {https://www.cnblogs.com/buguge/p/13749101.html}
25
 */
26
@Slf4j
27
@Component
28
@Intercepts({
29
        @Signature(type = Executor.class, method = "query", args = {MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class}),
30
        @Signature(type = Executor.class, method = "query", args = {MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class, CacheKey.class, BoundSql.class})})
31
public class MybatisQueryInterceptor implements Interceptor {
32
33
    @Override
34
    public Object intercept(Invocation invocation) throws Throwable {
35
        MappedStatement mappedStatement = (MappedStatement) invocation.getArgs()[0];
36
        String sqlId = mappedStatement.getId();
37
        log.debug("------sqlId------" + sqlId);
38
        SqlCommandType sqlCommandType = mappedStatement.getSqlCommandType();
39
        log.debug("------sqlCommandType------" + sqlCommandType);
40
41
        Object parameter = invocation.getArgs()[1];
42
        if (parameter == null || SqlCommandType.SELECT != sqlCommandType) {
43
            return invocation.proceed();
44
        }
45
46
        if (parameter instanceof ParamMap
47
                && ((ParamMap) parameter).get("ew") instanceof AbstractWrapper) {
48
            Map nameValuePairs = ((AbstractWrapper) ((ParamMap) parameter).get("ew")).getParamNameValuePairs();
49
50
            Iterator<Map.Entry<String, Object>> iterator = nameValuePairs.entrySet().iterator();
51
            while (iterator.hasNext()) {
52
                Map.Entry<String, Object> next = iterator.next();
53
                if (next.getValue() instanceof String) {
54
                    next.setValue(((String) next.getValue()).trim());
55
                }
56
            }
57
        }
58
59
        return invocation.proceed();
60
    }
61
62
    @Override
63
    public Object plugin(Object target) {
64
        return Plugin.wrap(target, this);
65
    }
66
67
    @Override
68
    public void setProperties(Properties properties) {
69
    	log.debug("------properties------" + properties);
70
    }
71
72
}

+ 14 - 0
mybatisplus/src/main/java/com/ai/ipu/mybatisplus/mapper/MyBaseMapper.java

@ -0,0 +1,14 @@
1
package com.ai.ipu.mybatisplus.mapper;
2
3
4
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5
6
7
public interface MyBaseMapper<T> extends BaseMapper<T> {
8
9
    /**
10
     * 自定义通用方法
11
     */
12
    Integer deleteAll();
13
14
}

+ 15 - 0
mybatisplus/src/main/java/com/ai/ipu/mybatisplus/mapper/ProductInfoMapper.java

@ -0,0 +1,15 @@
1
package com.ai.ipu.mybatisplus.mapper;
2
3
import com.ai.ipu.mybatisplus.entity.ProductInfo;
4
5
/**
6
 * <p>
7
 *  Mapper 接口
8
 * </p>
9
 *
10
 * @author weihf
11
 * @since 2020-11-27
12
 */
13
public interface ProductInfoMapper extends MyBaseMapper<ProductInfo> {
14
15
}

+ 15 - 0
mybatisplus/src/main/java/com/ai/ipu/mybatisplus/mapper/UserInfoARMapper.java

@ -0,0 +1,15 @@
1
package com.ai.ipu.mybatisplus.mapper;
2
3
import com.ai.ipu.mybatisplus.entity.UserInfoAR;
4
5
/**
6
 * <p>
7
 *  Mapper 接口
8
 * </p>
9
 *
10
 * @author weihf
11
 * @since 2020-11-27
12
 */
13
public interface UserInfoARMapper extends MyBaseMapper<UserInfoAR> {
14
15
}

+ 22 - 0
mybatisplus/src/main/java/com/ai/ipu/mybatisplus/mapper/UserInfoMapper.java

@ -0,0 +1,22 @@
1
package com.ai.ipu.mybatisplus.mapper;
2
3
import com.ai.ipu.mybatisplus.entity.UserInfo;
4
import com.ai.ipu.mybatisplus.config.UserInfoPage;
5
6
/**
7
 * <p>
8
 *  Mapper 接口
9
 * </p>
10
 *
11
 * @author weihf
12
 * @since 2020-11-27
13
 */
14
public interface UserInfoMapper extends MyBaseMapper<UserInfo> {
15
	/**
16
     * 自定义分页查询
17
     *
18
     * @param userPage 单独 user 模块使用的分页
19
     * @return 分页数据
20
     */
21
    UserInfoPage selectUserInfoPage(UserInfoPage userInfoPage);
22
}

+ 23 - 0
mybatisplus/src/main/java/com/ai/ipu/mybatisplus/method/DeleteAll.java

@ -0,0 +1,23 @@
1
package com.ai.ipu.mybatisplus.method;
2
3
import com.baomidou.mybatisplus.core.injector.AbstractMethod;
4
import com.baomidou.mybatisplus.core.metadata.TableInfo;
5
import org.apache.ibatis.mapping.MappedStatement;
6
import org.apache.ibatis.mapping.SqlSource;
7
8
/**
9
 * 删除全部
10
 *
11
 */
12
public class DeleteAll extends AbstractMethod {
13
14
    @Override
15
    public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) {
16
        /* 执行 SQL ,动态 SQL 参考类 SqlMethod */
17
        String sql = "delete from " + tableInfo.getTableName();
18
        /* mapper 接口方法名一致 */
19
        String method = "deleteAll";
20
        SqlSource sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass);
21
        return this.addDeleteMappedStatement(mapperClass, method, sqlSource);
22
    }
23
}

+ 16 - 0
mybatisplus/src/main/java/com/ai/ipu/mybatisplus/service/ProductInfoService.java

@ -0,0 +1,16 @@
1
package com.ai.ipu.mybatisplus.service;
2
3
import com.ai.ipu.mybatisplus.entity.ProductInfo;
4
import com.baomidou.mybatisplus.extension.service.IService;
5
6
/**
7
 * <p>
8
 *  服务类
9
 * </p>
10
 *
11
 * @author weihf
12
 * @since 2020-11-27
13
 */
14
public interface ProductInfoService extends IService<ProductInfo> {
15
16
}

+ 16 - 0
mybatisplus/src/main/java/com/ai/ipu/mybatisplus/service/UserInfoARService.java

@ -0,0 +1,16 @@
1
package com.ai.ipu.mybatisplus.service;
2
3
import com.ai.ipu.mybatisplus.entity.UserInfoAR;
4
import com.baomidou.mybatisplus.extension.service.IService;
5
6
/**
7
 * <p>
8
 *  服务类
9
 * </p>
10
 *
11
 * @author weihf
12
 * @since 2020-11-27
13
 */
14
public interface UserInfoARService extends IService<UserInfoAR> {
15
16
}

+ 16 - 0
mybatisplus/src/main/java/com/ai/ipu/mybatisplus/service/UserInfoService.java

@ -0,0 +1,16 @@
1
package com.ai.ipu.mybatisplus.service;
2
3
import com.ai.ipu.mybatisplus.entity.UserInfo;
4
import com.baomidou.mybatisplus.extension.service.IService;
5
6
/**
7
 * <p>
8
 *  服务类
9
 * </p>
10
 *
11
 * @author weihf
12
 * @since 2020-11-27
13
 */
14
public interface UserInfoService extends IService<UserInfo> {
15
16
}

+ 20 - 0
mybatisplus/src/main/java/com/ai/ipu/mybatisplus/service/impl/ProductInfoServiceImpl.java

@ -0,0 +1,20 @@
1
package com.ai.ipu.mybatisplus.service.impl;
2
3
import com.ai.ipu.mybatisplus.entity.ProductInfo;
4
import com.ai.ipu.mybatisplus.mapper.ProductInfoMapper;
5
import com.ai.ipu.mybatisplus.service.ProductInfoService;
6
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
7
import org.springframework.stereotype.Service;
8
9
/**
10
 * <p>
11
 *  服务实现类
12
 * </p>
13
 *
14
 * @author weihf
15
 * @since 2020-11-27
16
 */
17
@Service
18
public class ProductInfoServiceImpl extends ServiceImpl<ProductInfoMapper, ProductInfo> implements ProductInfoService {
19
20
}

+ 20 - 0
mybatisplus/src/main/java/com/ai/ipu/mybatisplus/service/impl/UserInfoARServiceImpl.java

@ -0,0 +1,20 @@
1
package com.ai.ipu.mybatisplus.service.impl;
2
3
import com.ai.ipu.mybatisplus.entity.UserInfoAR;
4
import com.ai.ipu.mybatisplus.mapper.UserInfoARMapper;
5
import com.ai.ipu.mybatisplus.service.UserInfoARService;
6
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
7
import org.springframework.stereotype.Service;
8
9
/**
10
 * <p>
11
 *  服务实现类
12
 * </p>
13
 *
14
 * @author weihf
15
 * @since 2020-11-27
16
 */
17
@Service
18
public class UserInfoARServiceImpl extends ServiceImpl<UserInfoARMapper, UserInfoAR> implements UserInfoARService {
19
20
}

+ 20 - 0
mybatisplus/src/main/java/com/ai/ipu/mybatisplus/service/impl/UserInfoServiceImpl.java

@ -0,0 +1,20 @@
1
package com.ai.ipu.mybatisplus.service.impl;
2
3
import com.ai.ipu.mybatisplus.entity.UserInfo;
4
import com.ai.ipu.mybatisplus.mapper.UserInfoMapper;
5
import com.ai.ipu.mybatisplus.service.UserInfoService;
6
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
7
import org.springframework.stereotype.Service;
8
9
/**
10
 * <p>
11
 *  服务实现类
12
 * </p>
13
 *
14
 * @author weihf
15
 * @since 2020-11-27
16
 */
17
@Service
18
public class UserInfoServiceImpl extends ServiceImpl<UserInfoMapper, UserInfo> implements UserInfoService {
19
20
}

+ 26 - 0
mybatisplus/src/main/resources/application.properties

@ -0,0 +1,26 @@
1
#spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
2
spring.datasource.driver-class-name=com.p6spy.engine.spy.P6SpyDriver
3
spring.datasource.username=aiosc
4
spring.datasource.password=aiosc
5
#spring.datasource.url=jdbc:mysql://10.1.234.70:6611/ipu?useUnicode=true&characterEncoding=utf8
6
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
7
spring.datasource.url=jdbc:p6spy:mysql://10.1.234.70:6611/ipu?useUnicode=true&characterEncoding=utf8
8
spring.profiles.active=dev
9
spring.main.allow-bean-definition-overriding=true
10
mybatis-plus.mapper-locations=classpath*:mapper/*.xml
11
# 主键策略
12
mybatis-plus.global-config.db-config.id-type=INPUT
13
# 表名前缀
14
mybatis-plus.global-config.db-config.table-prefix=tab_
15
# 表名是否使用下划线间隔,默认:是
16
mybatis-plus.global-config.db-config.table-underline=true
17
# 添加mybatis配置文件路径
18
#mybatis-plus.config-location=mybatis-config.xml
19
# 配置实体类包地址
20
#mybatis-plus.type-aliases-package=com.ai.ipu.mybatisplus
21
# 驼峰转下划线
22
mybatis-plus.configuration.map-underscore-to-camel-case=true
23
mybatis-plus.configuration.jdbc-type-for-null='null'
24
25
logging.level.com.ai.ipu.mybatisplus.mapper=debug
26

+ 22 - 0
mybatisplus/src/main/resources/log4j.xml

@ -0,0 +1,22 @@
1
<?xml version="1.0" encoding="UTF-8" ?>
2
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
3
 
4
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
5
 
6
 <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
7
   <param name="Encoding" value="UTF-8" />
8
   <layout class="org.apache.log4j.PatternLayout">
9
    <param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS} %m  (%F:%L) \n" />
10
   </layout>
11
 </appender>
12
 <logger name="java.sql">
13
   <level value="debug" />
14
 </logger>
15
 <logger name="org.apache.ibatis">
16
   <level value="info" />
17
 </logger>
18
 <root>
19
   <level value="debug" />
20
   <appender-ref ref="STDOUT" />
21
 </root>
22
</log4j:configuration>

+ 13 - 0
mybatisplus/src/main/resources/mapper/UserInfoMapper.xml

@ -0,0 +1,13 @@
1
<?xml version="1.0" encoding="UTF-8"?>
2
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3
<mapper namespace="com.ai.ipu.mybatisplus.mapper.UserInfoMapper">
4
<select id="selectUserInfoPage" resultType="com.ai.ipu.mybatisplus.entity.UserInfo">
5
        select *
6
        from tab_user_info
7
        <trim prefix="where" prefixOverrides="AND">
8
            <if test="selectStr != null">
9
                user_name = #{selectStr}
10
            </if>
11
        </trim>
12
    </select>
13
</mapper>

+ 6 - 0
mybatisplus/src/main/resources/mybatis-config.xml

@ -0,0 +1,6 @@
1
<?xml version="1.0" encoding="UTF-8"?>
2
<!DOCTYPE configuration
3
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
4
"http://mybatis.org/dtd/mybatis-3-config.dtd">
5
<configuration>
6
</configuration>

+ 4 - 0
mybatisplus/src/main/resources/mybatisplus.properties

@ -0,0 +1,4 @@
1
dynamic.tablenames=tab_product_info,tab_user_info
2
tenant.ignoretables=tab_product_info
3
tenant.idcolumn=tenant_id
4
tenant.idvalue=1

+ 25 - 0
mybatisplus/src/main/resources/spy.properties

@ -0,0 +1,25 @@
1
#3.2.1以上使用
2
modulelist=com.baomidou.mybatisplus.extension.p6spy.MybatisPlusLogFactory,com.p6spy.engine.outage.P6OutageFactory
3
#3.2.1以下使用或者不配置
4
#modulelist=com.p6spy.engine.logging.P6LogFactory,com.p6spy.engine.outage.P6OutageFactory
5
# 自定义日志打印
6
logMessageFormat=com.baomidou.mybatisplus.extension.p6spy.P6SpyLogger
7
#日志输出到控制台
8
appender=com.baomidou.mybatisplus.extension.p6spy.StdoutLogger
9
# 使用日志系统记录 sql
10
#appender=com.p6spy.engine.spy.appender.Slf4JLogger
11
#logfile=/E:/1/mybatisplus/sql.log
12
# 设置 p6spy driver 代理
13
deregisterdrivers=true
14
# 取消JDBC URL前缀
15
useprefix=true
16
# 配置记录 Log 例外,可去掉的结果集有error,info,batch,debug,statement,commit,rollback,result,resultset.
17
excludecategories=info,debug,result,commit,resultset
18
# 日期格式
19
dateformat=yyyy-MM-dd HH:mm:ss
20
# 实际驱动可多个
21
#driverlist=org.h2.Driver
22
# 是否开启慢SQL记录
23
outagedetection=true
24
# 慢SQL记录标准 2 秒
25
outagedetectioninterval=1

+ 99 - 0
mybatisplus/src/test/java/com/ai/ipu/mybatisplus/MybatisplusGenerator.java

@ -0,0 +1,99 @@
1
package com.ai.ipu.mybatisplus;
2
3
import org.junit.jupiter.api.Test;
4
5
import com.baomidou.mybatisplus.annotation.IdType;
6
import com.baomidou.mybatisplus.generator.AutoGenerator;
7
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
8
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
9
import com.baomidou.mybatisplus.generator.config.PackageConfig;
10
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
11
import com.baomidou.mybatisplus.generator.config.rules.DateType;
12
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
13
14
class MybatisplusGenerator {
15
16
	@Test
17
	void generator() {
18
		// Step1:代码生成器
19
		AutoGenerator mpg = new AutoGenerator();
20
		
21
		// Step2:全局配置
22
		GlobalConfig gc = new GlobalConfig();
23
		// 填写代码生成的目录(需要修改)
24
		String projectPath = "E:\\1\\mybatisplus";
25
		// 拼接出代码最终输出的目录
26
		gc.setOutputDir(projectPath + "/src/main/java");
27
		// 配置开发者信息(可选)(需要修改)
28
		gc.setAuthor("weihf");
29
		// 配置是否打开目录,false 为不打开(可选)
30
		gc.setOpen(false);
31
		// 实体属性 Swagger2 注解,添加 Swagger 依赖,开启 Swagger2 模式(可选)
32
		//gc.setSwagger2(true);
33
		// 重新生成文件时是否覆盖,false 表示不覆盖(可选)
34
		gc.setFileOverride(true);
35
		// 配置主键生成策略,此处为 ASSIGN_ID(可选)
36
		//SnowFlake 算法,是 Twitter 开源的分布式 id 生成算法。其核心思想就是:使用一个 64 bit 的 long 型的数字作为全局唯一 id。
37
		//在分布式系统中的应用十分广泛,且ID 引入了时间戳,基本上保持自增的,后面的代码中有详细的注解。
38
		//这 64 个 bit 中,其中 1 个 bit 是不用的,然后用其中的 41 bit 作为毫秒数,用 10 bit 作为工作机器 id,12 bit 作为序列号。
39
		gc.setIdType(IdType.ASSIGN_ID);
40
		// 配置日期类型,此处为 ONLY_DATE(可选)
41
		gc.setDateType(DateType.ONLY_DATE);
42
		// 默认生成的 service 会有 I 前缀
43
		gc.setServiceName("%sService");
44
		//默认不使用ActiveRecord
45
		//gc.setActiveRecord(true);
46
		mpg.setGlobalConfig(gc);
47
		
48
		// Step3:数据源配置(需要修改)
49
		DataSourceConfig dsc = new DataSourceConfig();
50
		// 配置数据库 url 地址
51
		dsc.setUrl("jdbc:mysql://10.1.234.70:6611/ipu?useUnicode=true&characterEncoding=utf8");
52
		// dsc.setSchemaName("ipu"); // 可以直接在 url 中指定数据库名
53
		// 配置数据库驱动
54
		dsc.setDriverName("com.mysql.cj.jdbc.Driver");
55
		// 配置数据库连接用户名
56
		dsc.setUsername("aiosc");
57
		// 配置数据库连接密码
58
		dsc.setPassword("aiosc");
59
		mpg.setDataSource(dsc);
60
		
61
		
62
		// Step:4:包配置
63
		PackageConfig pc = new PackageConfig();
64
		// 配置父包名(需要修改)
65
		pc.setParent("com.ai.ipu");
66
		// 配置模块名(需要修改)
67
		pc.setModuleName("mybatisplusdemo");
68
		// 配置 entity 包名
69
		pc.setEntity("entity");
70
		// 配置 mapper 包名
71
		pc.setMapper("mapper");
72
		// 配置 service 包名
73
		pc.setService("service");
74
		// 配置 controller 包名
75
		pc.setController("controller");
76
		mpg.setPackageInfo(pc);
77
		
78
        // 策略配置
79
        StrategyConfig strategy = new StrategyConfig();
80
        strategy.setTablePrefix(new String[]{"tab_"});// 此处可以修改为您的表前缀
81
        strategy.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略
82
        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
83
        String[] tables = {"tab_product_info","tab_user_info"};
84
        // 需要生成的表,不设置则生成所有表
85
        strategy.setInclude(tables); 
86
        
87
        //strategy.setSuperControllerClass("BaseController");
88
        strategy.setControllerMappingHyphenStyle(true);
89
        strategy.setSuperMapperClass("com.ai.ipu.mybatisplus.mapper.MyBaseMapper");
90
        strategy.setRestControllerStyle(true);
91
        strategy.setEntityLombokModel(true);    //开启lombook支持
92
        
93
        mpg.setStrategy(strategy);
94
		// Step6:执行代码生成操作
95
		mpg.execute();
96
97
	}
98
99
}

+ 108 - 0
mybatisplus/src/test/java/com/ai/ipu/mybatisplus/ProductInfoTests.java

@ -0,0 +1,108 @@
1
package com.ai.ipu.mybatisplus;
2
3
import java.util.Date;
4
import java.util.List;
5
6
import javax.annotation.Resource;
7
8
import org.junit.Assert;
9
import org.junit.jupiter.api.Test;
10
import org.springframework.boot.test.context.SpringBootTest;
11
import org.springframework.util.CollectionUtils;
12
13
import com.ai.ipu.mybatisplus.entity.ProductInfo;
14
import com.ai.ipu.mybatisplus.mapper.ProductInfoMapper;
15
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
16
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
17
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
18
import com.baomidou.mybatisplus.core.metadata.IPage;
19
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
20
21
import lombok.extern.slf4j.Slf4j;
22
23
@Slf4j
24
@SpringBootTest
25
class ProductInfoTests {
26
27
	@Resource
28
    private ProductInfoMapper productInfoMapper;
29
	
30
	@Test
31
	void select() {
32
		List<ProductInfo> productInfos = productInfoMapper.selectList(null);
33
		productInfos.forEach(System.out::println);
34
	}
35
	
36
	@Test
37
	void selectPage() {
38
		Page<ProductInfo> page = new Page<>(1, 5);
39
        IPage<ProductInfo> productIPage = productInfoMapper.selectPage(page, new QueryWrapper<ProductInfo>());
40
        Assert.assertSame(productIPage, page);
41
        log.info("总条数 ------> " + productIPage.getTotal());
42
        log.info("当前页数 ------> " + productIPage.getCurrent());
43
        log.info("当前每页显示数 ------> " + productIPage.getSize());
44
        print(productIPage.getRecords());
45
	}
46
47
	@Test
48
	void selectByColumnName() {
49
50
		QueryWrapper<ProductInfo> queryWrapper = new QueryWrapper<ProductInfo>();
51
		queryWrapper.like("product_Name","社区");
52
		List<ProductInfo> productInfos = productInfoMapper.selectList(queryWrapper);
53
		productInfos.forEach(System.out::println);
54
	}
55
	
56
	@Test
57
	void selectByName() {
58
59
//		LambdaQueryWrapper<ProductInfo> lambda = new LambdaQueryWrapper<ProductInfo>();
60
		LambdaQueryWrapper<ProductInfo> lambda = new QueryWrapper<ProductInfo>().lambda();
61
		lambda.eq(ProductInfo::getProductName,"  开源社区  ");
62
		//会自动去空格
63
		List<ProductInfo> productInfos = productInfoMapper.selectList(lambda);
64
		productInfos.forEach(System.out::println);
65
	}
66
	
67
	@Test
68
	void update() {
69
70
		UpdateWrapper<ProductInfo> updateWrapper = new UpdateWrapper<>();
71
		updateWrapper.eq("product_id", 0).set("product_desc", "test");
72
		productInfoMapper.update(null, updateWrapper);
73
	}
74
	
75
	@Test
76
	void delete() {
77
78
		QueryWrapper<ProductInfo> queryWrapper = new QueryWrapper<ProductInfo>();
79
		queryWrapper.eq("product_id", 2);
80
		productInfoMapper.delete(queryWrapper);
81
	}
82
	
83
	
84
	@Test
85
	void insert() {
86
87
		ProductInfo productInfo = new ProductInfo();
88
		productInfo.setProductId(2);
89
		productInfo.setProductName("test");
90
		productInfo.setProductFolder(0);
91
		productInfo.setDeptRange(0);
92
		productInfo.setState(0);
93
		productInfo.setProductStage(0);
94
		productInfo.setCreateTime(new Date());
95
		productInfo.setModifyTime(new Date());
96
		productInfo.setCreateUser(0);
97
		productInfo.setValidDate(new Date());
98
		productInfo.setExpireDate(new Date());
99
		productInfo.setHasCodeUrl(0);
100
		productInfoMapper.insert(productInfo);
101
	}
102
	
103
    private <T> void print(List<T> list) {
104
        if (!CollectionUtils.isEmpty(list)) {
105
            list.forEach(System.out::println);
106
        }
107
    }
108
}

+ 137 - 0
mybatisplus/src/test/java/com/ai/ipu/mybatisplus/UserInfoTests.java

@ -0,0 +1,137 @@
1
package com.ai.ipu.mybatisplus;
2
3
4
import java.util.Date;
5
import java.util.HashMap;
6
import java.util.List;
7
import java.util.Map;
8
9
import javax.annotation.Resource;
10
11
import org.junit.Assert;
12
import org.junit.jupiter.api.Test;
13
import org.slf4j.Logger;
14
import org.slf4j.LoggerFactory;
15
import org.springframework.boot.test.context.SpringBootTest;
16
import org.springframework.util.CollectionUtils;
17
18
import com.ai.ipu.mybatisplus.config.MybatisPlusConfig;
19
import com.ai.ipu.mybatisplus.config.UserInfoPage;
20
import com.ai.ipu.mybatisplus.entity.UserInfo;
21
import com.ai.ipu.mybatisplus.entity.UserInfoAR;
22
import com.ai.ipu.mybatisplus.mapper.UserInfoARMapper;
23
import com.ai.ipu.mybatisplus.mapper.UserInfoMapper;
24
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
25
import com.baomidou.mybatisplus.core.metadata.IPage;
26
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
27
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
28
29
import lombok.extern.slf4j.Slf4j;
30
31
32
@Slf4j
33
@SpringBootTest
34
class UserInfoTests {
35
	@Resource
36
    private UserInfoMapper userInfoMapper;
37
	@Resource
38
	private UserInfoARMapper userInfoARMapper;
39
	@Test
40
	void insert() {
41
		UserInfo userInfo = new UserInfo();
42
		userInfo.setUserName("test");
43
		userInfo.setUserAccount("test@mail.com");
44
		userInfo.setCreateTime(new Date());
45
		userInfo.setModifyTime(new Date());
46
		userInfo.setUserDept("cmc");
47
		userInfo.setUserEmail("test@mail.com");
48
		userInfo.setUserPassword("123456");
49
		userInfo.setUserPhone("12345678");
50
		userInfo.setUserType(0);
51
		userInfoMapper.insert(userInfo);
52
		log.info("\n插入成功 ID 为:" + userInfo.getUserId());
53
	}
54
	
55
	@Test
56
	void insertAR() {
57
		MybatisPlusConfig.TABLE_NAME.set("tab_user_info_2020");
58
		
59
		UserInfoAR userInfo = new UserInfoAR();
60
		userInfo.setUserName("test");
61
		userInfo.setUserAccount("test@mail.com");
62
		userInfo.setCreateTime(new Date());
63
		userInfo.setModifyTime(new Date());
64
		userInfo.setUserDept("cmc");
65
		userInfo.setUserEmail("test@mail.com");
66
		userInfo.setUserPassword("123456");
67
		userInfo.setUserPhone("12345678");
68
		userInfo.setUserType(0);
69
		//注意:只有tab_user_info_2020才有乐观锁字段,tab_user_info没有乐观锁字段
70
		userInfo.setVersion(1);
71
		Assert.assertTrue(userInfo.insert());
72
		log.info("\n插入成功 ID 为:" + userInfo.getUserId());
73
		log.info("\n插入成功 version 为:" + userInfo.getVersion());
74
	}
75
76
	@Test
77
	void userInfoFill() {
78
		MybatisPlusConfig.TABLE_NAME.set("tab_user_info_2020");
79
		
80
		UserInfoAR beforeUser = userInfoARMapper.selectById(6000L);
81
		int version = beforeUser.getVersion();
82
		log.info("before user userType:{}\tversion:{}", beforeUser.getUserType(), version);
83
        beforeUser.setUserType(0);
84
        beforeUser.updateById();
85
        log.info("query useruserType:{}\tversion:{}", beforeUser.selectById().getUserType(), beforeUser.selectById().getVersion());
86
        Assert.assertNotEquals((long)version, (long)beforeUser.selectById().getVersion());
87
	}
88
	
89
    @Test
90
    public void deleteAll() {
91
    	userInfoMapper.deleteAll();
92
    }
93
    
94
    @Test
95
    public void selectAll() {
96
    	List<UserInfo> userInfos = userInfoMapper.selectList(null);
97
    	userInfos.forEach(System.out::println);
98
    }
99
    
100
    @Test
101
    public void selectPage() {
102
    	log.info("------ 自定义 xml 分页 ------");
103
        UserInfoPage selectPage = new UserInfoPage(1, 5).setSelectInt(20);
104
        UserInfoPage userPage = userInfoMapper.selectUserInfoPage(selectPage);
105
        Assert.assertSame(userPage, selectPage);
106
        log.info("总条数 ------> " + userPage.getTotal());
107
        log.info("当前页数 ------> " + userPage.getCurrent());
108
        log.info("当前每页显示数 ------> " + userPage.getSize());
109
        print(userPage.getRecords());
110
111
        log.info("------ baseMapper 自带分页 ------");
112
        Page<UserInfo> page = new Page<>(1, 5);
113
        IPage<UserInfo> userIPage = userInfoMapper.selectPage(page, new QueryWrapper<UserInfo>().eq("user_name", "test"));
114
        Assert.assertSame(userIPage, page);
115
        log.info("总条数 ------> " + userIPage.getTotal());
116
        log.info("当前页数 ------> " + userIPage.getCurrent());
117
        log.info("当前每页显示数 ------> " + userIPage.getSize());
118
        print(userIPage.getRecords());
119
    }
120
    
121
	@Test
122
	void selectByName() {
123
//		LambdaQueryWrapper<ProductInfo> lambda = new LambdaQueryWrapper<ProductInfo>();
124
		QueryWrapper<UserInfo> userQueryWrapper = Wrappers.query();
125
		Map<String , Object> map = new HashMap<>();
126
        map.put("user_name" , "test");
127
        userQueryWrapper.allEq(map);
128
		List<UserInfo> userInfos = userInfoMapper.selectList(userQueryWrapper);
129
		userInfos.forEach(System.out::println);
130
	}
131
	
132
    private <T> void print(List<T> list) {
133
        if (!CollectionUtils.isEmpty(list)) {
134
            list.forEach(System.out::println);
135
        }
136
    }
137
}

+ 22 - 0
mybatisplus/src/test/resources/log4j.xml

@ -0,0 +1,22 @@
1
<?xml version="1.0" encoding="UTF-8" ?>
2
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
3
 
4
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
5
 
6
 <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
7
   <param name="Encoding" value="UTF-8" />
8
   <layout class="org.apache.log4j.PatternLayout">
9
    <param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS} %m  (%F:%L) \n" />
10
   </layout>
11
 </appender>
12
 <logger name="java.sql">
13
   <level value="debug" />
14
 </logger>
15
 <logger name="org.apache.ibatis">
16
   <level value="info" />
17
 </logger>
18
 <root>
19
   <level value="debug" />
20
   <appender-ref ref="STDOUT" />
21
 </root>
22
</log4j:configuration>

+ 4 - 0
mybatisplus/src/test/resources/mybatisplus.properties

@ -0,0 +1,4 @@
1
dynamic.tablenames=tab_product_info,tab_user_info
2
tenant.ignoretables=tab_product_info
3
tenant.idcolumn=tenant_id
4
tenant.idvalue=1

liuyang50/common-ui - Nuosi Git Service

2 Commits (master)

Author SHA1 Message Date
  liuyang 1f47f42333 fixed: 修改svg图标显示颜色 + 编写UI文档 2 years ago
  liuyang b53d9d73ad create: 创建common-ui工程 2 years ago