mybaits-spring

实现动态sql的元素主要有
if(条件)简单的条件选择
trim(去除多余关键字) prefix (前缀)suffix(后缀)替代where 更简化
灵活去除多余的关键字
prefixOverrides(覆盖前缀)
suffixOverrides(覆盖后缀)
where(简化sql条件变换)智能处理 and 和 or 简化sql语句和where条件判断
set(更新时)
choose(when otherwise)(switch 语句)
foreach(迭代集合 in)







使用更新操作
if +set 更新
更新时需要判断需要更新的值是否为空,为空不更新’

 <set>
<if >,</if>
<if>,</if>
<if>,</if>
</set>
if+trim更新
foreach item index  collection list map array
open separator符号间隔
close语句结束
<choose>
<when test=“条件”>
</when> 
基本类型、对象、list、数组、map
</choose>
spring 

ejb---->Spring
spring核心
Beans Core(until) Context
Aop编程 低侵入式设计
优点
独立各种应用服务器
依赖注入特性将组件 关系透明化 ,降低代码的耦合度
面向切面编程特性允许将通用任务进行集中式处理(日志、事务处理)
与第三方框架进行整合
spring面向bean编程 能够做到一处编写,到处运行
两大核心技术
ioc(控制反转) ----aop(面向切片编程)
spring ioc
组件对象的控制权转移到外部容器
分离关注点 使用接口 不关注实现

对象实例,返回所需要的产品
产品的规范
产品
工厂接口
调用/客户端接口的实现
添加架包

### Spring Boot 3 中整合 MyBatis-Plus 并实现 MySQL 和 Oracle 数据库分页 #### Maven依赖配置 为了在Spring Boot 3中整合MyBatis-Plus并支持MySQL和Oracle数据库,首先需要引入必要的Maven依赖项。以下是所需的依赖列表: ```xml <dependencies> <!-- Spring Boot Starter --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <!-- MyBatis Plus --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.3</version> <!-- 版本号需与Spring Boot兼容 --> </dependency> <!-- MySQL Connector --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <!-- Oracle JDBC Driver --> <dependency> <groupId>com.oracle.database.jdbc</groupId> <artifactId>ojdbc11</artifactId> <version>21.9.0.0</version> <!-- 使用最新版本 --> <scope>runtime</scope> </dependency> <!-- PageHelper 分页插件 --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.4.2</version> </dependency> </dependencies> ``` 以上配置涵盖了MyBatis-Plus的核心功能以及针对MySQL和Oracle的支持[^3]。 --- #### 配置 `application.yml` 文件 在Spring Boot应用的根目录下编辑 `application.yml` 文件,分别定义MySQL和Oracle的数据源连接信息,并启用PageHelper分页插件的相关配置。 ```yaml server: port: 8080 spring: datasource: mysql: url: jdbc:mysql://localhost:3306/test_db?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC username: root password: root_password driver-class-name: com.mysql.cj.jdbc.Driver oracle: url: jdbc:oracle:thin:@//localhost:1521/orclpdb1 username: system password: oracle_password driver-class-name: oracle.jdbc.driver.OracleDriver mybatis-plus: mapper-locations: classpath:mapper/*.xml type-aliases-package: com.example.domain pagehelper: helper-dialect: mysql # 默认为MySQL方言 reasonable: true support-methods-arguments: true params: count=countSql ``` 注意:对于不同的数据库(如MySQL和Oracle),可以通过动态数据源切换来管理多个数据库实例[^3]。 --- #### 动态数据源配置 如果希望在同一项目中同时支持MySQL和Oracle,则可以采用动态数据源的方式。通过自定义数据源路由逻辑,可以在运行时决定具体使用的数据库。 ##### 创建动态数据源类 ```java import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.jdbc.DataSourceBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Primary; import javax.sql.DataSource; import java.util.HashMap; import java.util.Map; public class DynamicDataSourceConfig { @Bean(name = "mysqlDataSource") @ConfigurationProperties(prefix = "spring.datasource.mysql") public DataSource mysqlDataSource() { return DataSourceBuilder.create().build(); } @Bean(name = "oracleDataSource") @ConfigurationProperties(prefix = "spring.datasource.oracle") public DataSource oracleDataSource() { return DataSourceBuilder.create().build(); } @Primary @Bean(name = "dynamicDataSource") public DynamicDataSource dataSource(@Qualifier("mysqlDataSource") DataSource mysqlDataSource, @Qualifier("oracleDataSource") DataSource oracleDataSource) { Map<Object, Object> targetDataSources = new HashMap<>(); targetDataSources.put("mysql", mysqlDataSource); targetDataSources.put("oracle", oracleDataSource); DynamicDataSource dynamicDataSource = new DynamicDataSource(); dynamicDataSource.setTargetDataSources(targetDataSources); // 添加数据源 dynamicDataSource.setDefaultTargetDataSource(mysqlDataSource); // 设置默认数据源 return dynamicDataSource; } } ``` ##### 自定义抽象父类Mapper接口 为了让MyBatis-Plus能够识别不同数据源下的Mapper接口,建议继承其基础Mapper接口。 ```java @Mapper public interface BaseMapper<T> extends com.baomidou.mybatisplus.core.mapper.BaseMapper<T> { } ``` --- #### 实现分页查询 借助PageHelper插件,可以直接在服务层方法中调用分页功能。以下是一个简单的示例代码片段: ```java @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public IPage<User> getUsersByPage(int pageNum, int pageSize) { Page<User> page = new Page<>(pageNum, pageSize); QueryWrapper<User> queryWrapper = new QueryWrapper<>(); queryWrapper.orderByDesc("id"); // 按照ID降序排列 return userMapper.selectPage(page, queryWrapper); } } ``` 上述代码展示了基于MyBatis-Plus内置分页能力的实现方式[^3]。 --- #### 测试与验证 完成上述配置后,启动应用程序并通过API接口测试分页效果。确保MySQL和Oracle两种环境均能正常返回预期的结果集。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值