MyBatis(八) 資料庫BLOB讀寫、批量更新操作、儲存過程呼叫、分表、分頁
資料庫BLOB讀寫
Java欄位型別定義為byte[],資料庫表的欄位型別為BLOB,常用的型別轉換器是BlobTypeHandler
批量更新配置
<!-- 配置預設的執行型別是批量模式 -->
<setting name="defaultExecutorType" value="BATCH"/>
還有一種方式是在獲取sqlSession的時候進行設定
SqlSession session = factory.openSession(ExecutorType.BATCH)
或者在整合spring的時候配置
<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory"></constructor-arg>
<!-- 更新採用批量模式 -->
<constructor-arg index="1" value="BATCH"></constructor-arg>
</bean>
呼叫儲存過程
* 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);
<select id="getStudentNameByProceDure" statementType="CALLABLE"
parameterType="student"
>
{ call get_stuName
(#{stuId,mode=IN,jdbcType=INTEGER},
#{stuName,mode=OUT,jdbcType=VARCHAR})}
</select>
引數設定中對於儲存過程的支援
mode: 可以設定 IN,OUT,INOUT
jdbcType: org.apache.ibatis.type.JdbcType 中的列舉型別
javaType和typeHandler都可以指定。
另外當返回的型別是遊標jdbcType=CURSOR,還需要設定resultMap接受對映結果
接受遊標結果
<select id="getStudentNameByProceDure" statementType="CALLABLE"
parameterType="student"
>
{ call get_info
(#{stuId,mode=IN,jdbcType=int},
#{stuName,mode=OUT,jdbcType=VARCHAR},
#{stuInfoList,mode=OUT,jdbcType=CURSOR,resultMap=cursorMap}
)}
</select>
分表的應用
其實就是將查詢引數,作為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);
<select id="queryStudentInfo" resultMap="studentAndCourse" parameterType="int">
select * from student_info m where m.stu_id = #{id}
</select>
mapper.queryStudentInfoByStudent(5, new RowBounds(0,10));
相關文章
- Sql儲存過程分頁--臨時表儲存SQL儲存過程
- 分頁儲存過程儲存過程
- SQL 分頁儲存過程SQL儲存過程
- 通用分頁儲存過程儲存過程
- sql儲存過程分頁SQL儲存過程
- 《資料儲存》之《分庫,分表》
- 資料庫分庫,原來 SQL 和儲存過程寫的報表咋辦?資料庫SQL儲存過程
- 通用的SQL Server資料庫查詢分頁儲存過程SQLServer資料庫儲存過程
- 大資料資料庫讀寫分離分庫分表大資料資料庫
- 讀寫分離 & 分庫分表 & 深度分頁
- SqlServer-儲存過程分頁SQLServer儲存過程
- 完整的分頁儲存過程以及c#呼叫方法儲存過程C#
- 報表資料分庫儲存
- 使用儲存過程(PL/SQL)向資料庫中儲存BLOB物件儲存過程SQL資料庫物件
- oracle儲存過程分頁程式碼Oracle儲存過程
- (SQL Server)分頁的儲存過程SQLServer儲存過程
- 簡單的儲存過程分頁儲存過程
- 簡單的分頁儲存過程儲存過程
- 淺述asp.net海量分頁資料儲存過程ASP.NET儲存過程
- 儲存過程呼叫不同資料庫的資料儲存過程資料庫
- Spring mybatis 呼叫儲存過程SpringMyBatis儲存過程
- MyBatis基礎:MyBatis呼叫儲存過程(6)MyBatis儲存過程
- asp.net SQL Server 儲存過程分頁及程式碼呼叫ASP.NETSQLServer儲存過程
- 兩種SQL分頁方法儲存過程和遊標儲存過程SQL儲存過程
- sqlserver儲存過程實現多表分頁SQLServer儲存過程
- 分頁控制元件及儲存過程控制元件儲存過程
- [MSSQL]mssql海量高效分頁儲存過程SQL儲存過程
- ORACLE高效分頁儲存過程程式碼Oracle儲存過程
- 基於ROWCOUNT的分頁儲存過程儲存過程
- 儲存過程分頁 Ado.Net分頁 EF分頁 滿足90%以上儲存過程
- 實現報表資料分庫儲存
- 批量插入資料的儲存過程儲存過程
- mysql 儲存過程,以及mybatis如何呼叫MySql儲存過程MyBatis
- mybatis呼叫檢視和儲存過程MyBatis儲存過程
- 使用儲存過程實現分頁列印 (轉)儲存過程
- SQLServer 2005通用分頁儲存過程SQLServer儲存過程
- 拋磚引玉——通用分頁儲存過程儲存過程
- SQL SERVER 2005分頁儲存過程SQLServer儲存過程