不妨試試更快更小更靈活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;}}

推薦閱讀