在 WSO2 ESB 5.0.0 中使用 MyBatis 框架
在 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 框架相关推荐
- Springboot中使用Mybatis框架对数据库进行联表查询,踩坑填坑
因为mybatis使用的基本是原生sql语句 所以首先从数据库开始说 以mysql数据库为例,对表的连接查询分为四种 内连接,外连接,交叉连接,和联合连接 内连接使用比较运算符根据每个表共有的列的值匹 ...
- WSO2 ESB(4)
WSO2的企业服务总线(ESB)的用户指南 用户指南介绍了如何配置WSO2 ESB使用基于Web的管理控制台. WSO2的管理控制台已经过测试的Mozilla Firefox2.0,3.0和Inter ...
- mybatis框架中的queryWrapper的or查询,联想到MySQL中and 和or的关系
统计的原生SQL应该是这样的: SELECTCOUNT( 1 ) FROMtable_name WHERE( id = '679135XXXXXXX1212' AND ( STATUS = 1 OR ...
- 在安卓系统中集成YAHFA框架
本次尝试在Android-9.0.0_r10中集成Hook框架 - 创建hook服务进行hook配置的管理 创建接口文件 /frameworks/base/core/java/android/app/ ...
- Microsoft BizTalk ESB Toolkit 2.0
[>>> 更多<BizTalk开发系列>文章 ] 微软于6月8号发布了BizTalk Server 2009企业集成平台的最后一个功能组件:ESB Toolkit 2.0 ...
- ASP.NET 2.0 AJAX中Webservice调用方法示例
ASP.NET 2.0 AJAX中能够在客户端js中很方便地调用服务器Webservice,以下为一些调用的示例.笔者安装的ASP.NET 2.0 AJAX 版本为AJAX November CTP. ...
- Structured Streaming从Kafka 0.8中读取数据的问题
众所周知,Structured Streaming默认支持Kafka 0.10,没有提供针对Kafka 0.8的Connector,但这对高手来说不是事儿,于是有个Hortonworks的邵大牛(前段 ...
- Swift2.0语言教程之Swift2.0语言中的标准函数
Swift2.0语言教程之Swift2.0语言中的标准函数 Swift2.0中的标准函数 函数除了可以根据参数列表的有无分为无参函数和有参函数,还可以从定义角度分为用户自定义函数和标准函数两种.以上的 ...
- NET4.0.X中的状态机工作流
NET4.0.X中的状态机工作流 今天整理文档时发现了这篇忘记发布的文章,是关于NET 4.0.1的, NET 4.0.2都已发布一段时间了 以下NET版本提供WF4.0的状态机工作流在VS2010中 ...
- 回复——在我测试的软件说明中,说安装好jboss后,在浏览器的地址栏中输入127.0.0.1:88这……...
回复--在我测试的软件说明中,说安装好jboss后,在浏览器的地址栏中输入127.0.0.1:88这个地址打开我的网页,请教版主127.0.0.1:88中的:88是什么意思?我怎么捆绑域名?谢谢! 首 ...
最新文章
- python线程的注意点(线程之间执行是无序的、主线程会等待所有的子线程执行结束再结束(守护主线程)、线程之间共享全局变量、线程之间共享全局变量数据出现错误问题(线程等待(join)、互斥锁))
- resultMap和resultType的区别
- su: cannot set user id: Resource temporarily unavailable
- iOS获取自1970年毫秒数使用OC和swift两种语法,返回字符串
- 修复 XE7 , XE8 Frame 内 PopupMenu 快捷键失效问题
- 玩Docker只要浏览器就够了,PWD是个神奇的网站
- Flutter Exception降到万分之几的秘密 1
- go 初学者 错误_初学者的颠簸之旅,发现了一些不错的错误
- 【API进阶之路】研发需求突增3倍,测试团队集体闹离职
- 【Java】对象容器——集合
- scala运算符_Scala运算符–算术,关系,逻辑,按位,赋值
- L298N模块驱动电机(实现pwm调速)
- 如何免费下载付费音乐歌曲,6个网站+8个APP
- mysql自定义序号_mysql序列_mysql序列号生成器 mysql自定义函数生成序列号的例子...
- 服务器系统更新后找不到硬盘,重装win10系统找不到硬盘完美解决方法
- 十大管理之项目干系人管理知识点
- 独孤思维:哇,看到三点式又激动了
- 高手UI设计师干货总结分享品牌LOGO设计的过程要求及方法
- JCA - 核心类和接口 - Cipher类
- Phi-divergence
热门文章
- iphone11屏比例_iphone11屏幕尺寸 而不是直接的长或者宽所以是算
- Java调用soap协议的webservice
- 计划超越苹果!诺基亚在印度推出笔记本电脑
- 什么是cs架构和bs架构
- HD AUDIO再2003安装的问题
- micropython stm32源码修改_网上买了ps2手柄,按stm32 代码 改写了个micropython
- Homekit直连的灯带控制套装
- sql2000安装sp4补丁包教程_sql2000sp4
- html css 美化模板,通用css样式,全局css样式,css样式模板,
- 河南高二计算机会考excel,(完整版)高中信息技术学业水平考试Word、Excel操作题考点总结...