
MyBatis
Java秦老师
让知识变得简简单单
展开
-
MyBatis懒加载
resultMap可以实现高级映射,即使用association和collection实现一对一、一对多的映射,association和collection具备懒加载的功能。懒加载可以提高数据库性能,MyBatis延迟加载的策略是先从单表查询然后再从关联表查询,这样可以大大提高数据库性能,单表查询要比关联查询多张表速度要快。1、数据库设计user用户表orders订单表原创 2017-04-06 17:09:23 · 4543 阅读 · 0 评论 -
MyBatis输入类型parameterType#{}与${}的区别
#{}#{}实现的是想prepareStatement中的预处理语句中设计参数值,sql语句中#{}表示一个占位符即?。使用占位符#{}可以有效的防止sql注入,在使用时不需要关心参数值的类型,MyBatis会自动进行java类型和jdbc类型的转换。#{}可以接收简单类型值或pojo属性值,如果parameterType传输单个简单类型值,#{}括号中可以是value或是其他原创 2017-04-08 14:25:27 · 2000 阅读 · 1 评论 -
MyBatis动态拼接SQL
通过使用MyBatis提供的标签方法可以实现动态SQL拼接1、if标签<select id="findUser" parameterType="org.mybatis.demo.po.User" resultType="org.mybatis.demo.po.User"> select * from user where 1=1 and id=#{id} and原创 2017-04-08 14:28:51 · 2926 阅读 · 0 评论 -
MyBatis实现动态代理
实现原理Mapper接口开发只需要程序员编写Mapper接口(相当于DAO接口),由MyBatis框架根据接口定义创建接口的动态代理对象。Mapper接口开发需要遵循以下规范:Mapper.xml文件中的namespace与mapper接口的类路径相同Mapper接口方法名和Mapper.xml中定义的每个statement的id相同Mapper接口方法的输入参数类原创 2017-04-08 15:04:21 · 1546 阅读 · 0 评论 -
MyBatis高级映射(一对多查询)
1、需求查询所有订单及订单下的明细信息,用户与订单为一对多关系,订单与订单明细为一对多关系2、数据库结构user用户表orders订单表orders订单表外键orderdetail订单详情表orderdetail订单详情表外键3、SQL语句4、开始编码4.1、定义POJOUserpackage or原创 2017-04-08 15:48:16 · 448 阅读 · 0 评论 -
MyBatis高级映射(一对一查询)
1、需求查询所有用户创建的订单信息,关联用户信息2、表结构user用户表orders订单表orders订单表外键3、SQL语句4、开始编码4.1、定义POJOUserpackage org.mybatis.demo.po;import java.util.Date;public class User { //属性原创 2017-04-08 15:20:36 · 411 阅读 · 0 评论 -
MyBatis高级映射(多对多查询)
1、需求查询用户及购买的商品信息2、表结构use用户表orders订单表orders订单表外键orderdetail订单详情表(订单表和商品表的关联表)orderdetail订单详情表外键(订单表和商品表的关联表)items商品表3、SQL语句4、项目编码4.1、Mapper.xml定义re原创 2017-04-10 08:41:49 · 386 阅读 · 0 评论 -
MyBatis缓存技术(一级缓存、二级缓存)
1、MyBatis的缓存分类一级缓存一级缓存的作用域是一个SqlSession。MyBatis默认开启一级缓存。在同一个SqlSession中,执行相同的查询SQL,第一次会查询数据库,并写到缓存中;第二次直接从缓存中读取。当执行SQL时,两次查询中间发生了增、删、改的操作,则SqlSession的缓存会被清空。二级缓存二级缓存的作用域是一个namesp下的mapper映射文件内容原创 2017-04-10 15:59:10 · 943 阅读 · 0 评论