java.io.NotSerializableException: com.baizhi.entity.User 在mybatis中使用二级缓存时候就必须需要将实体类序列化implements Serializable,我的mapper文件使用了<cache/>标签,使用了mybatis提供的二级缓存,所以在我的实体类里面必须序列化 在MyBatis中,二级缓存是一个非常重要的特性,它能够提高数据访问的效率,减少对数据库的直接访问。在中提到的问题,当你尝试启用二级缓存时,如果实体类没有实现`Serializable`接口,MyBatis在尝试序列化对象存储到缓存时会抛出`java.io.NotSerializableException`。这是因为Java的序列化机制要求可序列化的类必须实现`Serializable`接口。因此,为了解决这个问题,你需要确保你的`User`实体类像这样定义: ```java public class User implements Serializable { // ... } ``` 关于【部分内容】,这里包含了多个MyBatis的相关知识点: 1. **模糊查询**: 使用`@Param`注解传递参数,并在SQL中使用`CONCAT`函数结合`%`进行模糊匹配,例如: ```xml <select id="queryByName" parameterType="string" resultMap="UserplantMap"> select id, name, pass from plant.userplant where name like CONCAT(CONCAT('%',#{name}),'%') </select> ``` 这里的`#{name}`是MyBatis的预编译参数,可以防止SQL注入。 2. **类型别名(Type Aliases)**: MyBatis允许为类设置类型别名,以便在XML配置文件中简化类名的书写。可以通过`<typeAliases>`标签来定义: ```xml <typeAliases> <typeAlias type="com.baizhi.entity.User" alias="User"/> <!-- ... --> </typeAliases> ``` 3. **Mapper配置**: - `<mapper>`标签用于加载映射文件,可以是单个资源文件或整个包: - 单个映射文件:`<mapper resource="cn.cbh.mapper.UserDao.xml"/>` - 整个包:`<package name="org.cbh.dao"/>` - 在POM文件中,需要正确配置资源目录,确保XML映射文件能被包含进来: ```xml <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> </resource> <resource> <directory>resources/*.xml</directory> </resource> </resources> ``` 4. **返回主键(Generated Keys)**: 当执行插入操作并需要获取新生成的主键值时,可以使用`keyProperty`、`keyColumn`和`useGeneratedKeys`属性: ```xml <insert id="insert" keyProperty="id" keyColumn="id" useGeneratedKeys="true"> insert into plant.userplant(name, pass) values (#{name}, #{pass}) </insert> ``` 5. **Maven项目错误**: 如果在运行时遇到“3 字节的 UTF-8 序列的字节 3 无效”的错误,这通常意味着源文件的编码与项目的编码不一致。解决方法是在`pom.xml`中添加资源配置,确保使用UTF-8编码: ```xml <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>2.6</version> <configuration> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> </build> ``` 6. **SQL片段引用**: 可以在XML映射文件中创建`<sql>`标签定义SQL片段,然后通过`<include>`标签引用: ```xml <sql id="test">id, name, pass</sql> <select id="query" resultType="User"> SELECT <include refid="test"/> FROM userplant </select> ``` 7. **外部SQL片段引用**: 你还可以将SQL片段放在单独的XML文件中,然后在其他映射文件中通过`<mapper>`标签引用,如: ```xml <mappers> <mapper resource="cn.cbh.mapper.UserDao.xml"/> <!-- ... --> </mappers> ``` MyBatis提供了丰富的配置和功能,包括但不限于实体类的序列化、模糊查询、类型别名、主键返回、SQL片段管理和资源编码配置,这些都是优化和管理数据库操作的重要工具。在实际开发中,理解并熟练掌握这些概念将有助于提高代码的可维护性和性能。























- 粉丝: 30
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- (2025)《药品管理法》培训考核考试题库与答案.pdf
- (2025)18项医疗质量安全核心制度考试试题(含答案).pdf
- (2025)初级社会工作者综合能力试题与答案.pdf
- (2025)18项医疗质量安全核心制度考试试题(附答案).pdf
- (2025)高处作业吊篮安装拆卸工应知应会考试题库(含答案) .pdf
- (2025)保密观教育知识题库(附含答案).pdf
- (2025)高处作业吊篮安装拆卸工应知应会考试题库(附答案).pdf
- (2025)妇产科主治医师考试题与答案.pdf
- (2025)初级社会工作者考试《社会工作综合能力》真题与答案.pdf
- (2025)妇产科主治医师考试题及答案.pdf
- Qt 控件美化集成工具集:无边框窗口与多场景实用工具合集(含 Zookeeper 可视化、Thrift 接口调试等)
- (2025)初级社会工作者考试《社会工作综合能力》真题及答案.pdf
- (2025)钢筋工理论考试题库与答案.pdf
- (2025)钢筋工理论考试题库及答案.pdf
- (2025)教师师德师风知识竞赛题库与答案.pdf
- (2025)教师师德师风知识竞赛题库及答案.pdf


