12mybatis调用执行存储过程

摘要:
parameterproperty=“id”javaType=“int”mode=“IN”/>价格);地图);parameterMaptype=“map”>结束$$分隔符;resultMaptype=“book”>&书信电报;{callshowbook()}<用于(Bookb;

mybatis 调用执行存储过程
mysql 声明建立存储过程 删除 在mysql中调用
-- 声明定义存储过程
delimiter $$
create procedure delbook(id int)
begin
delete from book where book_id=id;
end$$
delimiter ;

-- 删除存储过程
drop procedure delbook;


-- 调用执行存储过程
call delbook(4);

select * from book;

mybatis 调用删除存储过程
-- 声明定义存储过程--------------------------------------------
delimiter $$
create procedure delbook(id int)
begin
delete from book where book_id=id;
end$$
delimiter ;

BookMapper.java 映射接口文件
public int delbook(int id);


BookMapper.xml 映射配置文件
<parameterMap type="map">
<parameter property="id" javaType="int" mode="IN"/>
</parameterMap>

<update statementType="CALLABLE" parameterMap="pm">
{call delbook(?)}
</update>

程序调用
int i = bdao.delbook(3);


-- 声明一个插入数据的存储过程--------------------------------------------
delimiter $$
create procedure addbook(name varchar(20),price decimal(8,2))
begin
insert into book(book_name,book_price) values(name,price);
end$$
delimiter ;

-- 调用一下
call addbook('《java开发》',80);


BookMapper.java 映射接口
public int addBook(Map<String,Object> map);

BookMapper.xml 映射文件
注册映射文件的参数顺序
<parameterMap type="map">
<parameter property="name" javaType="String" mode="IN"/>
<parameter property="price" javaType="double" mode="IN"/>
</parameterMap>
<update statementType="CALLABLE" parameterMap="am">
{call addbook(?,?)}
</update>

程序调用方法
Map<String,Object> m = new HashMap<String,Object>();
m.put("name","《项目开发》");
m.put("price",28d);
int i = bdao.addBook(m);
System.out.println(i);

-- 声明定义存储过程--------------------------------------------
delimiter $$
create procedure showbook()
begin
select * from book;
end$$
delimiter ;

-- 调用存储
call showbook;
call showbook();

BookMapper.java
public List<Book> showbook();

BookMapper.xml
<resultMap type="book">
<id column="book_id" property="id"/>
<result column="book_name" property="name"/>
<result column="book_price" property="price"/>
</resultMap>

<select statementType="CALLABLE" resultMap="mp">
{call showbook()}
</select>

程序代码
List<Book> bks = bdao.showbook();
System.out.println(bks.size());
for(Book b : bks){
System.out.println(b.getName());
}

-- 声明定义存储过程
delimiter $$
create procedure bookcc(out r int)
begin
select count(*) into r from book;
end$$
delimiter ;


call bookcc(@r);
select @r;

BookMapper.java
public void bookcc(Map<String,Object> map);

BookMapper.xml 文件
<select statementType="CALLABLE">
{call bookcc(#{r,mode=OUT,jdbcType=INTEGER})}
</select>

程序代码调用
Map<String,Object> m = new HashMap<String,Object>();
bdao.bookcc(m);
System.out.println(m.get("r"));

别一种方式
BookMapper.java 映射接口
public void bookcc(Map<String,Object> map);

BookMapper.xml 映射配置文件
<parameterMap type="map">
<parameter property="r" jdbcType="INTEGER" mode="OUT"/>
</parameterMap>

<select statementType="CALLABLE" parameterMap="cm">
{call bookcc(?)}
</select>
程序代码为
Map<String,Object> m = new HashMap<String,Object>();
bdao.bookcc(m);
System.out.println(m.get("r"));

总程序测试代码如下:
package com;

import com.fz.entity.Book;
import com.fz.mapper.BookMapper;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
* Created by webrx on 2017-06-16.
*/
public class Demo {

protected SqlSessionFactory sf;
protected SqlSession ss;
protected BookMapper bdao;
@Before
public void init(){
try {
this.sf = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml"));
this.ss = this.sf.openSession();
this.bdao = this.ss.getMapper(BookMapper.class);
} catch (IOException e) {
e.printStackTrace();
}
}
@After
public void close(){
this.ss.commit();
this.ss.close();
}

@Test
public void s1() throws SQLException {
Connection conn = this.ss.getConnection();
PreparedStatement pst = conn.prepareStatement("create database ddd");
pst.execute();
pst.close();
conn.close();
}

@Test
public void s2(){
//bdao.dropDb("ddd");
List<Map<String,Object>> dbs = bdao.showDbs();
for(Map<String,Object> map : dbs){
System.out.println(map.get("Database"));
}
}


@Test
public void s4(){

//int i = bdao.delbook(3);
//System.out.println(i);

//Map<String,Object> m = new HashMap<String,Object>();
//m.put("name","《项目开发》");
//m.put("price",28d);
//int i = bdao.addBook(m);
//System.out.println(i);

//List<Book> bks = bdao.showbook();
//System.out.println(bks.size());
//for(Book b : bks){
// System.out.println(b.getName());
//}
Map<String,Object> m = new HashMap<String,Object>();
bdao.bookcc(m);
System.out.println(m.get("r"));

}

@Test
public void s3(){
//bdao.dropDb("ddd");
List<String> dbs = bdao.showDbs2();
for(String n : dbs){
System.out.println(n);
}
}

}

免责声明:文章转载自《12mybatis调用执行存储过程》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇js import的几种用法springboot开启gzip压缩下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

flutter 生成aar文件,嵌入原生android项目

适用于flutter单独开发,android项目单独开发的场景 1:将flutter项目打包成aar文件,详情见官方文档:https://flutter.cn/docs/development/add-to-app/android/add-flutter-screen 2:在原生android项目文件中,项目根目录app/build.gradle文件中添加...

MongoDB副本集提高读写速率

一、提高副本集写的速率 1、通过设置Write Concern for Replica Sets¶ cfg = rs.conf()##cfg.settings.getLastErrorDefaults = { w: "majority", wtimeout: 5000 } cfg.settings.getLastErrorDefaults ={w:1}r...

Maven的Dependency怎么找?

用了Maven,所需的JAR包就不能再像往常一样,自己找到并下载下来,用IDE导进去就完事了,Maven用了一个项目依赖(Dependency)的概念,用俗话说,就是我的项目需要用你这个jar包,就称之为我的项目依赖你这个包,换句话说,你这个JAR包就是我这个项目的Dependency。       于是很多人在刚用Maven的时候,就会在加Depende...

Android使用PopupMenu创建弹出式菜单

PopupMenu 代表弹出式菜单,它会在指定组件上弹出PopupMenu,在默认情况下PopupMenu会显示在该组件的下方或者上方。PopupMenu可增加多个菜单项,并可以为菜单项增加子菜单。 实现效果: 实现步骤: 步骤一: 创建主布局文件: <?xml version="1.0" encoding="utf-8"?> <Lin...

Qt布局管理

设计软件中各个部件的位置排列,有两种方法: 1.设置widget的在父窗体中的坐标和大小 widget->move(x,y); widget->resize(width,height); //widget->setGeometry(QRect(x,y,width,height)); 什么时候用:不想被布局约束,对这种控件可控制时 例如下面...

Openjudge1.11.1 查找最接近的元素

【描述】    在一个非降序列中,查找与给定值最接近的元素。【输入】    第一行包含一个整数n,为非降序列长度。1 <= n <= 100000。    第二行包含n个整数,为非降序列各元素。所有元素的大小均在0-1,000,000,000之间。    第三行包含一个整数m,为要询问的给定值个数。1 <= m <= 10000。 ...