跳到主要内容

Mybatis Plus快速开始

此文章借鉴MyBatis官网,使用gradle构建项目,使用oracle数据库

本文代码地址见github仓库

NOTES

Mybatis Plus使用

在测试这个案例时碰到一个坑,就是数据库表名 与 核心表名重复的时候,查询会报错 找不到表名。此处修改user表为users表了

  1. build.gradle文件中配置依赖
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation group: 'com.baomidou', name: 'mybatis-plus-boot-starter', version: '3.2.0'
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'com.oracle.database.jdbc:ojdbc8'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
  1. 配置 application.yml
spring:
datasource:
url: jdbc:oracle:thin:@192.168.3.161:1521:jc
username: jc
password: 123456
driver-class-name: oracle.jdbc.driver.OracleDriver
maximum-pool-size: 30
  1. 编写实体类
@Data
public class Users {
private Long id;
private String name;
private Integer age;
private String email;
}
  1. 编写Mapper类
@Mapper
public interface UserMapper extends BaseMapper<Users> {
}
  1. 编写测试类
@SpringBootTest(classes = App.class)
public class SampleTest {

@Autowired
private UserMapper userMapper;

@Test
public void testSelect() {
System.out.println(("----- selectAll method test ------"));
List<Users> userList = userMapper.selectList(null);
Assert.isTrue(userList.size()==5, "结果集不为5条");
userList.forEach(System.out::println);
}
}

项目结构:

image-20211219223218948

MyBatisPlus 字段类型处理器

字段类型处理器

usersMapper.selectOne(new QueryWrapper<JwtUserPO>().lambda().apply("USERNAME = {0,jdbcType=CHAR,typeHandler=" + TrimmedStringTypeHandler.class.getCanonicalName() + "}", username));

使用自定义多数据源

在自定义多数据源场景中,tomcat连接池想全既有共用配置,又特有配置,不可实现。
因为tomcat org.apache.tomcat.jdbc.pool.PoolProperties有些字段有默认值,
当进行覆盖时,不知道特有对像中是特有值,还是默认值,无法进行精确覆盖。

数据库多数据源的,必须被Primary标记,继承AbstractRoutingDataSource

不要试图从已经配置好的tomcat连接池数据源中获取数据库密码。可以直接拿之前配置好的datasource,或则从自定义配置里面取

打印tomcat数据库密码

@SuppressWarnings("all")
public void printTomcatDataSourceCredentials(DataSource ds) {
if (ds instanceof org.apache.tomcat.jdbc.pool.DataSource) {
org.apache.tomcat.jdbc.pool.DataSource dataSource = (org.apache.tomcat.jdbc.pool.DataSource) ds;
PoolConfiguration config = dataSource.getPoolProperties();
String username = config.getUsername();
String password = config.getPassword(); // ⚠️调试用

log.info("✅ 数据源用户名: {}", username);
log.info("✅ 数据源密码: {}", password != null ? password : "(null)");
}
}
协议
本作品代码部分采用 Apache 2.0协议 进行许可。遵循许可的前提下,你可以自由地对代码进行修改,再发布,可以将代码用作商业用途。但要求你:
  • 署名:在原有代码和衍生代码中,保留原作者署名及代码来源信息。
  • 保留许可证:在原有代码和衍生代码中,保留Apache 2.0协议文件。
本作品文档部分采用 知识共享署名 4.0 国际许可协议 进行许可。遵循许可的前提下,你可以自由地共享,包括在任何媒介上以任何形式复制、发行本作品,亦可以自由地演绎、修改、转换或以本作品为基础进行二次创作。但要求你:
  • 署名:应在使用本文档的全部或部分内容时候,注明原作者及来源信息。
  • 非商业性使用:不得用于商业出版或其他任何带有商业性质的行为。如需商业使用,请联系作者。
  • 相同方式共享的条件:在本文档基础上演绎、修改的作品,应当继续以知识共享署名 4.0国际许可协议进行许可。