在 WSO2 ESB 5.0.0 中使用 MyBatis 框架

  • 一、导包
    • 1、在 WSO2 ESB 5.0.0 lib文件夹中导入 jar 包
    • 2、在 Eclipse 项目中导入 jar 包
  • 二、准备 Mybatis 的配置文件
  • 三、准备实体类
  • 四、准备实体对应的 mapper 映射 xml 文件
  • 五、准备一个获取 sqlsession 的工具类
  • 六、准备 dao
  • 七、Mediator 类
  • 八、数据库表
  • 九、完整目录结构
  • 十、Postman 测试

一、导包

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

2、在 Eclipse 项目中导入 jar 包

二、准备 Mybatis 的配置文件

SqlMapConfig.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//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 mapperPUBLIC "-//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对应的idsession.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"}]

在 WSO2 ESB 5.0.0 中使用 MyBatis 框架相关推荐

  1. Springboot中使用Mybatis框架对数据库进行联表查询,踩坑填坑

    因为mybatis使用的基本是原生sql语句 所以首先从数据库开始说 以mysql数据库为例,对表的连接查询分为四种 内连接,外连接,交叉连接,和联合连接 内连接使用比较运算符根据每个表共有的列的值匹 ...

  2. WSO2 ESB(4)

    WSO2的企业服务总线(ESB)的用户指南 用户指南介绍了如何配置WSO2 ESB使用基于Web的管理控制台. WSO2的管理控制台已经过测试的Mozilla Firefox2.0,3.0和Inter ...

  3. mybatis框架中的queryWrapper的or查询,联想到MySQL中and 和or的关系

    统计的原生SQL应该是这样的: SELECTCOUNT( 1 ) FROMtable_name WHERE( id = '679135XXXXXXX1212' AND ( STATUS = 1 OR ...

  4. 在安卓系统中集成YAHFA框架

    本次尝试在Android-9.0.0_r10中集成Hook框架 - 创建hook服务进行hook配置的管理 创建接口文件 /frameworks/base/core/java/android/app/ ...

  5. Microsoft BizTalk ESB Toolkit 2.0

    [>>> 更多<BizTalk开发系列>文章 ] 微软于6月8号发布了BizTalk Server 2009企业集成平台的最后一个功能组件:ESB Toolkit 2.0 ...

  6. ASP.NET 2.0 AJAX中Webservice调用方法示例

    ASP.NET 2.0 AJAX中能够在客户端js中很方便地调用服务器Webservice,以下为一些调用的示例.笔者安装的ASP.NET 2.0 AJAX 版本为AJAX November CTP. ...

  7. Structured Streaming从Kafka 0.8中读取数据的问题

    众所周知,Structured Streaming默认支持Kafka 0.10,没有提供针对Kafka 0.8的Connector,但这对高手来说不是事儿,于是有个Hortonworks的邵大牛(前段 ...

  8. Swift2.0语言教程之Swift2.0语言中的标准函数

    Swift2.0语言教程之Swift2.0语言中的标准函数 Swift2.0中的标准函数 函数除了可以根据参数列表的有无分为无参函数和有参函数,还可以从定义角度分为用户自定义函数和标准函数两种.以上的 ...

  9. NET4.0.X中的状态机工作流

    NET4.0.X中的状态机工作流 今天整理文档时发现了这篇忘记发布的文章,是关于NET 4.0.1的, NET 4.0.2都已发布一段时间了 以下NET版本提供WF4.0的状态机工作流在VS2010中 ...

  10. 回复——在我测试的软件说明中,说安装好jboss后,在浏览器的地址栏中输入127.0.0.1:88这……...

    回复--在我测试的软件说明中,说安装好jboss后,在浏览器的地址栏中输入127.0.0.1:88这个地址打开我的网页,请教版主127.0.0.1:88中的:88是什么意思?我怎么捆绑域名?谢谢! 首 ...

最新文章

  1. python线程的注意点(线程之间执行是无序的、主线程会等待所有的子线程执行结束再结束(守护主线程)、线程之间共享全局变量、线程之间共享全局变量数据出现错误问题(线程等待(join)、互斥锁))
  2. resultMap和resultType的区别
  3. su: cannot set user id: Resource temporarily unavailable
  4. iOS获取自1970年毫秒数使用OC和swift两种语法,返回字符串
  5. 修复 XE7 , XE8 Frame 内 PopupMenu 快捷键失效问题
  6. 玩Docker只要浏览器就够了,PWD是个神奇的网站
  7. Flutter Exception降到万分之几的秘密 1
  8. go 初学者 错误_初学者的颠簸之旅,发现了一些不错的错误
  9. 【API进阶之路】研发需求突增3倍,测试团队集体闹离职
  10. 【Java】对象容器——集合
  11. scala运算符_Scala运算符–算术,关系,逻辑,按位,赋值
  12. L298N模块驱动电机(实现pwm调速)
  13. 如何免费下载付费音乐歌曲,6个网站+8个APP
  14. mysql自定义序号_mysql序列_mysql序列号生成器 mysql自定义函数生成序列号的例子...
  15. 服务器系统更新后找不到硬盘,重装win10系统找不到硬盘完美解决方法
  16. 十大管理之项目干系人管理知识点
  17. 独孤思维:哇,看到三点式又激动了
  18. 高手UI设计师干货总结分享品牌LOGO设计的过程要求及方法
  19. JCA - 核心类和接口 - Cipher类
  20. Phi-divergence

热门文章

  1. iphone11屏比例_iphone11屏幕尺寸 而不是直接的长或者宽所以是算
  2. Java调用soap协议的webservice
  3. 计划超越苹果!诺基亚在印度推出笔记本电脑
  4. 什么是cs架构和bs架构
  5. HD AUDIO再2003安装的问题
  6. micropython stm32源码修改_网上买了ps2手柄,按stm32 代码 改写了个micropython
  7. Homekit直连的灯带控制套装
  8. sql2000安装sp4补丁包教程_sql2000sp4
  9. html css 美化模板,通用css样式,全局css样式,css样式模板,
  10. 河南高二计算机会考excel,(完整版)高中信息技术学业水平考试Word、Excel操作题考点总结...