solarzoom database Solon详解(11)- Mybatis 与 Solon 相亲相爱

solarzoom database Solon详解(11)- Mybatis 与 Solon 相亲相爱

Solon详解系列文章:

Solon详解(一)- 快速入门

Solon详解(二)- Solon的核心

Solon详解(三)- Solon的web开发

Solon详解(四)- Solon的事务传播机制

Solon详解(五)- Solon扩展机制之Solon

Solon详解(六)- Solon的校验扩展框架使用与扩展

Solon详解(七)- Solon Ioc 的注解对比及

Solon详解(八)- Solon的缓存框架使用和定制

Solon详解(九)- 渲染控制之定制统一的接口输出

Solon详解(十)- 怎么用 Solon 开发基于 jsp tld 的项目?

相关的源码

故事开讲

是个资深的前辈,多年来它基本上只和 的家族企业合作。今天他尝试和年轻选手Solon组团做业务;Solon 是Java世界里一个新的极易上手的Web框架(哎,如同十八线的演员solarzoom database,没人知道的啦。。。但业务活也是一流的)

本次组队需要完成如下挑战:

简单的配置多数据源支持(分区模式 和 注解模式)事务支持支持分页组件(这个,其实破坏了SQL的透明性……但业内很流行)

…

一、环境说明环境版本

IDEA

2020.2

Maven

4.0

Solon

1.1

-solon-

1.1

–solon-

1.1

5.3.3

JDK

1.8

二、现在代码走起

solarzoom database

新建个空白的Maven项目:ourcesolarzoom database,下面开始操作:


org.noear
solon-parent
1.1



org.noear
solon-web
pom

org.noear
mybatis-solon-plugin

org.noear
mybatis-sqlhelper-solon-plugin


Solon 没有特定的数据源配置,所以随便自己起个头就可以;配置项与使用的数据源匹配即可。本例用的是:

#数据库1的配置
test.db1:
schema: rock
jdbcUrl: jdbc:mysql://localdb:3306/rock?useUnicode=true&characterEncoding=utf8&autoReconnect=true&rewriteBatchedStatements=true
driverClassName: com.mysql.cj.jdbc.Driver
username: demo
password: UL0hHlg0Ybq60xyb #数据库2的配置(其实我用的是同一个库)
test.db2:
schema: rock
jdbcUrl: jdbc:mysql://localdb:3306/rock?useUnicode=true&characterEncoding=utf8&autoReconnect=true&rewriteBatchedStatements=true
driverClassName: com.mysql.cj.jdbc.Driver
username: demo
password: UL0hHlg0Ybq60xyb #默认(与数据源名一一对应)
mybatis.db1:
typeAliases: #支持包名 或 类名(.class 结尾)
- "webapp.model"
mappers: #支持包名 或 类名(.class 结尾)或 xml(.xml结尾)
- "webapp.dso.mapper.AppxMapper.class" #再定义个新配置(为了体现多数据源性 - 应该简单吧?)
mybatis.db2:
typeAliases:
- "webapp.model"
mappers:
- "webapp.dso.mapper.Appx2Mapper.class" #分页组件的配置
sqlhelper:
mybatis:
instrumentor:
dialect: "mysql"
cache-instrumented-sql: true
subquery-paging-start-flag: "[PAGING_StART]"
subquery-paging-end-flag: "[PAGING_END]"
pagination:
count: true
default-page-size: 10
use-last-page-if-page-no-out: true
count-suffix: _COUNT

在Solon的适配下,只需要完成数据源的配置就完事了。其它的,根据配置已自动扫描或处理。

@XConfiguration
public class Config {
//
//数据源名字与mybatis的配置名要对应上
//
@XBean(value = "db1", typed = true)
public DataSource db1(@XInject("${test.db1}") HikariDataSource ds) {
return ds;
} @XBean("db2")
public DataSource db2(@XInject("${test.db2}") HikariDataSource ds) {
return ds;
}
}

关于多数据源的分包模式示例:

/**
* 分包模式,一开始就被会话工厂mapperScan()并关联好了
* */
@XMapping("/demo/")
@XController
public class DemoController {
@XInject
AppxMapper appxMapper; //已被db1 mapperScan 了(内部自动处理),可直接注入 @XInject
Appx2Mapper appxMapper2; //已被db2 mapperScan 了(内部自动处理),可直接注入 @XMapping("test")
public AppxModel test(){
return appxMapper.appx_get();
} @XMapping("test2")
public AppxModel test2(){
return appxMapper2.appx_get2(48);
} }

关于多数据源的注解模式示例:

/**
* 注解模式,通过@Db注入,并指定具体的数据源
*
* @Db 可注入 Mapper, SqlSession, SqlSessionFactory 类型的字段
* */
@XMapping("/demo2/")
@XController
public class Demo2Controller {
@Db("db1")
AppxMapper appxMapper; //使用@Db 指定会话工厂并注入 @Db("db2")
Appx2Mapper appxMapper2; @XMapping("test")
public AppxModel test(){
return appxMapper.appx_get();
} @XMapping("test2")
public AppxModel test2(){
return appxMapper2.appx_get2(48);
} }

关于事务的示例:(分布式环境下,尽量用消息代理JDBC事务)

/**
* 事务演示
* */
@XMapping("/tran/")
@XController
public class TranController {
@XInject
AppxMapper appxMapper; /**
* mybatis-solon-plugin 的事务,由 @XTran 注解发起(更详细的说明,参考其它文章)
* */
@XTran
@XMapping("test")
public Object test() throws Throwable{
appxMapper.appx_get();
}
}

关于多数据源事务的示例,需要用到层:(分布式环境下,尽量用消息代理JDBC事务)

/**
* 多数据源事务演示
* */
@XMapping("/tran2/")
@XController
public class Tran2Controller {
@XInject
AppService appService; //这是定义的Service类,里面的函数注解了@XTran("db1") @XInject
App2Service app2Service; //同上 /**
* 这是一个多数据源的事务组
* */
@XTran
@XMapping("test")
public void test() throws Throwable {
//内部走的是db2的事务
app2Service.add(); //内部走的是db1的事务
appService.add();
}
}

关于分页的示例:(本案用的是)

@XMapping("/page/")
@XController
public class PageController {
@XInject
AppxMapper appxMapper; @XMapping("test")
public Object test() throws Throwable{
SqlPaginations.preparePagination(2,2); return appxMapper.appx_get_page();
}
}

故事结尾

加了事务注解后,更加的简洁优雅了。。。所有组团挑战全部完成,OY…

Solon详解(11)- 与 Solon 相亲相爱的更多相关文章 Solon详解(二)- Solon的核心

Solon详解系列文章: Solon详解(一)- 快速入门 Solon详解(二)- Solon的核心 Solon详解(三)- Solon的web开发 Solon详解(四)- Solon的事务传播机制 …

Solon详解(三)- Solon的web开发

Solon详解系列文章: Solon详解(一)- 快速入门 Solon详解(二)- Solon的核心 Solon详解(三)- Solon的web开发 Solon详解(四)- Solon的事务传播机制 …

Solon详解(七)- Solon Ioc 的注解对比及

Solon详解系列文章: Solon详解(一)- 快速入门 Solon详解(二)- Solon的核心 Solon详解(三)- Solon的web开发 Solon详解(四)- Solon的事务传播机制 …

mini – Solon详解(二)- Solon的核心

min -Solon 详解系列文章: mini – Solon详解(一)- 快速入门 mini – Solon详解(二)- Solon …

mini – Solon详解(三)- Solon的web开发

min -Solon 详解系列文章: mini – Solon详解(一)- 快速入门 mini – Solon详解(二)- Solon …

mini – Solon详解(七)- Solon Ioc 的注解对比及

solarzoom database

min -Solon 详解系列文章: mini – Solon详解(一)- 快速入门 mini – Solon详解(二)- Solon …

Solon详解(六)- Solon的校验扩展框架使用与扩展

Solon详解系列文章: Solon详解(一)- 快速入门 Solon详解(二)- Solon的核心 Solon详解(三)- Solon的web开发 Solon详解(四)- Solon的事务传播机制 …

Solon详解(八)- Solon的缓存框架使用和定制

Solon详解系列文章: Solon详解(一)- 快速入门 Solon详解(二)- Solon的核心 Solon详解(三)- Solon的web开发 Solon详解(四)- Solon的事务传播机制 …

mini – Solon详解(四)- Solon的事务传播机制

min -Solon 详解系列文章: mini – Solon详解(一)- 快速入门 mini – Solon详解(二)- Solon …

mini – Solon详解(五)- Solon扩展机制之Solon

min -Solon 详解系列文章: mini – Solon详解(一)- 快速入门 mini – Solon详解(二)- Solon …

随机推荐 Pets(匈牙利算法)

Are you in pets? There is a very pets shop in the of the ACM city. There ar …

深入了解Kafka【四】消费者的管理

1. Topic 通过提交来记录当前消费的最后位置,以便于消费者发生崩溃或者有新的消费者加入消费者组,而引发的分区再均衡操作,每个消费者可能会分到不同的分区.我 …

出现 or token提示需要token的处理方法

很多朋友不知道下面的情况怎么处理,我给大家介绍一个方法! 出现这种情况很简单用下面这个地址就能进去了 (注意是你自己的 不是我这个)

刷题-40组合总和2

题目 给定一个数组  和一个目标数  ,找出  中所有可以使数字和为  的组合.  中的每个数字在每个组合中只能使用 …

服务器搭建远程深度学习环境

服务器搭建远程深度学习环境 本文大部分内容参考知乎文章 +快速搭建机器学习开发环境 搭建过程中出现ssh连接问题可以查看最后的注意事项 …

5 分钟带你掌握 分析

摘要:是一个名为GNU-Make软件所需要的脚本文件,该脚本文件可以指导Make软件控制arm-gcc等工具链去编译工程文件最终得到可执行文件,几乎所有的Linux发行版都内置了GNU …

中使用切面的每次传的参数,进行解析,验签solarzoom databasesolarzoom database Solon详解(11)- Mybatis 与 Solon 相亲相爱,并返回解码后的参数

目的,在每次请求的时候,对每次传的参数,进行解析,验签,并返回解码后的参数, 以json传递: 例子背景: IOT平台提供对外可访问的接口, 需要对所有参数的传递做到 不泄露.认证的目的:所以需要在每 …

报错客户端发现响应内容类型为“/json;=UTF-8”solarzoom database Solon详解(11)- Mybatis 与 Solon 相亲相爱,但应为“text/xml”。

控制台对接正常,同样的方法在Web项目上报错: 客户端发现响应内容类型为“/json;=UTF-8”,但应为“text/xml”.请求失败,错误 …

如何成为一位优秀的

嗨,大家好,我是叶子 背景介绍 目标:为了能更好的适应快速变化的需求和不确定的未来. 部门包含岗位:部门负责人.项目经理.产品经理.开发团队(开发人员.测试人员) 那么这种情况下,我们想转型Scrum …

桌面应用-构建程序框架

看到应用很多人都会说应用太丑了,确实比起Qt.MFC.这些界面确实丑了一点,但也不是没有可以美化的空间. 跟网页一样,单纯HTML不加任何CSS的时候也 …

公告:
1. 本站所有资源来源于用户上传和网络,如有侵权请联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长处理!
6. 本站不售卖代码,资源标价只是站长收集整理的辛苦费!如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
7. 站长QQ号码 2205675299

资源库 - 资源分享下载网 » solarzoom database Solon详解(11)- Mybatis 与 Solon 相亲相爱

常见问题FAQ

关于资源售价和售后服务的说明?
本站所有资源的标价均为本站收集资源的辛苦费,不代表资源本身的价值。软件是高智慧高价值的商品,不可能是白菜价。本站资源标价只是赞助费用,收取的赞助费仅用来维持本站的日常运营!毕竟收集整理资料需要投入云计算资源和站长大量的精力。
代码有没有售后服务和技术支持?
由于代码的运行具有不可预见性,本站不保证代码完整可运行,不提供技术支持和售后服务。 本站原创代码都是站长自己开发的,可以有偿提供技术支持服务。 网站里标明【亲测】的代码都是站长亲测过的,其他的代码由于精力有限,没有一一测试,不能保证代码就一定能够使用,更没有技术支持服务,下载前请自行斟酌。
有没有搭建服务?
由于搭建服务比较费时费力,所以本站除了原创代码外均不提供搭建服务。本站分享代码纯属兴趣爱好,不以盈利为目的,请勿咨询有没有搭建服务,谢谢理解。
链接地址失效了怎么办?
请带上资源链接地址联系客服,工作时间内我们看到后将第一时间回复。
关于解压密码
本站资源一般都没有加密,如果发现需要解压密码的,那么就输入 hao.35dc.com 试试。

发表评论

资源库,由老程序员细心甄别、精心筛选,只为提供优质的源码资源

关于我们 联系我们