数据库BLOB读写
Java字段类型定义为byte[],数据库表的字段类型为BLOB,常用的类型转换器是BlobTypeHandler
批量更新配置
还有一种方式是在获取sqlSession的时候进行设置
SqlSession session = factory.openSession(ExecutorType.BATCH)
或者在整合spring的时候配置
调用存储过程
* mysql中创建存储过程
DROP PROCEDURE IF EXISTS get_stuName;
DELIMITER $
create procedure get_stuName(in stuid int, out stuname varchar(50))
begin
select stu_name into stuname from student_info where stu_id = stuid ;
end $
DELIMITER ;
* 定义入参的pojo类型,其实就是Student类
* 定义查询语句
public void getStudentNameByProceDure(Student stu);
参数设置中对于存储过程的支持
mode: 可以设置 IN,OUT,INOUT
jdbcType: org.apache.ibatis.type.JdbcType 中的枚举类型
javaType和typeHandler都可以指定。
另外当返回的类型是游标jdbcType=CURSOR,还需要设置resultMap接受映射结果
接受游标结果
分表的应用
其实就是将查询参数,作为sql的一部分传进去。
select * from student_info_${year} m
分页
Mybatis的分页支持类型RowBounds,缺点是会将结果全查询出来,在进行截取,适合数据量比较小的查询,大数据的查询不推荐使用
new RowBounds(int offset,int limit) offset索引,limit查询的数据量
public Student queryStudentInfoByStudent(@Param("id")Integer id, RowBounds rb);
mapper.queryStudentInfoByStudent(5, new RowBounds(0,10));