代码整理,及应用MybatisPlus,使得可不用mapper.xml配置文件进行查询demo实现
7个文件已修改
7个文件已添加
547 ■■■■■ 已修改文件
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mybatis/AutoGenerateIdInterceptor.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaUserMapper.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoDemo/DemoMpMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoBa/BaRolePrivilege.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoBa/BaUser.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoBa/BaUserRole.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoDemo/DemoMp.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-demo/logs/pipIrrDemo.log 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-demo/src/main/java/com/dy/pipIrrDemo/mp/DemoMpSv.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-demo/src/test/java/com/dy/pipIrrDemo/mp/MpTest1.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-demo/src/test/java/com/dy/pipIrrDemo/mp/MpTest2.java 182 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-sso/logs/pipIrrSso.log 148 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoCtrl.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoSv.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mybatis/AutoGenerateIdInterceptor.java
@@ -27,29 +27,24 @@
    static int MAPPED_STATEMENT_INDEX = 0;
    static int PARAMETER_INDEX = 1;
    static int ROWBOUNDS_INDEX = 2;
    static int RESULT_HANDLER_INDEX = 3;
    static String BASE_FIELD_SET_PRIMARY_KEY_FUNTION_NAME = "setId";
    static String BASE_FIELD_SET_CREATE_TIME_FUNTION_NAME = "setCreateDt";
    static String BASE_FIELD_SET_UPDATE_TIME_FUNTION_NAME = "setUpdateDt";
    static String BASE_FIELD_SET_DELETE_FUNTION_NAME = "setDelete";
    public AutoGenerateIdInterceptor() {
        //System.out.println("auto generate primaryKey mybatis plugin start!!!");
    }
    @SuppressWarnings("static-access")
    /**
     * 拦截逻辑实现
     * @param invocation 代理
     * @return Object
     * @throws Throwable 异常
     */
    public Object intercept(Invocation invocation) throws Throwable {
        MappedStatement mappedStatement = (MappedStatement) invocation.getArgs()[MAPPED_STATEMENT_INDEX];
        SqlCommandType commandType = mappedStatement.getSqlCommandType();
        if (commandType.INSERT.equals(SqlCommandType.INSERT)) {
        if (commandType.equals(SqlCommandType.INSERT)) {
            Object entity = invocation.getArgs()[PARAMETER_INDEX];
            if (entity instanceof BaseEntity) {
                Class<? extends Object> entityClass = entity.getClass();
                //Class<? extends Object> entityClass = entity.getClass();
                Class<?> entityClass = entity.getClass();
                Method setMt = entityClass.getMethod(BASE_FIELD_SET_PRIMARY_KEY_FUNTION_NAME, Long.class) ;
                if(setMt != null){
                    setMt.invoke(entity, new IDLongGenerator().generate());
                }
                setMt.invoke(entity, new IDLongGenerator().generate());
                invocation.getArgs()[PARAMETER_INDEX] = entity;
            }
        }
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaUserMapper.java
@@ -3,9 +3,10 @@
import com.dy.pipIrrGlobal.pojoBa.BaUser;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@Mapper
public interface BaUserMapper extends com.baomidou.mybatisplus.core.mapper.Mapper<BaUser> {
public interface BaUserMapper extends BaseMapper<BaUser> {
    /**
     * 用户登录
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoDemo/DemoMpMapper.java
New file
@@ -0,0 +1,9 @@
package com.dy.pipIrrGlobal.daoDemo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dy.pipIrrGlobal.pojoDemo.DemoMp;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface DemoMpMapper extends BaseMapper<DemoMp> {
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoBa/BaRolePrivilege.java
@@ -1,6 +1,7 @@
package com.dy.pipIrrGlobal.pojoBa;
import com.baomidou.mybatisplus.annotation.TableName;
import com.dy.common.po.BaseEntity;
import lombok.*;
@TableName(autoResultMap = true)
@@ -9,7 +10,7 @@
@ToString
@NoArgsConstructor
@AllArgsConstructor
public class BaRolePrivilege {
public class BaRolePrivilege implements BaseEntity {
    public static final long serialVersionUID = 202311062027001L;
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoBa/BaUser.java
@@ -17,11 +17,13 @@
 * 只适合设置了TypeHandler、jdbcTyped的情况。autoResultMap 自动映射,
 * 通常配合 @TableField() 一起使用,确定映射规范性。
 * 2023-10-24经实验:
 * 简单的@TableField("name")不用加上,即使存类属性是驼峰,数据库字段是下
 * 简单的@TableField("name")不用加上,即使类属性名是驼峰,数据库字段是下
 * 划线情况,也不用加@TableField("name")。
 */
//2023-10-24下面TableName不用配置表名称(value="BaUser"或“ba_user”)
@TableName(autoResultMap = true)
//只要通过驼峰命名法则类名与表名对应起来就可以了,如果不能对应起来,需要指定表名称
//例如@TableName(value="TestUser" autoResultMap = true)
@TableName(value="ba_user", autoResultMap = true)
@Data
@Builder
@ToString
@@ -31,7 +33,7 @@
    public static final long serialVersionUID = 202310100926001L;
    /*
    /* 如果不明确 type类型,MP将自动为其赋值(雪花ID)
    IdType:
    AUTO(0),  //自增
    NONE(1), //未设置主键
@@ -61,11 +63,13 @@
    /**
     * 供水机构标签
     */
    @TableField(value = "orgTag")
    public String orgTag;
    /**
     * 是否超级管理员 1:是,0:否
     */
    @TableField(value = "supperAdmin")
    public Byte supperAdmin;
    /**
@@ -81,6 +85,7 @@
    /**
     * 用户所拥有的权限
     */
    @TableField(exist=false)
    @TableField(exist = false)
    public List<Integer> privileges;
    //public transient List<Integer> privileges;//此种方式变量不存库, 也不参与序列化了
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoBa/BaUserRole.java
@@ -1,6 +1,7 @@
package com.dy.pipIrrGlobal.pojoBa;
import com.baomidou.mybatisplus.annotation.TableName;
import com.dy.common.po.BaseEntity;
import lombok.*;
@TableName(autoResultMap = true)
@@ -9,7 +10,7 @@
@ToString
@NoArgsConstructor
@AllArgsConstructor
public class BaUserRole {
public class BaUserRole implements BaseEntity {
    public static final long serialVersionUID = 202311061942001L;
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoDemo/DemoMp.java
New file
@@ -0,0 +1,32 @@
package com.dy.pipIrrGlobal.pojoDemo;
import com.alibaba.fastjson2.annotation.JSONField;
import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.dy.common.po.BaseEntity;
import lombok.*;
import java.time.LocalDateTime;
@TableName(value="demo_mp", autoResultMap = true)
@Data
@Builder
@ToString
@NoArgsConstructor
@AllArgsConstructor
public class DemoMp implements BaseEntity {
    public static final long serialVersionUID = 202311071534001L;
    @JSONField(serializeUsing= ObjectWriterImplToString.class)
    @TableId(type = IdType.INPUT)
    public Long id ;
    public String name ;
    public Integer age ;
    public LocalDateTime dt ;
}
pipIrr-platform/pipIrr-web/pipIrr-web-demo/logs/pipIrrDemo.log
pipIrr-platform/pipIrr-web/pipIrr-web-demo/src/main/java/com/dy/pipIrrDemo/mp/DemoMpSv.java
New file
@@ -0,0 +1,33 @@
package com.dy.pipIrrDemo.mp;
import com.dy.pipIrrGlobal.daoDemo.DemoMpMapper;
import com.dy.pipIrrGlobal.pojoDemo.DemoMp;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class DemoMpSv {
    @Autowired
    private DemoMpMapper demoMpMapper ;
    public DemoMp selectById(Long id){
        return this.demoMpMapper.selectById(id);
    }
    public List<DemoMp> selectBatchIds(List<Long> ids){
        return this.demoMpMapper.selectBatchIds(ids);
    }
    public int insert(DemoMp po){
        return this.demoMpMapper.insert(po) ;
    }
    public int updateById(DemoMp po){
        return this.demoMpMapper.updateById(po) ;
    }
}
pipIrr-platform/pipIrr-web/pipIrr-web-demo/src/test/java/com/dy/pipIrrDemo/mp/MpTest1.java
New file
@@ -0,0 +1,52 @@
package com.dy.pipIrrDemo.mp;
import com.dy.common.multiDataSource.DataSourceContext;
import com.dy.pipIrrGlobal.pojoDemo.DemoMp;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.time.LocalDateTime;
@RunWith(SpringRunner.class)
@SpringBootTest
public class MpTest1 {
    @Autowired
    private DemoMpSv demoMpSv ;
    @Before
    public void setup(){
        DataSourceContext.set("ym");
    }
    @Test
    public void insert(){
        DemoMp po = new DemoMp() ;
        po.name = "张三" ;
        po.age = 20 ;
        po.dt = LocalDateTime.now() ;
        int count = this.demoMpSv.insert(po) ;
        System.out.println("插入了" + count + "记录");
    }
    @Test
    public void updateById(){
        //把上面插入的记录进行更新
        DemoMp po = new DemoMp() ;
        po.id = 2023110716001900000L ;
        po.name = "李四" ;
        po.age = 22 ;
        //po.dt = LocalDateTime.now() ;
        int count = this.demoMpSv.updateById(po);
        System.out.println("更新了" + count + "记录");
    }
    @Test
    public void selectById(){
        DemoMp po = this.demoMpSv.selectById(1L) ;
    }
}
pipIrr-platform/pipIrr-web/pipIrr-web-demo/src/test/java/com/dy/pipIrrDemo/mp/MpTest2.java
New file
@@ -0,0 +1,182 @@
package com.dy.pipIrrDemo.mp;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.dy.common.multiDataSource.DataSourceContext;
import com.dy.pipIrrGlobal.daoDemo.DemoMpMapper;
import com.dy.pipIrrGlobal.pojoDemo.DemoMp;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RunWith(SpringRunner.class)
@SpringBootTest
public class MpTest2 {
    @Autowired
    private DemoMpMapper demoMpMapper ;
    @Before
    public void setup(){
        DataSourceContext.set("ym");
    }
    @Test
    public void selectById(){
        DemoMp po = this.demoMpMapper.selectById(2023110716001900000L) ;
        System.out.println(po);
    }
    @Test
    public void selectBatchIds(){
        List<Long> listIds = Arrays.asList(1L, 2L, 2023110716001900000L) ;
        List<DemoMp> poList = this.demoMpMapper.selectBatchIds(listIds) ;
        System.out.println(poList);
    }
    @Test
    public void selectByMap(){
        Map<String, Object > paramMap = new HashMap<>() ;
        paramMap.put("name", "李四");
        paramMap.put("age", "22") ;
        List<DemoMp> poList = this.demoMpMapper.selectByMap(paramMap) ;
        System.out.println(poList);
    }
    @Test
    public void selectByWrapperLt(){
        QueryWrapper<DemoMp> queryWrapper = new QueryWrapper<>();
        //QueryWrapper<DemoMp> queryWrapper = Wrappers.<DemoMp>query() ;
        queryWrapper.like("name", "四").lt("age", 40) ;
        List<DemoMp> poList = this.demoMpMapper.selectList(queryWrapper) ;
        poList.forEach(System.out::println);
    }
    @Test
    public void selectByWrapperBt(){
        QueryWrapper<DemoMp> queryWrapper = new QueryWrapper<>();
        //QueryWrapper<DemoMp> queryWrapper = Wrappers.<DemoMp>query() ;
        queryWrapper.like("name", "四")
                .between("age", 20, 40)
                .isNotNull("dt");
        List<DemoMp> poList = this.demoMpMapper.selectList(queryWrapper) ;
        poList.forEach(System.out::println);
    }
    @Test
    public void selectByWrapperOr(){
        QueryWrapper<DemoMp> queryWrapper = new QueryWrapper<>();
        //QueryWrapper<DemoMp> queryWrapper = Wrappers.<DemoMp>query() ;
        queryWrapper.like("name", "四")
                .or()
                .between("age", 20, 40)
                .isNotNull("dt")
                .orderByAsc("id")
                .orderByAsc("age");
        List<DemoMp> poList = this.demoMpMapper.selectList(queryWrapper) ;
        poList.forEach(System.out::println);
    }
    @Test
    public void selectByWrapperOr1(){
        QueryWrapper<DemoMp> queryWrapper = new QueryWrapper<>();
        //QueryWrapper<DemoMp> queryWrapper = Wrappers.<DemoMp>query() ;
        queryWrapper.likeLeft("name", "四")
                .and(wq->wq.between("age", 20, 40).or().isNotNull("dt"))
                .orderByAsc("id")
                .orderByAsc("age");
        List<DemoMp> poList = this.demoMpMapper.selectList(queryWrapper) ;
        poList.forEach(System.out::println);
    }
    @Test
    public void selectByWrapperOr2(){
        QueryWrapper<DemoMp> queryWrapper = new QueryWrapper<>();
        //QueryWrapper<DemoMp> queryWrapper = Wrappers.<DemoMp>query() ;
        queryWrapper.likeLeft("name", "四")
                .and(wq->wq.between("age", 20, 40).isNotNull("dt"))
                .orderByAsc("id")
                .orderByAsc("age");
        List<DemoMp> poList = this.demoMpMapper.selectList(queryWrapper) ;
        poList.forEach(System.out::println);
    }
    @Test
    public void selectByWrapperOr3(){
        QueryWrapper<DemoMp> queryWrapper = new QueryWrapper<>();
        //QueryWrapper<DemoMp> queryWrapper = Wrappers.<DemoMp>query() ;
        queryWrapper.likeLeft("name", "四")
                .or(wq->wq.lt("age", 100).gt("age", 10).isNotNull("dt"))
                .orderByAsc("id")
                .orderByAsc("age");
        List<DemoMp> poList = this.demoMpMapper.selectList(queryWrapper) ;
        poList.forEach(System.out::println);
    }
    @Test
    public void selectByWrapperOr4(){
        QueryWrapper<DemoMp> queryWrapper = new QueryWrapper<>();
        //QueryWrapper<DemoMp> queryWrapper = Wrappers.<DemoMp>query() ;
        queryWrapper.nested(wq->wq.lt("age", 50).or().isNotNull("dt"))
                .likeLeft("name", "四")
                .orderByAsc("id")
                .orderByAsc("age");
        List<DemoMp> poList = this.demoMpMapper.selectList(queryWrapper) ;
        poList.forEach(System.out::println);
    }
    @Test
    public void selectByWrapperAnd(){
        QueryWrapper<DemoMp> queryWrapper = new QueryWrapper<>();
        //QueryWrapper<DemoMp> queryWrapper = Wrappers.<DemoMp>query() ;
        queryWrapper.likeLeft("name", "四")
                .and(wq->wq.between("age", 20, 40))
                .isNotNull("dt")
                .orderByAsc("id")
                .orderByAsc("age");
        List<DemoMp> poList = this.demoMpMapper.selectList(queryWrapper) ;
        poList.forEach(System.out::println);
    }
    @Test
    public void selectByWrapperIn(){
        QueryWrapper<DemoMp> queryWrapper = new QueryWrapper<>();
        //QueryWrapper<DemoMp> queryWrapper = Wrappers.<DemoMp>query() ;
        queryWrapper.in("age", Arrays.asList(38, 45))
                .orderByAsc("id")
                .orderByAsc("age");
        List<DemoMp> poList = this.demoMpMapper.selectList(queryWrapper) ;
        poList.forEach(System.out::println);
    }
    @Test
    public void selectByWrapperLimit(){
        QueryWrapper<DemoMp> queryWrapper = new QueryWrapper<>();
        //QueryWrapper<DemoMp> queryWrapper = Wrappers.<DemoMp>query() ;
        queryWrapper.in("age", Arrays.asList(38, 45)).last("limit 1")
                .orderByAsc("id")
                .orderByAsc("age");
        List<DemoMp> poList = this.demoMpMapper.selectList(queryWrapper) ;
        poList.forEach(System.out::println);
    }
    @Test
    public void selectByWrapperLimitSupper(){
        QueryWrapper<DemoMp> queryWrapper = new QueryWrapper<>();
        //QueryWrapper<DemoMp> queryWrapper = Wrappers.<DemoMp>query() ;
        queryWrapper.select("id", "name").in("age", Arrays.asList(38, 45)).last("limit 1")
                .orderByAsc("id")
                .orderByAsc("age");
        List<DemoMp> poList = this.demoMpMapper.selectList(queryWrapper) ;
        poList.forEach(System.out::println);
    }
}
pipIrr-platform/pipIrr-web/pipIrr-web-sso/logs/pipIrrSso.log
New file
@@ -0,0 +1,148 @@
2023-11-07 14:37:28,586:ERROR main (com.dy.common.mybatis.PrintExceptionSqlInterceptor.intercept:69) - SQL ErrorException:
java.lang.reflect.InvocationTargetException: null
    at jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:119) ~[?:?]
    at java.lang.reflect.Method.invoke(Method.java:578) ~[?:?]
    at org.apache.ibatis.plugin.Invocation.proceed(Invocation.java:49) ~[mybatis-3.5.13.jar:3.5.13]
    at com.dy.common.mybatis.PrintExceptionSqlInterceptor.intercept(PrintExceptionSqlInterceptor.java:66) [classes/:?]
    at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:59) [mybatis-3.5.13.jar:3.5.13]
    at jdk.proxy2.$Proxy207.query(Unknown Source) [?:?]
    at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:154) [mybatis-3.5.13.jar:3.5.13]
    at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:147) [mybatis-3.5.13.jar:3.5.13]
    at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:142) [mybatis-3.5.13.jar:3.5.13]
    at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:75) [mybatis-3.5.13.jar:3.5.13]
    at jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[?:?]
    at java.lang.reflect.Method.invoke(Method.java:578) ~[?:?]
    at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:425) [mybatis-spring-2.1.1.jar:2.1.1]
    at jdk.proxy2.$Proxy133.selectOne(Unknown Source) [?:?]
    at org.mybatis.spring.SqlSessionTemplate.selectOne(SqlSessionTemplate.java:160) [mybatis-spring-2.1.1.jar:2.1.1]
    at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:89) [mybatis-plus-core-3.5.3.2.jar:3.5.3.2]
    at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148) [mybatis-plus-core-3.5.3.2.jar:3.5.3.2]
    at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) [mybatis-plus-core-3.5.3.2.jar:3.5.3.2]
    at jdk.proxy2.$Proxy135.selectById(Unknown Source) [?:?]
    at com.dy.sso.MapperTest.selectById(MapperTest.java:21) [test-classes/:?]
    at jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[?:?]
    at java.lang.reflect.Method.invoke(Method.java:578) ~[?:?]
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59) [junit-4.13.2.jar:4.13.2]
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) [junit-4.13.2.jar:4.13.2]
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56) [junit-4.13.2.jar:4.13.2]
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) [junit-4.13.2.jar:4.13.2]
    at org.springframework.test.context.junit4.statements.RunBeforeTestExecutionCallbacks.evaluate(RunBeforeTestExecutionCallbacks.java:76) [spring-test-6.0.11.jar:6.0.11]
    at org.springframework.test.context.junit4.statements.RunAfterTestExecutionCallbacks.evaluate(RunAfterTestExecutionCallbacks.java:84) [spring-test-6.0.11.jar:6.0.11]
    at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75) [spring-test-6.0.11.jar:6.0.11]
    at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86) [spring-test-6.0.11.jar:6.0.11]
    at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84) [spring-test-6.0.11.jar:6.0.11]
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366) [junit-4.13.2.jar:4.13.2]
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:252) [spring-test-6.0.11.jar:6.0.11]
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97) [spring-test-6.0.11.jar:6.0.11]
    at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) [junit-4.13.2.jar:4.13.2]
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) [junit-4.13.2.jar:4.13.2]
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) [junit-4.13.2.jar:4.13.2]
    at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) [junit-4.13.2.jar:4.13.2]
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) [junit-4.13.2.jar:4.13.2]
    at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) [spring-test-6.0.11.jar:6.0.11]
    at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) [spring-test-6.0.11.jar:6.0.11]
    at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) [junit-4.13.2.jar:4.13.2]
    at org.junit.runners.ParentRunner.run(ParentRunner.java:413) [junit-4.13.2.jar:4.13.2]
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191) [spring-test-6.0.11.jar:6.0.11]
    at org.junit.runner.JUnitCore.run(JUnitCore.java:137) [junit-4.13.2.jar:4.13.2]
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69) [junit-rt.jar:?]
    at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33) [junit-rt.jar:?]
    at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:221) [junit-rt.jar:?]
    at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54) [junit-rt.jar:?]
Caused by: org.springframework.jdbc.CannotGetJdbcConnectionException: 未得到数据源名称
    at com.dy.common.multiDataSource.MultiDataSourceTransaction.getConnection(MultiDataSourceTransaction.java:34) ~[classes/:?]
    at org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:345) ~[mybatis-3.5.13.jar:3.5.13]
    at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:89) ~[mybatis-3.5.13.jar:3.5.13]
    at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:64) ~[mybatis-3.5.13.jar:3.5.13]
    at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:333) ~[mybatis-3.5.13.jar:3.5.13]
    at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:158) ~[mybatis-3.5.13.jar:3.5.13]
    at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:110) ~[mybatis-3.5.13.jar:3.5.13]
    at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:90) ~[mybatis-3.5.13.jar:3.5.13]
    at jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[?:?]
    at java.lang.reflect.Method.invoke(Method.java:578) ~[?:?]
    at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:61) ~[mybatis-3.5.13.jar:3.5.13]
    at jdk.proxy2.$Proxy207.query(Unknown Source) ~[?:?]
    at jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[?:?]
    ... 48 more
2023-11-07 14:39:05,179:ERROR main (com.dy.common.mybatis.PrintExceptionSqlInterceptor.intercept:69) - SQL ErrorException:
java.lang.reflect.InvocationTargetException: null
    at jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:119) ~[?:?]
    at java.lang.reflect.Method.invoke(Method.java:578) ~[?:?]
    at org.apache.ibatis.plugin.Invocation.proceed(Invocation.java:49) ~[mybatis-3.5.13.jar:3.5.13]
    at com.dy.common.mybatis.PrintExceptionSqlInterceptor.intercept(PrintExceptionSqlInterceptor.java:66) [classes/:?]
    at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:59) [mybatis-3.5.13.jar:3.5.13]
    at jdk.proxy2.$Proxy207.query(Unknown Source) [?:?]
    at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:154) [mybatis-3.5.13.jar:3.5.13]
    at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:147) [mybatis-3.5.13.jar:3.5.13]
    at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:142) [mybatis-3.5.13.jar:3.5.13]
    at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:75) [mybatis-3.5.13.jar:3.5.13]
    at jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[?:?]
    at java.lang.reflect.Method.invoke(Method.java:578) ~[?:?]
    at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:425) [mybatis-spring-2.1.1.jar:2.1.1]
    at jdk.proxy2.$Proxy133.selectOne(Unknown Source) [?:?]
    at org.mybatis.spring.SqlSessionTemplate.selectOne(SqlSessionTemplate.java:160) [mybatis-spring-2.1.1.jar:2.1.1]
    at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:89) [mybatis-plus-core-3.5.3.2.jar:3.5.3.2]
    at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148) [mybatis-plus-core-3.5.3.2.jar:3.5.3.2]
    at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) [mybatis-plus-core-3.5.3.2.jar:3.5.3.2]
    at jdk.proxy2.$Proxy134.selectById(Unknown Source) [?:?]
    at com.dy.sso.MapperTest.selectById(MapperTest.java:24) [test-classes/:?]
    at jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[?:?]
    at java.lang.reflect.Method.invoke(Method.java:578) ~[?:?]
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59) [junit-4.13.2.jar:4.13.2]
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) [junit-4.13.2.jar:4.13.2]
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56) [junit-4.13.2.jar:4.13.2]
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) [junit-4.13.2.jar:4.13.2]
    at org.springframework.test.context.junit4.statements.RunBeforeTestExecutionCallbacks.evaluate(RunBeforeTestExecutionCallbacks.java:76) [spring-test-6.0.11.jar:6.0.11]
    at org.springframework.test.context.junit4.statements.RunAfterTestExecutionCallbacks.evaluate(RunAfterTestExecutionCallbacks.java:84) [spring-test-6.0.11.jar:6.0.11]
    at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75) [spring-test-6.0.11.jar:6.0.11]
    at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86) [spring-test-6.0.11.jar:6.0.11]
    at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84) [spring-test-6.0.11.jar:6.0.11]
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366) [junit-4.13.2.jar:4.13.2]
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:252) [spring-test-6.0.11.jar:6.0.11]
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97) [spring-test-6.0.11.jar:6.0.11]
    at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) [junit-4.13.2.jar:4.13.2]
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) [junit-4.13.2.jar:4.13.2]
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) [junit-4.13.2.jar:4.13.2]
    at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) [junit-4.13.2.jar:4.13.2]
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) [junit-4.13.2.jar:4.13.2]
    at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) [spring-test-6.0.11.jar:6.0.11]
    at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) [spring-test-6.0.11.jar:6.0.11]
    at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) [junit-4.13.2.jar:4.13.2]
    at org.junit.runners.ParentRunner.run(ParentRunner.java:413) [junit-4.13.2.jar:4.13.2]
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191) [spring-test-6.0.11.jar:6.0.11]
    at org.junit.runner.JUnitCore.run(JUnitCore.java:137) [junit-4.13.2.jar:4.13.2]
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69) [junit-rt.jar:?]
    at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33) [junit-rt.jar:?]
    at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:221) [junit-rt.jar:?]
    at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54) [junit-rt.jar:?]
Caused by: java.sql.SQLSyntaxErrorException: Unknown column 'org_tag' in 'field list'
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:121) ~[mysql-connector-j-8.0.33.jar:8.0.33]
    at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) ~[mysql-connector-j-8.0.33.jar:8.0.33]
    at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:916) ~[mysql-connector-j-8.0.33.jar:8.0.33]
    at com.mysql.cj.jdbc.ClientPreparedStatement.execute(ClientPreparedStatement.java:354) ~[mysql-connector-j-8.0.33.jar:8.0.33]
    at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_execute(FilterChainImpl.java:3446) ~[druid-1.2.20.jar:?]
    at com.alibaba.druid.filter.FilterAdapter.preparedStatement_execute(FilterAdapter.java:1063) ~[druid-1.2.20.jar:?]
    at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_execute(FilterChainImpl.java:3444) ~[druid-1.2.20.jar:?]
    at com.alibaba.druid.wall.WallFilter.preparedStatement_execute(WallFilter.java:639) ~[druid-1.2.20.jar:?]
    at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_execute(FilterChainImpl.java:3444) ~[druid-1.2.20.jar:?]
    at com.alibaba.druid.filter.FilterEventAdapter.preparedStatement_execute(FilterEventAdapter.java:434) ~[druid-1.2.20.jar:?]
    at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_execute(FilterChainImpl.java:3444) ~[druid-1.2.20.jar:?]
    at com.alibaba.druid.proxy.jdbc.PreparedStatementProxyImpl.execute(PreparedStatementProxyImpl.java:158) ~[druid-1.2.20.jar:?]
    at com.alibaba.druid.pool.DruidPooledPreparedStatement.execute(DruidPooledPreparedStatement.java:483) ~[druid-1.2.20.jar:?]
    at jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[?:?]
    at java.lang.reflect.Method.invoke(Method.java:578) ~[?:?]
    at org.apache.ibatis.logging.jdbc.PreparedStatementLogger.invoke(PreparedStatementLogger.java:58) ~[mybatis-3.5.13.jar:3.5.13]
    at jdk.proxy3.$Proxy209.execute(Unknown Source) ~[?:?]
    at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:65) ~[mybatis-3.5.13.jar:3.5.13]
    at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:80) ~[mybatis-3.5.13.jar:3.5.13]
    at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:65) ~[mybatis-3.5.13.jar:3.5.13]
    at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:333) ~[mybatis-3.5.13.jar:3.5.13]
    at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:158) ~[mybatis-3.5.13.jar:3.5.13]
    at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:110) ~[mybatis-3.5.13.jar:3.5.13]
    at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:90) ~[mybatis-3.5.13.jar:3.5.13]
    at jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[?:?]
    at java.lang.reflect.Method.invoke(Method.java:578) ~[?:?]
    at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:61) ~[mybatis-3.5.13.jar:3.5.13]
    at jdk.proxy2.$Proxy207.query(Unknown Source) ~[?:?]
    at jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[?:?]
    ... 48 more
pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoCtrl.java
@@ -86,7 +86,7 @@
        try {
            //Boolean flag = cacheManager.getCacheNames().isEmpty() ;
            uuid = UUID.randomUUID().toString();
            userPo = this.sv.login(uuid, vo.phone, vo.password);
            userPo = this.sv.loginWithMapperXml(uuid, vo.phone, vo.password);
        } catch (Exception e) {
            log.error("用户登录异常", e);
            return BaseResponseUtils.buildException(e.getMessage()) ;
@@ -131,7 +131,7 @@
        try {
            //Boolean flag = cacheManager.getCacheNames().isEmpty() ;
            uuid = UUID.randomUUID().toString();
            userPo = this.sv.login(uuid, vo.phone, vo.password);
            userPo = this.sv.loginWithMapperXml(uuid, vo.phone, vo.password);
        } catch (Exception e) {
            log.error("用户登录异常", e);
            return BaseResponseUtils.buildException(e.getMessage()) ;
@@ -222,6 +222,11 @@
        return vo ;
    }
    /////////////////////////////////////////////////////////////////
    //
    // 以下私有方法
    //
    /////////////////////////////////////////////////////////////////
    /**
     * 判断登录用户是否拥有指定的一个权限
     * @param privilege 指定的一个权限
pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoSv.java
@@ -1,5 +1,6 @@
package com.dy.sso.busi;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.dy.pipIrrGlobal.daoBa.BaPrivilegeMapper;
import com.dy.pipIrrGlobal.daoBa.BaUserMapper;
import com.dy.pipIrrGlobal.pojoBa.BaUser;
@@ -27,10 +28,17 @@
        this.baPrivilegeMapper = baPrivilegeMapper ;
    }
    /**
     * 需要BaUserMapper.xml
     * @param uuid 给登录成功的用户赋值其token
     * @param phone 用户手机号
     * @param password 用户密码
     * @return 登录成功用户
     */
    //当未注解@Transactional时,会输出日志:SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@46727a0c] was not registered for synchronization because synchronization is not active
    @Transactional
    @Cacheable(cacheNames=CacheConstants.cacheNames, key="'" + CacheConstants.loginUserKeyPrefix + "' + #uuid", sync=true)
    public BaUser login(String uuid, String phone, String password){
    public BaUser loginWithMapperXml(String uuid, String phone, String password){
        BaUser baUser = this.baUserMapper.login(phone, password) ;
        if(baUser !=  null  && baUser.id != null){
            baUser.privileges = this.baPrivilegeMapper.selectPrivilegeByUserId(baUser.id) ;
@@ -38,6 +46,31 @@
        return baUser;
    }
    /**
     * 不需要 BaUserMapper.xml
     * @param uuid 给登录成功的用户赋值其token
     * @param phone 用户手机号
     * @param password 用户密码
     * @return 登录成功用户
     */
    //当未注解@Transactional时,会输出日志:SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@46727a0c] was not registered for synchronization because synchronization is not active
    @Transactional
    @Cacheable(cacheNames=CacheConstants.cacheNames, key="'" + CacheConstants.loginUserKeyPrefix + "' + #uuid", sync=true)
    public BaUser loginWithOutMapperXml(String uuid, String phone, String password){
        QueryWrapper<BaUser> qw = new QueryWrapper<>();
        //QueryWrapper<DemoMp> queryWrapper = Wrappers.<DemoMp>query() ;
        qw.select("id", "name", "phone", "orgTag", "supperAdmin")
                .eq("disabled", 0)
                .eq("deleted", 0)
                .eq("phone", phone)
                .eq("password", password);
        BaUser baUser = this.baUserMapper.selectOne(qw) ;
        if(baUser !=  null  && baUser.id != null){
            baUser.privileges = this.baPrivilegeMapper.selectPrivilegeByUserId(baUser.id) ;
        }
        return baUser;
    }
    @CacheEvict(cacheNames=CacheConstants.cacheNames, key="'" + CacheConstants.loginUserKeyPrefix + "' + #uuid")
    public void logout(String uuid){
    }