iBase4J简单应用添加模块
生活随笔
收集整理的這篇文章主要介紹了
iBase4J简单应用添加模块
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
# 近來(lái)比較空閑,看了下iBase4J,但是在iBase4j開(kāi)發(fā)添加小模塊時(shí)發(fā)現(xiàn)并沒(méi)有太多的文章來(lái)介紹它,所以自己就慢慢研究了下,將一些簡(jiǎn)單的問(wèn)題一起與大家共享下
**首先**你得確保你的項(xiàng)目都啟動(dòng)成功,網(wǎng)上有許多部署啟動(dòng)iBase4J的文章,這里咱們就不在啰嗦了,小編這里使用的idea神器,
![項(xiàng)目啟動(dòng)成功ok,這里小編沒(méi)有配置nginx,而是將它的iBase4J-UI\iBase4J-UI-AngularJS也一起部署到tomcat下
接下來(lái)項(xiàng)目啟動(dòng)了以后我們首先進(jìn)行登陸(http://localhost:8080/ui),賬號(hào)為:admin
密碼是:111111
進(jìn)入iBase的首頁(yè)
![進(jìn)入iBase的首頁(yè)
添加模塊
可以直接使用它的程序添加也可以去數(shù)據(jù)庫(kù)手動(dòng)添加,小編在這失去它的數(shù)據(jù)庫(kù)添加,將所有的sql都導(dǎo)入數(shù)據(jù)庫(kù)
在菜單表中添加菜單
這里的request_ 字段路徑要與我們后期的angularJs中的地址相對(duì)應(yīng),待會(huì)介紹
給admin用戶添加權(quán)限
接下來(lái)我們?nèi)ヒ幌碌刂分刑砑釉L問(wèn)路徑(需要angularJs解析我們的路徑所有要在config-route配置文件中去配置)
照貓畫(huà)虎添加相對(duì)應(yīng)的路徑,配置與我們數(shù)據(jù)庫(kù)當(dāng)中的請(qǐng)求路徑一致
.state('main.search', {
??????????????????? url: '/search',
??????????????????? template: '<div ui-view class="fade-in-right-big smooth"></div>'
??????????????? })
??????????????? .state('main.search.resume', {
??????????????????? url: '/resume',
??????????????????? template: '<div ui-view class="fade-in-right-big smooth"></div>'
??????????????? })
??????????????? .state('main.search.resume.list', {
??????????????????? url: '/list',
??????????????????? templateUrl: 'src/app/search/resume/resume.html',
??????????????????? controller: 'resumeController',
??????????????????? resolve: {
??????????????????????? deps: ['uiLoad', '$ocLazyLoad', function(uiLoad, $ocLazyLoad) {
??????????????????????????? return uiLoad.load('src/app/search/resume/resumeController.js').then(function() {
??????????????????????????????? return $ocLazyLoad.load('toaster');
??????????????????????????? });
??????????????????????? }]
??????????????????? }
??????????????? });
創(chuàng)建相對(duì)應(yīng)的html靜態(tài)頁(yè)面和angularJs的控制器
angularJs控制器中的代碼也是一樣照貓畫(huà)虎
'use strict';
angular.module('app')
??? .controller('resumeController', [ '$rootScope', '$scope', '$http', '$state',
??????? function($rootScope, $scope, $http, $state) {
??????????? $scope.title = '簡(jiǎn)歷查詢';
??????????? $scope.param = { };
??????????? $scope.loading = false;
??????????? $scope.search = function () {
??????????????? $scope.loading = true;
??????????????? $.ajax({
??????????????????? type: 'PUT',
??????????????????? dataType: 'json',
??????????????????? contentType:'application/json;charset=UTF-8',
??????????????????? url : '/resume/read/list',
??????????????????? data: angular.toJson($scope.param)
??????????????? }).then(function(result) {
??????????????????? $scope.loading = false;
??????????????????? if (result.httpCode == 200) {
??????????????????????? $scope.pageInfo = result;
??????????????????? } else {
??????????????????????? $scope.msg = result.msg;
??????????????????? }
??????????????????? $scope.$apply();
??????????????? });
??????????? }
??????????? $scope.search();
??????????? $scope.clearSearch = function() {
??????????????? $scope.param.keyword= null;
??????????????? $scope.search();
??????????? }
??????????? $scope.disableItem = function(id, enable) {
??????????? }
??????????? // 翻頁(yè)
??????????? $scope.pagination = function (page) {
??????????????? $scope.param.pageNum=page;
??????????????? $scope.search();
??????????? };
??????? } ]);
??? 項(xiàng)目實(shí)現(xiàn)加載我們的html靜態(tài)頁(yè)面的的,然后再通過(guò)angularJs的ajax去請(qǐng)求我們的動(dòng)態(tài)資源,所以這里的請(qǐng)求路徑要與我們后臺(tái)的controller請(qǐng)求路徑相對(duì)應(yīng)!
??? 在編寫(xiě)之前創(chuàng)建好我們的表
??? 我們的實(shí)體類Resume,創(chuàng)建路徑(iBase4J-SYS-Facade\src\main\java\org\ibase4j\model\Resume.java)
??? package org.ibase4j.model;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableName;
import org.ibase4j.core.base.BaseModel;
/**
?* Created by Administrator on 2017/8/16.
?*/
@TableName("resume")
public class Resume extends BaseModel {
??? /**
???? * 公司名稱
???? */
??? @TableField("company_name")
??? private String companyName;
??? public String getCompanyName() {
??????? return companyName;
??? }
??? public void setCompanyName(String companyName) {
??????? this.companyName = companyName;
??? }
}
實(shí)體類中繼承了我們的基類BaseModel 我們可以點(diǎn)進(jìn)去看一看,
因?yàn)樵贐aseModel中已經(jīng)有了對(duì)id,enable等字段的編寫(xiě)所以我們?cè)趯?shí)體類中只需要編寫(xiě)我們BaseModel中沒(méi)有的就好!
?? ?
??? 那么接著**到我們的后臺(tái)編寫(xiě)了**不得不說(shuō)它封裝挺好的,從Controller開(kāi)始
??? 在web應(yīng)用下創(chuàng)建iBase4J-SYS-Web\src\main\java\org\ibase4j\web\ResumeCtroller.java
??? package org.ibase4j.web;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.ibase4j.core.base.AbstractController;
import org.ibase4j.core.base.Parameter;
import org.ibase4j.provider.ISysProvider;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
/**
?* Created by Administrator on 2017/8/16.
?*/
@RestController
@Api(value = "簡(jiǎn)歷查詢", description = "簡(jiǎn)歷查詢")
@RequestMapping(value = "/resume")
public class ResumeCtroller extends AbstractController<ISysProvider> {
?? ?//注入我們的相對(duì)應(yīng)的service
??? @Override
??? public String getService() {
??????? return "resumeService";
??? }
??? // 查詢最新簡(jiǎn)歷
??? @ApiOperation(value = "查詢最新簡(jiǎn)歷")
??? @PutMapping(value = "/read/list")
??? public Object get(ModelMap modelMap, @RequestBody Map<String, Object> param) {
??????? return super.queryList(modelMap, param);
??? }
}
繼承他的基類使用基類的queryList方法,查詢列表
繼續(xù)到service
這里我們只需要?jiǎng)?chuàng)建service的實(shí)現(xiàn)類即可,非常方便
iBase4J-SYS-Service\src\main\java\org\ibase4j\service\ResumeService.java
package org.ibase4j.service;
import org.ibase4j.core.base.BaseService;
import org.ibase4j.core.util.InstanceUtil;
import org.ibase4j.model.Resume;
import org.ibase4j.model.SysMenu;
import org.springframework.cache.annotation.CacheConfig;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
?* Created by Administrator on 2017/8/17.
?*/
@Service
@CacheConfig(cacheNames = "sysResume")
public class ResumeService extends BaseService<Resume> {
??? public List<Resume> queryList(Map<String, Object> params) {
??????? List<Resume> pageInfo = super.queryList(params);
??????? return pageInfo;
??? }
}
這里的service調(diào)用基類的queryList時(shí)他幫我們做了許多事情不再用我們?nèi)ゲ樵兯牧斜?#xff0c;看它的代碼
接著是我們的mapper接口和mapper.xml
iBase4J-SYS-Service\src\main\java\org\ibase4j\mapper\SysResumeMapper.java 一樣去繼承它的基類
package org.ibase4j.mapper;
import org.apache.ibatis.annotations.Param;
import org.ibase4j.core.base.BaseMapper;
import org.ibase4j.model.Resume;
import java.util.List;
import java.util.Map;
/**
?* Created by Administrator on 2017/8/17.
?*/
public interface SysResumeMapper extends BaseMapper<Resume> {
??? public List<Long> selectIdPage(@Param("cm") Map<String, Object> params);
}
mapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.ibase4j.mapper.SysResumeMapper">
?? ?<select id="selectIdPage" parameterType="java.util.Map" resultType="java.lang.Long">
?? ??? ?select id_ from resume
?? ?</select>
</mapper>
這樣的話它的整個(gè)項(xiàng)目前臺(tái)請(qǐng)求到后臺(tái)再到我們的數(shù)據(jù)庫(kù)就都打通了
本博客中使用的各個(gè)名稱都是學(xué)習(xí)使用并沒(méi)有作為商用!!!
感謝大家的細(xì)心閱讀,相信大家也一定會(huì)有更好的建議告訴我,快來(lái)評(píng)論吧!!!本人一定銘記教誨!!!
**首先**你得確保你的項(xiàng)目都啟動(dòng)成功,網(wǎng)上有許多部署啟動(dòng)iBase4J的文章,這里咱們就不在啰嗦了,小編這里使用的idea神器,
![項(xiàng)目啟動(dòng)成功ok,這里小編沒(méi)有配置nginx,而是將它的iBase4J-UI\iBase4J-UI-AngularJS也一起部署到tomcat下
接下來(lái)項(xiàng)目啟動(dòng)了以后我們首先進(jìn)行登陸(http://localhost:8080/ui),賬號(hào)為:admin
密碼是:111111
進(jìn)入iBase的首頁(yè)
![進(jìn)入iBase的首頁(yè)
添加模塊
可以直接使用它的程序添加也可以去數(shù)據(jù)庫(kù)手動(dòng)添加,小編在這失去它的數(shù)據(jù)庫(kù)添加,將所有的sql都導(dǎo)入數(shù)據(jù)庫(kù)
在菜單表中添加菜單
這里的request_ 字段路徑要與我們后期的angularJs中的地址相對(duì)應(yīng),待會(huì)介紹
給admin用戶添加權(quán)限
接下來(lái)我們?nèi)ヒ幌碌刂分刑砑釉L問(wèn)路徑(需要angularJs解析我們的路徑所有要在config-route配置文件中去配置)
照貓畫(huà)虎添加相對(duì)應(yīng)的路徑,配置與我們數(shù)據(jù)庫(kù)當(dāng)中的請(qǐng)求路徑一致
.state('main.search', {
??????????????????? url: '/search',
??????????????????? template: '<div ui-view class="fade-in-right-big smooth"></div>'
??????????????? })
??????????????? .state('main.search.resume', {
??????????????????? url: '/resume',
??????????????????? template: '<div ui-view class="fade-in-right-big smooth"></div>'
??????????????? })
??????????????? .state('main.search.resume.list', {
??????????????????? url: '/list',
??????????????????? templateUrl: 'src/app/search/resume/resume.html',
??????????????????? controller: 'resumeController',
??????????????????? resolve: {
??????????????????????? deps: ['uiLoad', '$ocLazyLoad', function(uiLoad, $ocLazyLoad) {
??????????????????????????? return uiLoad.load('src/app/search/resume/resumeController.js').then(function() {
??????????????????????????????? return $ocLazyLoad.load('toaster');
??????????????????????????? });
??????????????????????? }]
??????????????????? }
??????????????? });
創(chuàng)建相對(duì)應(yīng)的html靜態(tài)頁(yè)面和angularJs的控制器
angularJs控制器中的代碼也是一樣照貓畫(huà)虎
'use strict';
angular.module('app')
??? .controller('resumeController', [ '$rootScope', '$scope', '$http', '$state',
??????? function($rootScope, $scope, $http, $state) {
??????????? $scope.title = '簡(jiǎn)歷查詢';
??????????? $scope.param = { };
??????????? $scope.loading = false;
??????????? $scope.search = function () {
??????????????? $scope.loading = true;
??????????????? $.ajax({
??????????????????? type: 'PUT',
??????????????????? dataType: 'json',
??????????????????? contentType:'application/json;charset=UTF-8',
??????????????????? url : '/resume/read/list',
??????????????????? data: angular.toJson($scope.param)
??????????????? }).then(function(result) {
??????????????????? $scope.loading = false;
??????????????????? if (result.httpCode == 200) {
??????????????????????? $scope.pageInfo = result;
??????????????????? } else {
??????????????????????? $scope.msg = result.msg;
??????????????????? }
??????????????????? $scope.$apply();
??????????????? });
??????????? }
??????????? $scope.search();
??????????? $scope.clearSearch = function() {
??????????????? $scope.param.keyword= null;
??????????????? $scope.search();
??????????? }
??????????? $scope.disableItem = function(id, enable) {
??????????? }
??????????? // 翻頁(yè)
??????????? $scope.pagination = function (page) {
??????????????? $scope.param.pageNum=page;
??????????????? $scope.search();
??????????? };
??????? } ]);
??? 項(xiàng)目實(shí)現(xiàn)加載我們的html靜態(tài)頁(yè)面的的,然后再通過(guò)angularJs的ajax去請(qǐng)求我們的動(dòng)態(tài)資源,所以這里的請(qǐng)求路徑要與我們后臺(tái)的controller請(qǐng)求路徑相對(duì)應(yīng)!
??? 在編寫(xiě)之前創(chuàng)建好我們的表
??? 我們的實(shí)體類Resume,創(chuàng)建路徑(iBase4J-SYS-Facade\src\main\java\org\ibase4j\model\Resume.java)
??? package org.ibase4j.model;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableName;
import org.ibase4j.core.base.BaseModel;
/**
?* Created by Administrator on 2017/8/16.
?*/
@TableName("resume")
public class Resume extends BaseModel {
??? /**
???? * 公司名稱
???? */
??? @TableField("company_name")
??? private String companyName;
??? public String getCompanyName() {
??????? return companyName;
??? }
??? public void setCompanyName(String companyName) {
??????? this.companyName = companyName;
??? }
}
實(shí)體類中繼承了我們的基類BaseModel 我們可以點(diǎn)進(jìn)去看一看,
因?yàn)樵贐aseModel中已經(jīng)有了對(duì)id,enable等字段的編寫(xiě)所以我們?cè)趯?shí)體類中只需要編寫(xiě)我們BaseModel中沒(méi)有的就好!
?? ?
??? 那么接著**到我們的后臺(tái)編寫(xiě)了**不得不說(shuō)它封裝挺好的,從Controller開(kāi)始
??? 在web應(yīng)用下創(chuàng)建iBase4J-SYS-Web\src\main\java\org\ibase4j\web\ResumeCtroller.java
??? package org.ibase4j.web;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.ibase4j.core.base.AbstractController;
import org.ibase4j.core.base.Parameter;
import org.ibase4j.provider.ISysProvider;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
/**
?* Created by Administrator on 2017/8/16.
?*/
@RestController
@Api(value = "簡(jiǎn)歷查詢", description = "簡(jiǎn)歷查詢")
@RequestMapping(value = "/resume")
public class ResumeCtroller extends AbstractController<ISysProvider> {
?? ?//注入我們的相對(duì)應(yīng)的service
??? @Override
??? public String getService() {
??????? return "resumeService";
??? }
??? // 查詢最新簡(jiǎn)歷
??? @ApiOperation(value = "查詢最新簡(jiǎn)歷")
??? @PutMapping(value = "/read/list")
??? public Object get(ModelMap modelMap, @RequestBody Map<String, Object> param) {
??????? return super.queryList(modelMap, param);
??? }
}
繼承他的基類使用基類的queryList方法,查詢列表
繼續(xù)到service
這里我們只需要?jiǎng)?chuàng)建service的實(shí)現(xiàn)類即可,非常方便
iBase4J-SYS-Service\src\main\java\org\ibase4j\service\ResumeService.java
package org.ibase4j.service;
import org.ibase4j.core.base.BaseService;
import org.ibase4j.core.util.InstanceUtil;
import org.ibase4j.model.Resume;
import org.ibase4j.model.SysMenu;
import org.springframework.cache.annotation.CacheConfig;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
?* Created by Administrator on 2017/8/17.
?*/
@Service
@CacheConfig(cacheNames = "sysResume")
public class ResumeService extends BaseService<Resume> {
??? public List<Resume> queryList(Map<String, Object> params) {
??????? List<Resume> pageInfo = super.queryList(params);
??????? return pageInfo;
??? }
}
這里的service調(diào)用基類的queryList時(shí)他幫我們做了許多事情不再用我們?nèi)ゲ樵兯牧斜?#xff0c;看它的代碼
接著是我們的mapper接口和mapper.xml
iBase4J-SYS-Service\src\main\java\org\ibase4j\mapper\SysResumeMapper.java 一樣去繼承它的基類
package org.ibase4j.mapper;
import org.apache.ibatis.annotations.Param;
import org.ibase4j.core.base.BaseMapper;
import org.ibase4j.model.Resume;
import java.util.List;
import java.util.Map;
/**
?* Created by Administrator on 2017/8/17.
?*/
public interface SysResumeMapper extends BaseMapper<Resume> {
??? public List<Long> selectIdPage(@Param("cm") Map<String, Object> params);
}
mapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.ibase4j.mapper.SysResumeMapper">
?? ?<select id="selectIdPage" parameterType="java.util.Map" resultType="java.lang.Long">
?? ??? ?select id_ from resume
?? ?</select>
</mapper>
這樣的話它的整個(gè)項(xiàng)目前臺(tái)請(qǐng)求到后臺(tái)再到我們的數(shù)據(jù)庫(kù)就都打通了
本博客中使用的各個(gè)名稱都是學(xué)習(xí)使用并沒(méi)有作為商用!!!
感謝大家的細(xì)心閱讀,相信大家也一定會(huì)有更好的建議告訴我,快來(lái)評(píng)論吧!!!本人一定銘記教誨!!!
總結(jié)
以上是生活随笔為你收集整理的iBase4J简单应用添加模块的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Apache 配置:是否显示文件列表
- 下一篇: 剑指offer---用两个栈实现队列