MyBatis创建存储过程的实例代码_动力节点Java学院整理

发布时间 - 2026-01-11 03:04:08    点击率:

所需要用到的其他工具或技术:

项目管理工具 : Maven

测试运行工具 : Junit

数据库 : Derby

本节需要用到的有2部分,第一部分是如何在Derby中创建存储过程,第二部分是如何在Mybatis中调用存储过程

一. 在Derby中创建存储过程

在Eclipse中创建一个新的普通Java项目命名为Test_Store_Procedure

在com.bjpowernode.practice包下创建一个Class命名为StoreProcedureOperationClass.class

package com.bjpowernode.practice; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.PreparedStatement; 
import java.sql.SQLException; 
/** 
 * 
 * 存储过程类 
 * 
 * @author Freud 
 * 
 */ 
public class StoreProcedureOperationClass 
{ 
  /** 
   * 
   * 执行插入的存储过程 
   * 
   * @param id 
   * @param username 
   * @param password 
   * @param nickname 
   * @throws SQLException 
   */ 
  public static void insertData(int id, String username, String password, String nickname) throws SQLException 
  { 
    Connection connection = DriverManager.getConnection("jdbc:default:connection"); 
    PreparedStatement p = 
        connection.prepareStatement("INSERT INTO USER_TEST_TB(ID,USERNAME,PASSWORD,NICKNAME) VALUES(?,?,?,?)"); 
    p.setInt(1, id); 
    p.setString(2, username); 
    p.setString(3, password); 
    p.setString(4, nickname); 
    System.out.println("INSERT VALUES (id=" + id + ",username=" + username + ",password=" + password + ",nickname=" 
        + nickname + ")"); 
    p.executeUpdate(); 
    p.close(); 
    connection.close(); 
  } 
} 

3. 利用jar命令或者Eclipse工具导出到C:\freud\Test_Store_Procedure.jar

4. 在ij命令行中声明存储过程

CREATE PROCEDURE FREUD.INSERT_USER(IN THE_ID INTEGER,  
         IN THE_USERNAME VARCHAR(20), IN THE_PASSWORD VARCHAR(20), IN THE_NICKNAME VARCHAR(20))  
PARAMETER STYLE JAVA MODIFIES SQL DATA LANGUAGE JAVA  
EXTERNAL NAME 'com.bjpowernode.practice.StoreProcedureOperationClass.insertData'; 
 在 ij 控制台中调用call sqlj.install_jar('C:\freud\Test_Store_Procedure.jar', 'FREUD.TEST_SPROCEDURE', 0);将 jar 包导入到 FREUD模式中,并命名为TEST_SPROCEDURE。

6. 在 ij 控制台中调用call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.classpath', 'FREUD.TEST_SPROCEDURE'); 将 jar 包加入到数据库 classpath 搜索路径中。

这样,Derby的存储过程就算创建完成了

二.在Mybatis中调用存储过程

Maven Dependencies:
<dependencies> 
    <dependency> 
      <groupId>org.mybatis</groupId> 
      <artifactId>mybatis</artifactId> 
      <version>3.2.7</version> 
    </dependency> 
    <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.9</version> 
      <scope>test</scope> 
    </dependency> 
    <dependency> 
      <groupId>org.apache.derby</groupId> 
      <artifactId>derby</artifactId> 
      <version>10.10.2.0</version> 
    </dependency> 
    <dependency> 
      <groupId>org.apache.derby</groupId> 
      <artifactId>derbyclient</artifactId> 
      <version>10.10.2.0</version> 
    </dependency> 
  </dependencies> 

Mybatis配置文件 src/main/resource源目录下

test-mybatis-configuration.xml
<?xml version="1.0" encoding="UTF-8" ?>  
<!DOCTYPE configuration  
 PUBLIC "-//mybatis.org//DTD Config 3.0//EN"  
 "http://mybatis.org/dtd/mybatis-3-config.dtd"> 
<configuration> 
  <properties> 
    <property name="driver" value="org.apache.derby.jdbc.ClientDriver" /> 
    <property name="url" 
      value="jdbc:derby://localhost:1527/freud;create=true" /> 
  </properties> 
  <environments default="development"> 
    <environment id="development"> 
      <transactionManager type="JDBC" /> 
      <dataSource type="POOLED"> 
        <property name="driver" value="${driver}" /> 
        <property name="url" value="${url}" /> 
      </dataSource> 
    </environment> 
  </environments> 
  <mappers> 
    <mapper resource="com/freud/practice/UserMapper.xml" /> 
  </mappers> 
</configuration>  

User.java对象类(src/main/java/com/freud/practice目录下)

package com.bjpowernode.practice; 
public class User 
{ 
  private Integer id; 
  private String username; 
  private String password; 
  private String nickname; 
  public Integer getId() 
  { 
    return id; 
  } 
  public void setId(Integer id) 
  { 
    this.id = id; 
  } 
  public String getUsername() 
  { 
    return username; 
  } 
  public void setUsername(String username) 
  { 
    this.username = username; 
  } 
  public String getPassword() 
  { 
    return password; 
  } 
  public void setPassword(String password) 
  { 
    this.password = password; 
  } 
  public String getNickname() 
  { 
    return nickname; 
  } 
  public void setNickname(String nickname) 
  { 
    this.nickname = nickname; 
  } 
} 

UserMapper.xml  Mapper文件(src/main/java/com.bjpowernode.practice目录下)

<?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.bjpowernode.practice.UserMapper">  
  <!-- 查询 --> 
  <select id="getUser" resultType="com.bjpowernode.practice.User"> 
    select * 
    from USER_TEST_TB 
  </select>    
  <!-- 调用插入的存储过程 --> 
  <insert id="insertUser" statementType="CALLABLE"> 
    CALL FREUD.INSERT_USER(#{id},#{username},#{password},#{nickname}) 
  </insert> 
</mapper>  

UserMapper.java Mapper类(src/main/java/com.bjpowernode.practice目录下)

package com.bjpowernode.practice; 
import java.util.List; 
public interface UserMapper 
{ 
  public List<User> getUser(); 
  public void insertUser(User user); 
 
} 

测试类TestMyBatis.java(src/test/java/com.bjpowernode.practice目录下)

package com.bjpowernode.practice; 
import java.io.InputStream; 
import java.text.MessageFormat; 
import java.util.List; 
import org.apache.ibatis.session.SqlSession; 
import org.apache.ibatis.session.SqlSessionFactory; 
import org.apache.ibatis.session.SqlSessionFactoryBuilder; 
import org.junit.Before; 
import org.junit.Test; 
public class TestMyBatis 
{ 
  private String source; 
  private InputStream inputStream; 
  private SqlSessionFactory sqlSessionFactory; 
  @Before 
  public void setUp() 
  { 
    /** 
     * 准备Mybatis运行环境 
     */ 
    source = "test-mybatis-configuration.xml"; 
    inputStream = TestMyBatis.class.getClassLoader().getResourceAsStream(source); 
    sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); 
  } 
  @Test 
  public void testInsert() 
  { 
    try 
    { 
      // 获取Session连接 
      SqlSession session = sqlSessionFactory.openSession(); 
      // 获取Mapper 
      UserMapper userMapper = session.getMapper(UserMapper.class); 
      System.out.println("Test insert start..."); 
      // 显示插入之前User信息 
      System.out.println("Before insert"); 
      this.printUsers(userMapper.getUser()); 
      // 执行插入 
      userMapper.insertUser(this.mockUser("FREU_INS_USER", "FREUD_INS_PASS", "FREUD_INS_NICK")); 
      // 提交事务 
      session.commit(); 
      // 显示插入之后User信息 
      System.out.println("\r\nAfter insert"); 
      this.printUsers(userMapper.getUser()); 
      System.out.println("Test insert finished..."); 
    } 
    catch (Exception e) 
    { 
      e.printStackTrace(); 
    } 
  } 
  /** 
   * 
   * 组装一个User对象 
   * 
   * @return 
   */ 
  public User mockUser(String username, String password, String nickname) 
  { 
    User user = new User(); 
    user.setId(50); 
    user.setUsername(username); 
    user.setPassword(password); 
    user.setNickname(nickname); 
    return user; 
  } 
  /** 
   * 
   * 打印用户信息到控制台 
   * 
   * @param users 
   */ 
  private void printUsers(final List<User> users) 
  { 
    int count = 0; 
    for (User user : users) 
    { 
      System.out.println(MessageFormat.format("==User[{0}]=================", ++count)); 
      System.out.println("User Id: " + user.getId()); 
      System.out.println("User UserName: " + user.getUsername()); 
      System.out.println("User Password: " + user.getPassword()); 
      System.out.println("User nickname: " + user.getNickname()); 
    } 
  } 
} 

总结

以上所述是小编给大家介绍的MyBatis创建存储过程的实例代码_动力节点Java学院整理,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# mybatis  # 创建存储过程  # mybatis存储过程  # Java Spring动态生成Mysql存储过程详解  # 详解java调用存储过程并封装成map  # Java调用Oracle存储过程详解  # Java实现调用MySQL存储过程详解  # 详解Java的JDBC API的存储过程与SQL转义语法的使用  # java编程调用存储过程中得到新增记录id号的实现方法  # Java调用MySQL存储过程并获得返回值的方法  # java调用mysql存储过程实例分析  # Java中调用SQL Server存储过程详解  # java调用oracle分页存储过程示例  # java调用Oracle存储过程的方法实例  # Java下使用Oracle存储过程(详解)  # Java存储过程调用CallableStatement的方法  # 存储过程  # 目录下  # 命名为  # 创建一个  # 小编  # 运行环境  # 在此  # 如何在  # 给大家  # 所需要  # 所述  # 第一部分  # 命令行  # 给我留言  # 第二部分  # 配置文件  # 感谢大家  # 本节  # 疑问请  # 有任何 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何在建站主机中优化服务器配置?  利用 Google AI 进行 YouTube 视频 SEO 描述优化  Windows Hello人脸识别突然无法使用  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置  小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像  详解jQuery中基本的动画方法  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?  如何用花生壳三步快速搭建专属网站?  在Oracle关闭情况下如何修改spfile的参数  Java解压缩zip - 解压缩多个文件或文件夹实例  Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置  Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程  Laravel如何自定义分页视图?(Pagination示例)  使用Dockerfile构建java web环境  香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  独立制作一个网站多少钱,建立网站需要花多少钱?  如何快速搭建二级域名独立网站?  php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】  如何在腾讯云服务器上快速搭建个人网站?  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  浅谈javascript alert和confirm的美化  Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程  微信小程序 五星评分(包括半颗星评分)实例代码  Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权  Laravel如何配置和使用缓存?(Redis代码示例)  linux写shell需要注意的问题(必看)  MySQL查询结果复制到新表的方法(更新、插入)  Win11怎么设置默认图片查看器_Windows11照片应用关联设置  javascript基于原型链的继承及call和apply函数用法分析  *服务器网站为何频现安全漏洞?  油猴 教程,油猴搜脚本为什么会网页无法显示?  Laravel的Blade指令怎么自定义_创建你自己的Laravel Blade Directives  文字头像制作网站推荐软件,醒图能自动配文字吗?  html如何与html链接_实现多个HTML页面互相链接【互相】  使用PHP下载CSS文件中的所有图片【几行代码即可实现】  教你用AI将一段旋律扩展成一首完整的曲子  宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法  Laravel项目怎么部署到Linux_Laravel Nginx配置详解  Laravel如何创建和注册中间件_Laravel中间件编写与应用流程  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  canvas 画布在主流浏览器中的尺寸限制详细介绍  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  JS碰撞运动实现方法详解  深圳网站制作平台,深圳市做网站好的公司有哪些?  android nfc常用标签读取总结  香港服务器如何优化才能显著提升网站加载速度?