mybatis註解方式呼叫mysql儲存過程

2021-10-12 10:18:51 字數 1996 閱讀 8094

spring boot+mybatis

service**

controller**

需求:隨機返回某一資料表中列舉型別的屬性的某乙個值給後台。

具體來說,假設資料庫中有乙個表名為』test』的資料表,其中有一屬性名為major的屬性,這一屬性為列舉型別,希望能夠隨機返回其中的某乙個值。資料表名以及屬性名均為變數,需要動態傳參。

delimiter //

drop procedure if exists solve_enum;

create procedure solve_enum (in tablename varchar (25) , in attriname varchar (25) ,out value varchar (25))

begin

set @count := concat(

"select count(*) into @c from (select distinct ", attriname, " from ", tablename, " ) a");

prepare stmt1 from @count;

execute stmt1;

deallocate prepare stmt1;

set @count1 := floor(rand(

)* @c )

;set @sql := concat(

"select * into @value from (select distinct " ,attriname, " from ", tablename, ") a order by ",attriname, " limit ?,1");

prepare stmt from @sql;

execute stmt using @count1;

deallocate prepare stmt;

select @value as value;

end;

//

可以在命令列中測試一下

* 註解形式呼叫儲存過程

* @param map

*/@select

("call solve_enum(#,#,#)"

)@options

(statementtype=statementtype.callable)

hashmap solve_enum

(@param

("map"

)map map)

;

@transactional

public hashmap solve_enum

(@param

("map"

)map map)

string value ="";

hashmap

map =

newhashmap()

; map.

put(

"tablename"

,"test");

map.

put(

"attriname"

,"major");

map.

put(

"value"

, value)

; value = string.

valueof

(service.

solve_enum

(map)

.get

("value"))

; system.out.

println

(value)

;

mybatis 一對多註解方式

這裡演示是一對多關係 乙個使用者擁有多個許可權 我們先查詢出使用者的所有資訊 因為我們需要使用者的id 根據id再做二次查詢 我們主要的sql 分為兩個 1.select from user 2.select distinct r.from role r inner join user role u...

Mybatis 註解形式

1.查詢 查詢 select select id,name,type,numbers,cancelled,completed,percentage from customer list listselectcustomerlistall 多表聯查 所有的關聯實體類必須引入此註解 jsonignore...

MyBatis註解開發

mybatis作為乙個輕量級的半orm框架,由於其上手快 開發快捷,在企業中的中小型專案應用較廣泛,下面我們來演示一下如何使用mybatis的註解開發方式來進行 編寫。開發環境介紹 資料庫使用mysql,mybatis使用3.4.1 沒有使用spring整合 mysql驅動5.1.36。pojo 表...