mybatis映射文件操作存儲過程的實現(xiàn)
先隨便創(chuàng)建一個存儲過程
DELIMITER $$
CREATE PROCEDURE
getUserNameById (IN i_id BIGINT, OUT o_name VARCHAR(10))
BEGIN
SELECT u.name INTO o_name FROM tb_user u WHERE id = i_id;
END $$
delimiter $$ : 是將sql語句的結(jié)束符號先替換成$$的意思,因為sql是遇到;號加回車自動就直接執(zhí)行的
mybatis調(diào)用存儲過程
@Mapper
public interface UserMapper {
? ? void getUserNameById(UserDto userDto); ?// 注意沒有返回值
}<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.itdong.mapper.UserMapper">
? ? <select id="getUserNameById" statementType="CALLABLE">
? ? ? ? {
? ? ? ? ? ? call getUserNameById(
? ? ? ? ? ? ? ? #{id, mode=IN}, /*調(diào)用入?yún)ο笾械膅et方法,獲取id的值*/
? ? ? ? ? ? ? ? #{name, mode=OUT, jdbcType=VARCHAR} /*調(diào)用入?yún)ο蟮膕et方法, 設(shè)置name的值*/
? ? ? ? ? ? )
? ? ? ? }
? ? </select>
</mapper>@Test
void contextLoads() {
UserDto userDto = new UserDto();
userDto.setId(445225202303020001L);
System.out.println(userDto);
userMapper.getUserNameById(userDto);
System.out.println(userDto);
}
UserDto(id=445225202303020001, name=null, age=null, phone=null, email=null, password=null)
2023-03-12 23:37:42.354 INFO 4848 --- [ main] com.alibaba.druid.pool.DruidDataSource : {dataSource-1} inited
UserDto(id=445225202303020001, name=admin, age=null, phone=null, email=null, password=null)
這里需要注意就是
接口的方法沒有返回值
statementType=“CALLABLE” jdbcType=VARCHAR
在mapper文件中可以使用statementType標記使用什么的對象操作SQL語句。
statementType:標記操作SQL的對象
取值說明:
1、STATEMENT:直接操作sql,不進行預(yù)編譯,獲取數(shù)據(jù):$—Statement
2、PREPARED:預(yù)處理,參數(shù),進行預(yù)編譯,獲取數(shù)據(jù):#—–PreparedStatement:默認
3、CALLABLE:執(zhí)行存儲過程————CallableStatement
其中如果在文件中,取值不同,那么獲取參數(shù)的方式也不相同
注意:如果只為STATEMENT,那么sql就是直接進行的字符串拼接,這樣如果為字符串需要加上引號,如果為PREPARED,是使用的參數(shù)替換,也就是索引占位符,我們的#會轉(zhuǎn)換為?再設(shè)置對應(yīng)的參數(shù)的值。
到此這篇關(guān)于mybatis映射文件操作存儲過程的實現(xiàn)的文章就介紹到這了,更多相關(guān)mybatis映射文件操作存儲過程內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java異步線程中的CompletableFuture與@Async詳解
這篇文章主要介紹了Java異步線程中的CompletableFuture與@Async詳解,CompletableFuture是java中提供的一個異步執(zhí)行類,@Async是Spring提供的異步執(zhí)行方法,當調(diào)用方法單獨開啟一個線程進行調(diào)用,需要的朋友可以參考下2024-01-01
使用位運算、值交換等方式反轉(zhuǎn)java字符串的多種方法(四種方法)
這篇文章主要介紹了使用位運算、值交換等方式反轉(zhuǎn)java字符串,本文通過四種方式給大家講解,給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07

