不妨试试更快更小更灵活Java开发框架Solon( 二 )


不妨试试更快更小更灵活Java开发框架Solon

文章插图
添加mybatis-plus和mysql相关依赖如下:
<dependency><groupId>org.noear</groupId><artifactId>mybatis-plus-extension-solon-plugin</artifactId></dependency><dependency><groupId>com.zaxxer</groupId><artifactId>HikariCP</artifactId><version>4.0.3</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.18</version></dependency>app.yml文件增加数据源和mybatis-plus的配置
test.db1:schema: rockjdbcUrl: jdbc:mysql://192.168.40.100:3308/test?useUnicode=true&characterEncoding=utf8&autoReconnect=true&rewriteBatchedStatements=truedriverClassName: com.mysql.cj.jdbc.Driverusername: rootpassword: 123456##默认mybatis.db1:typeAliases:#支持包名 或 类名(.class 结尾)- "demo4031.model"mappers:#支持包名 或 类名(.class 结尾)或 xml(.xml结尾 或 *.xml 结尾)- "demo4031.dso.mapper"#- "demo4031/dso/*.xml"configuration:cacheEnabled: falsemapUnderscoreToCamelCase: truelogImpl: org.apache.ibatis.logging.nologging.NoLoggingImplglobalConfig:banner: falsemetaObjectHandler: "demo4031.dso.MetaObjectHandlerImpl"dbConfig:logicDeleteField: "deleted"logicDeleteValue: "2"mapper接口和mapper.xml文件与Spring整合Mybatis基本相同
@Mapperpublic interface AppxMapper {AppxModel appx_get();Page<AppxModel> appx_get_page(Page<AppxModel> page);AppxModel appx_get2(int app_id);void appx_add();Integer appx_add2(int v1);@Select("SELECT * FROM INFORMATION_SCHEMA.TABLES")List<DbTable> listTables();}再添加业务的Service和实现类,最后添加PlusController控制器实现
@Mapping("/plus/")@Controllerpublic class PlusController {@InjectAppServicePlus appServicePlus;@Mapping("test")public AppxModel test() {return appServicePlus.getById(2);}}添加mybatis-plus分页的PageController控制器实现
@Mapping("/page/")@Controllerpublic class PageController {@DbAppxMapper appxMapper;@Mapping("test")public Object test() throws Throwable {Page<AppxModel> page = new Page<>(2, 2);return appxMapper.appx_get_page(page);}}启动程序后日志输出如下
不妨试试更快更小更灵活Java开发框架Solon

文章插图
访问http://localhost:8080/plus/test,返回正确的结果
不妨试试更快更小更灵活Java开发框架Solon

文章插图
访问http://localhost:8080/page/test ,返回正确的分页结果
不妨试试更快更小更灵活Java开发框架Solon

文章插图
Solon WebSocket示例引入依赖
<dependency><groupId>org.noear</groupId><artifactId>nami</artifactId></dependency><dependency><groupId>org.noear</groupId><artifactId>solon.socketd.client.websocket</artifactId></dependency>简单几行代码就实现WebSocket的服务端编程
@ServerEndpoint(value = "https://www.huyubaike.com/ws/demo/{id}")public class WebSocket implements Listener {@Overridepublic void onOpen(Session session) {//path varString id = session.param("id");//query varString token = session.param("token");/*此处可以做签权;会话的二次组织等...*/}@Overridepublic void onMessage(Session session, Message message) throws IOException {//message.setHandled(true); //设为true,则不进入mvc路由session.send("你发了:" + message.bodyAsString());}}然后通过一个debug.htm通过javascript实现WebSocket收发功能,App启动类开启enableWebSocket
public class App {public static void main(String[] args) {//// 启动Solon,并开启WebSocket监听;同时添加/路径跳转//Solon.start(App.class, args, app -> app.enableWebSocket(true)).get("/", c -> {c.redirect("/debug.htm");});}}启动App后日志输出如下
不妨试试更快更小更灵活Java开发框架Solon

文章插图
访问http://localhost:8080/ 输入发送信息后服务端打印收到的输入信息
不妨试试更快更小更灵活Java开发框架Solon

文章插图
Solon Remoting RPC示例RPC的实现分为3个模块,RPC提供者的实现、公共模块、服务消费者,公共模块存放数据模型和接口 , 可以同时提供给提供者和消费者引用 。
服务提供者添加solon-rpc依赖
<dependency><groupId>org.noear</groupId><artifactId>solon-rpc</artifactId></dependency>服务提供者通过@Remoting注解实现RPC服务 , 代码如下
@Mapping("/user/")@Remotingpublic class UserServiceImpl implements UserService {@Overridepublic UserModel getUser(Integer userId) {UserModel model = new UserModel();model.setId(userId);model.setName("user-" + userId);return model;}}

推荐阅读