zoukankan      html  css  js  c++  java
  • 12mybatis调用执行存储过程

    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 id="pm" type="map">
    <parameter property="id" javaType="int" mode="IN"/>
    </parameterMap>

    <update id="delbook" 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 id="am" type="map">
    <parameter property="name" javaType="String" mode="IN"/>
    <parameter property="price" javaType="double" mode="IN"/>
    </parameterMap>
    <update id="addBook" 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 id="mp" type="book">
    <id column="book_id" property="id"/>
    <result column="book_name" property="name"/>
    <result column="book_price" property="price"/>
    </resultMap>

    <select id="showbook" 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 id="bookcc" 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 id="cm" type="map">
    <parameter property="r" jdbcType="INTEGER" mode="OUT"/>
    </parameterMap>

    <select id="bookcc" 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);
    }
    }

    }

    怕什么真理无穷,进一步有一步的欢喜
  • 相关阅读:
    ubuntu 查看cpu核数
    安装pytorch
    杀死用kill id+父进程
    ubuntu 更改目录所有者
    查看cuda版本+安装cuda+安装conda
    挂载新硬盘
    Linux负载过高【10.13】
    C++中c_str()
    为什么C++比python快?
    C++匿名函数
  • 原文地址:https://www.cnblogs.com/Mkady/p/7055987.html
Copyright © 2011-2022 走看看