如何利用MyBatis创建一个存储过程

如何利用MyBatis创建一个存储过程?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都做网站、成都网站建设、云州网络推广、微信平台小程序开发、云州网络营销、云州企业策划、云州品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联为所有大学生创业者提供云州建站搭建服务,24小时服务热线:028-86922220,官方网址:www.cdcxhl.com

一. 在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:
 
     
      org.mybatis 
      mybatis 
      3.2.7 
     
     
      junit 
      junit 
      4.9 
      test 
     
     
      org.apache.derby 
      derby 
      10.10.2.0 
     
     
      org.apache.derby 
      derbyclient 
      10.10.2.0 
     
   

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

test-mybatis-configuration.xml
<?xml version="1.0" encoding="UTF-8" ?>  
 
 
   
     
     
   
   
     
       
       
         
         
       
     
   
   
     
   
  

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" ?>  
 
  
   
      
   
   
    CALL FREUD.INSERT_USER(#{id},#{username},#{password},#{nickname}) 
   
  

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

package com.bjpowernode.practice; 
import java.util.List; 
public interface UserMapper 
{ 
  public List 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 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创建一个存储过程
分享地址:http://scyanting.com/article/jeoppj.html