IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 在 WSO2 ESB 5.0.0 中使用 MyBatis 框架 -> 正文阅读

[Java知识库]在 WSO2 ESB 5.0.0 中使用 MyBatis 框架

一、导包

1、在 WSO2 ESB 5.0.0 lib文件夹中导入 jar 包

在这里插入图片描述

2、在 Eclipse 项目中导入 jar 包

在这里插入图片描述

二、准备 Mybatis 的配置文件

SqlMapConfig.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>
    
    <settings>
        <!-- 打印查询语句 -->
        <setting name="logImpl" value="STDOUT_LOGGING" />
    </settings>
    
    <!-- 和Spring整合后environment配置都会被干掉 -->
    <environments default="development">
        <environment id="development">
            <!-- 使用jdbc事务管理,目前由mybatis来管理 -->
            <transactionManager type="JDBC" />
            <!-- 数据库连接池,目前由mybatis来管理 -->
            <dataSource type="POOLED"><!--有关于mysql数据库的各种信息-->
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/test" />
                <property name="username" value="root" />
                <property name="password" value="123456" />
            </dataSource>
        </environment>
    </environments>
    
    <mappers>
        <!--将操作配置文件TestMapper.xml系添加进mapper-->
        <mapper resource="mapper/TestMapper.xml" ></mapper>
    </mappers>
</configuration>

三、准备实体类

package entity;

import java.io.Serializable;

public class TestMode implements Serializable{
	
	private String name,address,sex,phone;
	private Integer id;
	
	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getAddress() {
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

	public String getPhone() {
		return phone;
	}

	public void setPhone(String phone) {
		this.phone = phone;
	}
	
	
}

四、准备实体对应的 mapper 映射 xml 文件

TestMapper.xml

<?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="TestMapper"> <!-- 注意,因为这边没有用到mapper接口,所以这里的namespace不需要是完全的类名 -->

    <!-- 通过id查询用户是否存在 -->
    <select id="countById" parameterType="java.lang.String" resultType="int">
        select count(1) as num from mode where id = #{id}
    </select>
    <!--通过name查找一个list的用户,模糊匹配,返回类型使用Map-->
    <select id="findUserByName" parameterType="java.lang.String" resultType="Map">
        select * from mode where name like '%${value}%'
    </select>
        
</mapper>

五、准备一个获取 sqlsession 的工具类

package util;

import java.io.IOException;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class MybatisSessionUtil {
	static SqlSessionFactory sqlSessionFactory = null;
	static {
		SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
		try {
			sqlSessionFactory = sqlSessionFactoryBuilder.build(Resources.getResourceAsStream("SqlMapConfig.xml"));
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public static SqlSession getSession() {
		return sqlSessionFactory.openSession();
	}
}

六、准备 dao

package dao;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.session.SqlSession;

import util.MybatisSessionUtil;

public class TestDao {
	
	private SqlSession session = MybatisSessionUtil.getSession();
	
	public int countById(String id){
		int rint = session.selectOne("TestMapper.countById", id); // 第一个参数是mapper.xml里的namespace+MappedStatement对应的id
        session.commit();// 不要忘记提交
		return rint;
	}
	
	public List<Map<String,Object>> findUserByName(String name){
		List<Map<String,Object>> list = session.selectList("TestMapper.findUserByName", name);
		session.commit();
		return list;
	}
}

七、Mediator 类

package com;

import java.util.List;
import java.util.Map;

import org.apache.synapse.MessageContext; 
import org.apache.synapse.mediators.AbstractMediator;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;

import dao.TestDao;

public class TestMyModel extends AbstractMediator { 

	private String property_name;
	
	public String getProperty_name() {
		return property_name;
	}

	public void setProperty_name(String property_name) {
		this.property_name = property_name;
	}
	
	public boolean mediate(MessageContext context) { 
		// TODO Implement your mediation logic here 
		
		//String xmldata = (String)context.getProperty(property_name);
		
		//System.out.println("xmldata: " + xmldata);
		JSONArray js = new JSONArray();
		
		try{
			TestDao tdao = new TestDao();
			List<Map<String,Object>> list = tdao.findUserByName("a");
			int count = tdao.countById("441012198009245079");
			System.out.println("count: " + count);
			
			System.out.println("id\tname\taddress\tsex\tphone\t");
			for(int i = 0; i < list.size(); i++){
				Map<String,Object> tm = list.get(i);
				System.out.println(tm.get("id") + "\t"
						+ tm.get("name") + "\t"
						+ tm.get("address") + "\t"
						+ tm.get("sex") + "\t"
						+ tm.get("phone") + "\t");
			}
			String jsonstr = JSON.toJSONString(list);
			js = JSONArray.parseArray(jsonstr);
			log.info("jsonstr: " + jsonstr);
		}catch(Exception e){
			log.error("Mybatis Exception!", e);
		}
		
		String resp = "<DATA>\n" + 
				"        <DATAINFOS>\n" + 
				"            <PUUID>11111</PUUID>\n" + 
				"            <SYNCODE>ZWY</SYNCODE>\n" +
				"        </DATAINFOS>\n" + 
				"    </DATA>";
		context.setProperty("resp", resp);
		
		return true;
	}
	
}

八、数据库表

在这里插入图片描述

九、完整目录结构

在这里插入图片描述

十、Postman 测试

Postman 请求
在这里插入图片描述

控制台输出
在这里插入图片描述

详细输出日志:

Logging initialized using 'class org.apache.ibatis.logging.stdout.StdOutImpl' adapter.
PooledDataSource forcefully closed/removed all connections.
PooledDataSource forcefully closed/removed all connections.
PooledDataSource forcefully closed/removed all connections.
PooledDataSource forcefully closed/removed all connections.
Opening JDBC Connection
Created connection 728566657.
Setting autocommit to false on JDBC Connection [com.mysql.jdbc.JDBC4Connection@2b6d0b81]
==>  Preparing: select * from mode where name like '%a%'
==> Parameters: 
<==    Columns: id, name, address, sex, phone, marriage, mobilephone
<==        Row: 441011198009235056, a, , M, 33, Y, 18533446708
<==        Row: 441012198009245079, a, , M, 18533446731, N, 18533446731
<==        Row: 441013198009255102, a, , F, 8233936, Y, 
<==        Row: 441014198009265125, a, , M, , N, 18533446777
<==        Row: 441015198009285148, a, , F, , Y, 18533446800
<==      Total: 5
==>  Preparing: select count(1) as num from mode where id = ?
==> Parameters: 441012198009245079(String)
<==    Columns: num
<==        Row: 1
<==      Total: 1
count: 1
id	name	address	sex	phone	
441011198009235056	a		M	33	
441012198009245079	a		M	18533446731	
441013198009255102	a		F	8233936	
441014198009265125	a		M		
441015198009285148	a		F		
[2021-08-04 11:48:24,396]  INFO - TestMyModel jsonstr: [{"address":"","phone":"33","marriage":"Y","sex":"M","mobilephone":"18533446708","name":"a","id":"441011198009235056"},{"address":"","phone":"18533446731","marriage":"N","sex":"M","mobilephone":"18533446731","name":"a","id":"441012198009245079"},{"address":"","phone":"8233936","marriage":"Y","sex":"F","mobilephone":"","name":"a","id":"441013198009255102"},{"address":"","phone":"","marriage":"N","sex":"M","mobilephone":"18533446777","name":"a","id":"441014198009265125"},{"address":"","phone":"","marriage":"Y","sex":"F","mobilephone":"18533446800","name":"a","id":"441015198009285148"}]

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-08-16 11:36:57  更:2021-08-16 11:38:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 21:41:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码