数据库中<>的陷阱

有如下数据:

ID       char

null    t

123    r

123    e

234    y

345    u


select * from table where id <> '123' 

查询的结果 为234 y  和345 u,null t  不会被查出来

<dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>6.0.12</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>6.0.12</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>6.0.12</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>6.0.12</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>6.0.12</version> </dependency> <!-- JUnit 测试依赖 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> <scope>test</scope> </dependency> <!-- 阿里巴巴 Druid 数据源 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.2.18</version> <!-- 使用较新的版本以避免潜在问题 --> </dependency> <!-- MySQL 连接器,使用较新的版本 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.33</version> </dependency> <!-- MyBatis 相关依赖 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>2.0.7</version> <!-- 使用较新的版本 --> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.11</version> <!-- 使用较新的版本 --> </dependency> 给你看看我的依赖!
最新发布
03-31
<think>好的,我现在需要帮助用户解决关于Spring与MyBatis整合时Maven依赖配置和版本优化的问题。用户可能已经遇到了一些版本冲突或者配置错误,所以需要详细的建议。 首先,我应该回顾用户提供的引用内容,特别是引用[1]到[5],这些内容提到了MyBatis-Spring适配器、版本兼容问题以及具体的依赖配置。用户希望分享他们的依赖列表,可能需要审核或者优化建议。 接下来,我需要整理常见的Spring和MyBatis整合所需的依赖。核心依赖包括MyBatis本身、MyBatis-Spring适配器、Spring的JDBC和事务管理,以及数据库连接池比如Druid。同时,数据库驱动如MySQL也是必须的。 然后,版本兼容性是一个关键点。根据引用[3],低版本的依赖可能导致异常,所以需要确保各个库之间的版本匹配。例如,MyBatis-Spring的版本需要与MyBatis和Spring的版本兼容。例如,MyBatis 3.5.9对应MyBatis-Spring 2.1.1,而Spring 5.3.x可能更合适。 另外,用户可能还需要考虑单元测试和日志依赖,比如JUnit和SLF4J,这些虽然不是直接整合所需,但项目开发中常用,需要保持版本一致性。 在优化建议方面,可以推荐使用最新稳定版本,避免过时的库。同时,检查依赖管理,比如使用Maven的dependencyManagement来统一版本号,减少冲突。排除不必要的传递依赖也是重要的一步,防止引入冲突的库。 最后,需要提醒用户注意配置文件,如Spring的上下文配置和MyBatis的配置,确保正确扫描mapper接口和配置事务管理。同时,参考官方文档和社区资源,确保配置的最佳实践。 总结一下,我需要提供一个结构清晰的依赖列表,每个依赖的作用、示例版本以及版本选择的理由。同时给出优化建议,帮助用户避免常见的陷阱,确保项目稳定运行。</think>### Spring与MyBatis整合的Maven依赖配置及版本优化建议 #### 一、核心依赖清单及作用说明 1. **MyBatis核心库** ```xml <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.13</version> <!-- 推荐稳定版本 --> </dependency> ``` *作用*:提供MyBatis的SQL映射、会话管理功能[^1]。 2. **MyBatis-Spring适配器** ```xml <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>2.1.1</version> <!-- 需与MyBatis版本匹配 --> </dependency> ``` *作用*:实现MyBatis与Spring的无缝整合,管理SqlSession生命周期。 3. **Spring JDBC & 事务** ```xml <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.3.28</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>5.3.28</version> </dependency> ``` *作用*:提供数据源管理、声明式事务支持[^4]。 4. **数据库连接池(以Druid为例)** ```xml <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.2.16</version> </dependency> ``` *作用*:高效连接池管理,支持监控功能。 5. **MySQL驱动** ```xml <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.33</version> </dependency> ``` #### 二、版本优化建议 1. **版本匹配原则** - MyBatis 3.5.x ➔ MyBatis-Spring 2.1.x - Spring 5.3.x ➔ MyBatis-Spring 2.1.x - JDK 8+ ➔ MySQL驱动8.x / JDK 7 ➔ MySQL驱动5.x 2. **依赖管理策略** 使用`<dependencyManagement>`统一版本: ```xml <properties> <mybatis.version>3.5.13</mybatis.version> <spring.version>5.3.28</spring.version> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring.version}</version> </dependency> </dependencies> </dependencyManagement> ``` 3. **常见冲突规避** - 检查`mybatis-spring`与`spring-core`的兼容性 - 排除老旧日志依赖(如log4j 1.x) ```xml <exclusions> <exclusion> <groupId>log4j</groupId> <artifactId>log4j</artifactId> </exclusion> </exclusions> ``` #### 三、典型错误规避 1. **配置缺失问题** - 必须配置`SqlSessionFactoryBean`: ```xml <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name="mapperLocations" value="classpath:mapper/*.xml"/> </bean> ``` - 需添加`@MapperScan`注解扫描接口: ```java @Configuration @MapperScan("com.example.mapper") public class MyBatisConfig {} ``` 2. **事务管理强化** 建议启用注解驱动事务: ```xml <tx:annotation-driven transaction-manager="transactionManager"/> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> </bean> ``` #### 四、推荐版本组合 | 组件 | 稳定版本 | 特殊说明 | |------------------|------------|-----------------------------| | MyBatis | 3.5.13 | 支持动态SQL增强 | | MyBatis-Spring | 2.1.1 | 必须与MyBatis主版本匹配 | | Spring Framework | 5.3.28 | LTS版本,企业级应用首选 | | MySQL Driver | 8.0.33 | 支持SSL连接和性能优化 | #### 五、扩展建议 1. **监控集成**:添加Druid监控统计过滤器 2. **单元测试**:引入`spring-test`和`junit-jupiter` ```xml <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter</artifactId> <version>5.9.3</version> <scope>test</scope> </dependency> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值