mybatis中使用>和<

本文展示了一个使用MyBatis和iBatis的更新语句配置示例,该示例通过动态SQL特性实现了批量更新操作。具体包括如何设置参数、使用条件判断以及SQL子句的组合。

mybatis和ibatis的配置文件使用>和<的情况

<使用&lt;替代

>使用&gt;替代

 

 <update id="MS-NOTIFY-MSG-BATCH-UPDATE_IPADDR">
   
        update T_NOTIFY_MSG set IP_ADDR=#ipAddr#, GMT_MODIFIED=systimestamp where MSG_ID in (
        	select MSG_ID from (
				SELECT MSG_ID
   			    FROM T_NOTIFY_MSG
   				WHERE IP_ADDR is null and GMT_PRE_TIME &gt;=(sysdate-1) and GMT_PRE_TIME &lt;= sysdate 
   				<isNotNull property="notifyType" prepend=" and ">NOTIFY_TYPE=#notifyType#  </isNotNull>
   				<isNotNull property="status" prepend=" and ">STATUS = #status#  </isNotNull>
   				<isNotNull property="msgType" prepend=" and ">MSG_TYPE=#msgType#  </isNotNull>
   				ORDER BY GMT_CREATE ASC
				) where rownum &lt;= #maxSize#
        ) and IP_ADDR is null and GMT_PRE_TIME &lt;= sysdate
    </update>

 

 

 

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.4.7</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.example</groupId> <artifactId>takeoutsystem</artifactId> <version>0.0.1-SNAPSHOT</version> <name>takeoutsystem</name> <description>takeoutsystem</description> <properties> <java.version>17</java.version> <!-- 关键修改:升级MyBatis到3.5.15 --> <mybatis.version>3.5.15</mybatis.version> <mybatis-plus.version>3.5.7</mybatis-plus.version> <mybatis-spring.version>3.0.3</mybatis-spring.version> <jjwt.version>0.11.5</jjwt.version> <springdoc-openapi.version>2.8.5</springdoc-openapi.version> <thymeleaf-extras-springsecurity6.version>3.1.2.RELEASE</thymeleaf-extras-springsecurity6.version> </properties> <dependencyManagement> <dependencies> <!-- 强制所有模块使用MyBatis版本 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>${mybatis-spring.version}</version> </dependency> </dependencies> </dependencyManagement> <dependencies> <!-- Spring Boot 基础依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <!-- MyBatis-Plus 依赖(排除冲突版本) --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>${mybatis-plus.version}</version> <exclusions> <exclusion> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> </exclusion> <exclusion> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> </exclusion> </exclusions> </dependency> <!-- 显式指定升级后的MyBatis版本 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>${mybatis-spring.version}</version> </dependency> <!-- 数据库依赖 --> <dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>test</scope> </dependency> <!-- 安全与认证依赖 --> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt-api</artifactId> <version>${jjwt.version}</version> </dependency> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt-impl</artifactId> <version>${jjwt.version}</version> <scope>runtime</scope> </dependency> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt-jackson</artifactId> <version>${jjwt.version}</version> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.thymeleaf.extras</groupId> <artifactId>thymeleaf-extras-springsecurity6</artifactId> <version>${thymeleaf-extras-springsecurity6.version}</version> </dependency> <!-- API文档 --> <dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId> <version>${springdoc-openapi.version}</version> </dependency> <!-- 测试依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter-test</artifactId> <version>${mybatis-plus.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <scope>provided</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project> 修改代码,只保留Mybatis
07-15
<think>我们只需要保留MyBatis,移除MyBatis-Plus。因此,我们需要: 1. 移除MyBatis-Plus相关的依赖(包括mybatis-plus-boot-startermybatis-plus-boot-starter-test) 2. 添加MyBatis官方的Spring Boot Starter(mybatis-spring-boot-starter) 3. 调整MyBatis版本(如果需要,但官方starter会管理版本,我们也可以不显式指定,除非有特殊版本需求) 4. 移除之前为了排除MyBatis-Plus中MyBatis而显式添加的MyBatis依赖(因为现在使用官方starter,它会自动引入正确版本的MyBatis) 5. 注意:我们之前显式指定了MyBatis的版本,现在如果使用官方starter,我们可以在<properties>中指定mybatis-spring-boot-starter的版本,或者由Spring Boot父项目管理。 但是,请注意:Spring Boot父项目已经为MyBatis starter提供了版本管理。由于我们使用了Spring Boot 3.4.7,它会自动管理mybatis-spring-boot-starter的版本(目前是3.0.3)。这个starter会引入合适版本的MyBatis(3.5.13)MyBatis-Spring(3.0.3)。如果我们想要使用更高版本的MyBatis(如3.5.15),我们可以显式覆盖。 步骤: 1. 移除`mybatis-plus-boot-starter``mybatis-plus-boot-starter-test`依赖。 2. 添加MyBatis官方starter: <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>3.0.3</version> <!-- 这个版本由Spring Boot管理,但我们可以显式指定,或者通过属性控制 --> </dependency> 3. 由于我们之前已经显式指定了MyBatis的版本(3.5.15)MyBatis-Spring(3.0.3),我们可以继续保留这些版本,但需要确保starter引入的版本与之一致。为了避免冲突,我们可以: - 在依赖中排除starter自带的MyBatisMyBatis-Spring,然后显式添加我们指定的版本(与之前类似)。 - 或者,直接使用starter管理的版本,移除我们显式指定的MyBatisMyBatis-Spring依赖,并相信starter会引入正确的版本。 这里我们选择第二种方式,因为starter已经管理了版本。但是,如果我们想使用特定的MyBatis版本(比如3.5.15),我们可以通过覆盖属性来实现。 注意:在Spring Boot的依赖管理中,mybatis-spring-boot-starter的版本为3.0.3(与Spring Boot 3.4.7兼容),它默认引入的MyBatis版本是3.5.13。如果我们想升级到3.5.15,可以在<properties>中覆盖: <mybatis.version>3.5.15</mybatis.version> <mybatis-spring.version>3.0.3</mybatis-spring.version> <!-- 注意:MyBatis-Spring需要与MyBatis版本匹配,且与Spring Boot兼容 --> 4. 移除之前显式声明的MyBatisMyBatis-Spring依赖(即下面两个依赖): <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>${mybatis-spring.version}</version> </dependency> 因为starter会引入它们。 5. 移除`<dependencyManagement>`中关于MyBatis的部分?不需要,因为我们已经通过属性控制了版本,而且<dependencyManagement>中的声明会覆盖starter引入的版本。但是,为了清晰,我们可以保留属性设置,并移除<dependencyManagement>中的显式依赖,因为属性覆盖已经足够。 6. 修改后的依赖: - 添加mybatis-spring-boot-starter - 移除mybatis-plus-boot-startermybatis-plus-boot-starter-test - 移除显式的mybatismybatis-spring依赖(因为starter包含了它们) 7. 调整属性:我们保留mybatis.versionmybatis-spring.version属性,这样我们可以控制版本。 8. 注意:mybatis-spring-boot-starter会自动配置SqlSessionFactory等,所以不需要额外配置(除非有特殊需求)。 修改后的pom.xml文件如下:</think>### 修改后的 `pom.xml`(仅保留 MyBatis) 以下是移除 MyBatis-Plus 并仅保留原生 MyBatis 的完整配置: ```xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.4.7</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.example</groupId> <artifactId>takeoutsystem</artifactId> <version>0.0.1-SNAPSHOT</version> <name>takeoutsystem</name> <description>takeoutsystem</description> <properties> <java.version>17</java.version> <!-- MyBatis 版本 --> <mybatis.version>3.5.15</mybatis.version> <mybatis-spring.version>3.0.3</mybatis-spring.version> <!-- 其他依赖版本 --> <jjwt.version>0.11.5</jjwt.version> <springdoc-openapi.version>2.8.5</springdoc-openapi.version> <thymeleaf-extras-springsecurity6.version>3.1.2.RELEASE</thymeleaf-extras-springsecurity6.version> </properties> <dependencyManagement> <dependencies> <!-- 强制所有模块使用MyBatis版本 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>${mybatis-spring.version}</version> </dependency> </dependencies> </dependencyManagement> <dependencies> <!-- Spring Boot 基础依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <!-- 原生 MyBatis Starter --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>3.0.3</version> <exclusions> <!-- 排除旧版 MyBatis --> <exclusion> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> </exclusion> <exclusion> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> </exclusion> </exclusions> </dependency> <!-- 显式指定升级后的MyBatis版本 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>${mybatis-spring.version}</version> </dependency> <!-- 数据库依赖 --> <dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>test</scope> </dependency> <!-- 安全与认证依赖 --> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt-api</artifactId> <version>${jjwt.version}</version> </dependency> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt-impl</artifactId> <version>${jjwt.version}</version> <scope>runtime</scope> </dependency> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt-jackson</artifactId> <version>${jjwt.version}</version> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.thymeleaf.extras</groupId> <artifactId>thymeleaf-extras-springsecurity6</artifactId> <version>${thymeleaf-extras-springsecurity6.version}</version> </dependency> <!-- API文档 --> <dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId> <version>${springdoc-openapi.version}</version> </dependency> <!-- 测试依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <scope>provided</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <excludes> <exclude> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </exclude> </excludes> </configuration> </plugin> </plugins> </build> </project> ``` ### 关键修改说明 1. **移除 MyBatis-Plus 依赖**: ```diff - <dependency> - <groupId>com.baomidou</groupId> - <artifactId>mybatis-plus-boot-starter</artifactId> - ... - </dependency> ``` 2. **添加原生 MyBatis Starter**: ```xml <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>3.0.3</version> <exclusions> <exclusion> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> </exclusion> <exclusion> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> </exclusion> </exclusions> </dependency> ``` 3. **移除 MyBatis-Plus 测试依赖**: ```diff - <dependency> - <groupId>com.baomidou</groupId> - <artifactId>mybatis-plus-boot-starter-test</artifactId> - ... - </dependency> ``` 4. **添加标准 Spring 测试依赖**: ```xml <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <scope>test</scope> </dependency> ``` ### 配置验证 #### 1. 基础 MyBatis 配置类 ```java @Configuration @MapperScan("com.example.mapper") public class MyBatisConfig { @Bean public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception { SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); sessionFactory.setDataSource(dataSource); // 添加自定义配置 org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration(); configuration.setMapUnderscoreToCamelCase(true); sessionFactory.setConfiguration(configuration); return sessionFactory.getObject(); } } ``` #### 2. 示例 Mapper 接口 ```java public interface UserMapper { @Select("SELECT * FROM users WHERE id = #{id}") User findById(@Param("id") Long id); @Insert("INSERT INTO users(name, email) VALUES(#{name}, #{email})") @Options(useGeneratedKeys = true, keyProperty = "id") void insert(User user); } ``` #### 3. 应用配置文件 (`application.yml`) ```yaml mybatis: configuration: map-underscore-to-camel-case: true mapper-locations: classpath:mapper/*.xml spring: datasource: url: jdbc:mysql://localhost:3306/mydb username: root password: password driver-class-name: com.mysql.cj.jdbc.Driver ``` ### MyBatisMyBatis-Plus 功能对比 | 功能 | MyBatis 原生实现 | MyBatis-Plus 实现 | |---------------------|--------------------------------------|----------------------------------------| | **CRUD 操作** | 手动编写 SQL 或注解 | 内置通用 Mapper (`BaseMapper`) | | **分页** | 需手动实现或集成 PageHelper | 内置分页插件 (`PaginationInterceptor`) | | **代码生成** | 需第三方工具 | 内置代码生成器 | | **条件构造器** | 需手动拼接 SQL | `QueryWrapper`/`UpdateWrapper` | | **乐观锁** | 手动实现 | 内置 `@Version` 注解支持 | | **性能分析插件** | 无内置 | 内置 SQL 性能分析插件 | ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值