![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MyBatis
MyBatis框架
木子津
程序员实习生,一起加油!
展开
-
Mybatis进阶-一级和二级缓存
Mybatis进阶-一级和二级缓存提供了缓存策略,通过缓存策略来减少数据库的查询次数,从而提高性能。Mybatis 中缓存分为一级缓存,二级缓存。一级缓存一级缓存是 SqlSession 级别的缓存,只要SqlSession没有flush 或 close,它就存在。1.1一级缓存是自动开启的测试import cn.lj.dao.UserDao;import cn.lj.domain.User;import org.apache.ibatis.io.Resources;import o原创 2020-11-30 12:50:47 · 366 阅读 · 0 评论 -
Mybatis进阶-延迟加载
Mybatis进阶-延迟加载延迟加载实际开发过程中很多时候并不需要总是在加载用户信息时就一定要加载他的账户信息。好处:在需要用到数据时才进行加载,不需要用到数据时就不加载数据。延迟加载也称懒加载. 好处:先从单表查询,需要时再从关联表去关联查询,大大提高数据库性能,因为查询单表要比关联查询多张表速度要快。坏处:因为只有当需要用到数据时,才会进行数据库查询,这样在大批量数据查询时,因为查询工作也要消耗 时间,所以可能造成用户等待时间变长,造成用户体验下降。实现需要查询账户(Account)信息并且原创 2020-11-29 17:35:16 · 91 阅读 · 0 评论 -
Mybatis进阶-多表查询-一对一+一对多+多对多
Mybatis 多表查询1.概念 表之间的关系有几种: 一对多 多对一 一对一 多对多举例: 用户和订单就是一对多 订单和用户就是多对一 一个用户可以下多个订单 多个订单属于同一个用户 人和身份证号就是一对一 一个人只能有一个身份证号 一个身份证号只能属于一个人 老师和学生之间就是多对多 一个学生可以被多个老师教过 一个老师可以交多个学生 特例: 如果拿出每一个订单,他都只能属于一个用户。 所以Mybatis就把多对一看原创 2020-11-25 20:38:41 · 228 阅读 · 0 评论 -
Mybatis进阶-动态sql
Mybatis进阶-动态sql1.动态 SQL 之标签for根据实体类的不同取值,使用不同的 SQL 语句来进行查询。比如在 id 如果不为空时可以根据 id 查询, 如果 username 不同空时还要加入用户名作为条件。这种情况在我们的多条件组合查询中经常会碰到。持久层 Dao 接口/** * 根据传入参数条件查询 * @param user 查询条件:有可能有用户名,也有没用户名 * @return */List<User> findUserByCondition(Use原创 2020-11-25 14:18:42 · 78 阅读 · 0 评论 -
Mybatis进阶-Mybatis 的事务控制-跟踪源码+自动提交事务
Mybatis 的事务控制面试常问事务是什么事务的四大特性ACID不考虑隔离性会产生的3个问题解决方法:四种隔离级别通过sqlsession对象的commit方法和rollback方法实习事务提交和回滚Mybatis 框架因为是对 JDBC 的封装,所以 Mybatis 框架的事务控制方式,本身也是用 JDBC 的 setAutoCommit()方法来设置事务提交方式的。来跟踪源码验证这个事实1跟踪源码1.1org/apache/ibatis/session/SqlSession.ja原创 2020-11-25 13:25:45 · 433 阅读 · 0 评论 -
Mybatis进阶-Mybatis 的连接池技术
Mybatis 的连接池技术1.Mybatis 连接池的分类Mybatis 中也有连接池技术,在 Mybatis 的 SqlMapConfig.xml 配置文件中,通过来实 现 Mybatis 中连接池的配置。1.1UNPOOLED不使用连接池的数据源1.2POOLED使用连接池的数据源1.3JNDI使用 JNDI 实现的数据源MyBatis 内部分别定义了实现了 java.sql.DataSource 接口的 UnpooledDataSource, PooledDataSource 类来原创 2020-11-25 13:23:17 · 238 阅读 · 0 评论 -
Mybatis进阶-输出结果封装resultType和resultMap
Mybatis 的输出结果封装1.resultType 配置结果类型1.1基本类型示例List<User> findAll();User findById(Integer userId);List<User> findByName(String username);int findTotal();List<User> findUserByVo(QueryVo vo); <select id="findAll" resultType="cn.l原创 2020-11-24 23:51:25 · 503 阅读 · 0 评论 -
MyBatis两种方式入门和区别+基于xml配置的CRUD+包装类ongl用法+设计模式应用
MyBatis1.MyBatis 框架概述解决数据持久化问题的框架1.mybatis 是一个优秀的基于 java 的持久层框架,它内部封装了 jdbc,使开发者只需要关注 sql 语句本身,而不需要花费精力去处理加载驱动、创建连接、创建 statement 等繁杂的过程。2.mybatis 通过 xml 或注解的方式将要执行的各种 statement 配置起来,并通过 java 对象和 statement 中sql 的动态参数进行映射生成最终执行的 sql 语句,最后由 mybatis 框架执行原创 2020-11-24 16:48:23 · 482 阅读 · 0 评论