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));
相關文章
- Oracle 儲存過程分頁 + Sqlsugar呼叫Oracle儲存過程SqlSugar
- Sql儲存過程分頁--臨時表儲存SQL儲存過程
- 資料庫分庫,原來 SQL 和儲存過程寫的報表咋辦?資料庫SQL儲存過程
- SQL 分頁儲存過程SQL儲存過程
- 《資料儲存》之《分庫,分表》
- SqlServer-儲存過程分頁SQLServer儲存過程
- 大資料資料庫讀寫分離分庫分表大資料資料庫
- 使用儲存過程(PL/SQL)向資料庫中儲存BLOB物件儲存過程SQL資料庫物件
- 讀寫分離 & 分庫分表 & 深度分頁
- 報表資料分庫儲存
- 實現報表資料分庫儲存
- SQL Server資料庫遠端更新目標表資料的儲存過程SQLServer資料庫儲存過程
- 資料庫儲存過程資料庫儲存過程
- 通過EFCore呼叫GBase8s資料庫儲存過程資料庫儲存過程
- MyCat分庫分表、讀寫分離
- Java mysql blob 資料讀寫操作JavaMySql
- 【資料庫】資料庫儲存過程(一)資料庫儲存過程
- MySql資料庫——儲存過程MySql資料庫儲存過程
- 呼叫儲存過程儲存過程
- 資料庫讀寫分離資料庫
- Mycat讀寫分離、主從切換、分庫分表的操作記錄
- ShardingSphere(七) 讀寫分離配置,實現分庫讀寫操作
- MySQL的寫入資料儲存過程MySql儲存過程
- linux呼叫儲存過程Linux儲存過程
- Winform呼叫儲存過程ORM儲存過程
- SQL 儲存過程裡呼叫另一個儲存過程SQL儲存過程
- Docker實現Mariadb分庫分表、讀寫分離Docker
- 分庫分表(6)--- SpringBoot+ShardingSphere實現分表+ 讀寫分離Spring Boot
- mybatis儲存過程返回listMyBatis儲存過程
- MyCat 讀寫分離 資料庫分庫分表 中介軟體 安裝部署,及簡單使用資料庫
- jsp中呼叫儲存過程JS儲存過程
- mysql如何呼叫儲存過程MySql儲存過程
- SqlServer儲存過程應用二:分頁查詢資料並動態拼接where條件SQLServer儲存過程
- mybatis-plus配置多資料來源後,出現呼叫xml檔案寫的sql說找不到方法,批量儲存/更新資料時找不到表或檢視MyBatisXMLSQL
- 百億級資料 分庫分表 後怎麼分頁查詢?
- JavaWeb——JDBC八股文、JSBC使用儲存過程、儲存函式、處理CLOB/BLOB型別JavaWebJDBCJS儲存過程儲存函式型別
- 分庫分表插入資料
- Sqlsugar呼叫Oracle的儲存過程SqlSugarOracle儲存過程