Mybatis 问题梳理

问题一:There is no getter for property ...

接口 **Mapper.java 中执行方法:  

public List<E> listOption(String searchText)

XML配置中使用Mybatis内置对象 如:

<if test="searchText != null and searchText != ''"></if>

处理方案:

DAO的参数用@Param注入getter

public List<E> listOption(@Param("searchText") String searchText)

 

问题二:Could not write JSON: No serializer found for class org.apache.ibatis.excutor.loader.javassist...

原因:关联查询collection使用懒加载

处理方案:在对应的实体类增加注解

@JsonIgnoreProperties({"hibernateLazyInitializer","handler"})

  

 

转载于:https://www.cnblogs.com/Zhongzz/p/9070742.html

### MyBatis框架介绍 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。消除了几乎所有的 JDBC 代码和参数的手工设置以及结果集的检索。MyBatis 可以使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs(Plain Old Java Objects)映射成数据库中的记录[^1]。 ### 核心组件解析 #### 1. SqlSessionFactoryBuilder SqlSessionFactoryBuilder 负责创建 `SqlSessionFactory` 实例。该实例通常由单个数据源构建而来,并且在整个应用程序生命周期内保持不变。创建方式如下: ```java String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); ``` #### 2. SqlSessionFactory 一旦有了 `SqlSessionFactory` 对象,则可以通过此对象获取到 `SqlSession` 实例。后者提供了执行语句所需的所有方法。为了提高性能并减少资源消耗,在多线程环境中应考虑采用连接池技术来管理这些会话。 #### 3. SqlSession 这是最重要的类之一,代表与数据库之间的对话。通过它可以发送命令给数据库服务器,接收返回的结果集,并处理事务边界。常用的操作包括增删改查等基本 CRUD 功能。 #### 4. Mapper Interface Mapper 接口定义了对数据库表进行访问的方法签名;它们不需要实现任何逻辑——只需要声明即可。当调用 mapper 方法时,MyBatis 将自动查找相应的 SQL 映射文件,并根据传入参数动态组装最终要执行的SQL语句[^5]。 ### 使用教程 安装依赖项后,需编写核心配置文件 (`mybatis-config.xml`) 来指定环境变量和其他全局属性。接着为每一个实体类关联一个XML映射文档,其中包含了针对该类型的CRUD操作的具体描述。最后一步就是按照上述提到的方式初始化工厂和服务端点,从而完成整个集成流程[^4]。 ### 最佳实践建议 - **合理设计模型结构**:确保领域模型清晰简洁,避免过度复杂的设计模式。 - **优化查询性能**:利用缓存机制降低重复计算开销;对于大批量读取场景可启用分页加载特性[^3]。 - **遵循单一职责原则**:让每个 DAO 类只负责一种类型的数据访问操作。 - **异常处理策略**:捕获潜在错误情况下的回滚动作,保障交易一致性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值