栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

MyBatis访问Db2小例子

MyBatis访问Db2小例子

环境 Db2
$ db2level
DB21085I  This instance or install (instance name, where applicable:
"db2inst1") uses "64" bits and DB2 code release "SQL11050" with level
identifier "0601010F".
Informational tokens are "DB2 v11.5.0.0", "s1906061700", "DYN1906061700AMD64",
and Fix Pack "0".
Product is installed at "/opt/ibm/db2/V11.5".
Db2 JCC driver

db2jcc_license_cu.jardb2jcc4.jardb2java.zip //没用db2jcc.jar //不仅没用,而且会导致出错

注意,不能用 db2jcc.jar ,而要用 db2jcc4.jar 。当二者同时存在时,貌似就会用前者,从而报错: Method com/ibm/db2/jcc/am/hp.isClosed()Z is absstract

网上搜了一下,说是driver版本问题。

Anyway,只用 db2jcc4.jar 和 db2jcc_license_cu.jar 就OK,同时不能有 db2jcc.jar 。

MyBatis

登录MyBatis官网(http://www.mybatis.org),下载最新的release。

注:该网址会自动重定向到 https://blog.mybatis.org 。

我下载的是mybatis-3.5.9.zip。

解压后,得到mybatis-3.5.9.jar,以及lib目录下一堆jar包。

Database

SAMPLE

$ db2 connect to sample

   Database Connection Information

 Database server        = DB2/LINUXX8664 11.5.0.0
 SQL authorization ID   = DB2INST1
 Local database alias   = SAMPLE
Table

T6

$ db2 describe table t6

                                Data type                     Column
Column name                     schema    Data type name      Length     Scale Nulls
------------------------------- --------- ------------------- ---------- ----- ------
C1                              SYSIBM    INTEGER                      4     0 Yes
C2                              SYSIBM    VARCHAR                      8     0 Yes

  2 record(s) selected.
代码

在Eclipse里新建一个Java project(本例中project name是 TestProject0209 ),在project上点击右键,属性,Java Build Path -> Libraries -> Add external JARs…,把Mybatis和jcc driver的jar包文件加进来,如下:

注:为了方便,我在project的根目录下创建了一个 lib 目录,并把3个jar文件都复制到这里了。

注:解压 mybatis-3.5.9.zip 后,在lib子目录下还有一堆jar文件,比如log4j-1.2.17.jar ,本例貌似用不上,所以都没加到project里。

在 src 目录下创建3个package:

pojodaoservice

在 pojo 下创建类 MyObject ,这是一个非常简单的POJO,对应DB里的table T6 :

c1 成员变量对应table的 c1 列c2 成员变量对应table的 c2 列

package pojo;

public class MyObject {
	private int c1;
	private String c2;

	public int getC1() {
		return c1;
	}

	public void setC1(int c1) {
		this.c1 = c1;
	}

	public String getC2() {
		return c2;
	}

	public void setC2(String c2) {
		this.c2 = c2;
	}
}

接下来我们来创建mapper,在 dao 下,创建 Test0209Mapper.java 和 Test0209Mapper.xml 文件。

Test0209Mapper.java

package dao;

import java.util.List;

import pojo.MyObject;

public interface Test0209Mapper {
	int insert(MyObject obj);
	
	List read();
}

Test0209Mapper.xml






	
		insert into t6 (c1, c2) values (#{c1}, #{c2})
	
	
	

在 src 目录下新建 mybatis-config.xml 文件,内容如下:






	
    
      
      
        
        
        
        
        
      
    
  

    
        
    


注:

    注释的driver属性,是MySQL的配置,若要改用MySQL,则这里需要相应改一下所有mapper都定义在最下面的mapper处,本例中只使用了一个mapper dao.Test0209Mapper ,这是mapper类的全路径

最后,我们在 service 下创建 TestMybatis 类,来测试一下mapper:

package service;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

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 pojo.MyObject;
import dao.Test0209Mapper;

public class TestMybatis {

	public static void main(String[] args) throws IOException {
		String resource = "mybatis-config.xml";
		
		InputStream inputStream = Resources.getResourceAsStream(resource);
		
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		
		SqlSession sqlSession = sqlSessionFactory.openSession(true);
		
		try {
			Test0209Mapper mapper = sqlSession.getMapper(Test0209Mapper.class);
			
			System.out.println("Test 1: query t6");
			List list = mapper.read();
			list.forEach(e -> System.out.println("c1: " + e.getC1() + ", c2: " + e.getC2()));

			System.out.println("Test 2: insert into t6");
			MyObject obj = new MyObject();
			obj.setC1(123);
			obj.setC2("abc");
			mapper.insert(obj);
			
			System.out.println("Test 3: query t6 again");
			list = mapper.read();
			list.forEach(e -> System.out.println("c1: " + e.getC1() + ", c2: " + e.getC2()));
		} finally {
			sqlSession.close();
		}
	}
}

运行程序,结果如下:

Test 1: query t6
c1: 111, c2: xxx
Test 2: insert into t6
Test 3: query t6 again
c1: 111, c2: xxx
c1: 123, c2: abc
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/736276.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号