iBase4J简单应用添加模块

# 近来比较空闲,看了下iBase4J,但是在iBase4j开发添加小模块时发现并没有太多的文章来介绍它,所以自己就慢慢研究了下,将一些简单的问题一起与大家共享下
**首先**你得确保你的项目都启动成功,网上有许多部署启动iBase4J的文章,这里咱们就不在啰嗦了,小编这里使用的idea神器,
![项目启动成功ok,这里小编没有配置nginx,而是将它的iBase4J-UI\iBase4J-UI-AngularJS也一起部署到tomcat下iBase4J简单应用添加模块
接下来项目启动了以后我们首先进行登陆(http://localhost:8080/ui),账号为:admin
密码是:111111
进入iBase的首页
![进入iBase的首页iBase4J简单应用添加模块
添加模块
iBase4J简单应用添加模块
可以直接使用它的程序添加也可以去数据库手动添加,小编在这失去它的数据库添加,将所有的sql都导入数据库
iBase4J简单应用添加模块
在菜单表中添加菜单
iBase4J简单应用添加模块
这里的request_ 字段路径要与我们后期的angularJs中的地址相对应,待会介绍
给admin用户添加权限
iBase4J简单应用添加模块
接下来我们去一下地址中添加访问路径(需要angularJs解析我们的路径所有要在config-route配置文件中去配置)
iBase4J简单应用添加模块
照猫画虎添加相对应的路径,配置与我们数据库当中的请求路径一致
.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');
                            });
                        }]
                    }
                });
创建相对应的html静态页面和angularJs的控制器
iBase4J简单应用添加模块
angularJs控制器中的代码也是一样照猫画虎
'use strict';

angular.module('app')
    .controller('resumeController', [ '$rootScope', '$scope', '$http', '$state',
        function($rootScope, $scope, $http, $state) {
            $scope.title = '简历查询';
            $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) {

            }

            // 翻页
            $scope.pagination = function (page) {
                $scope.param.pageNum=page;
                $scope.search();
            };
        } ]);
    项目实现加载我们的html静态页面的的,然后再通过angularJs的ajax去请求我们的动态资源,所以这里的请求路径要与我们后台的controller请求路径相对应!
    在编写之前创建好我们的表
iBase4J简单应用添加模块
    我们的实体类Resume,创建路径(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;
    }
}
实体类中继承了我们的基类BaseModel 我们可以点进去看一看,
因为在BaseModel中已经有了对id,enable等字段的编写所以我们在实体类中只需要编写我们BaseModel中没有的就好!
    
    那么接着**到我们的后台编写了**不得不说它封装挺好的,从Controller开始
    在web应用下创建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 = "简历查询", description = "简历查询")
@RequestMapping(value = "/resume")
public class ResumeCtroller extends AbstractController<ISysProvider> {
    //注入我们的相对应的service
    @Override
    public String getService() {
        return "resumeService";
    }

    // 查询最新简历
    @ApiOperation(value = "查询最新简历")
    @PutMapping(value = "/read/list")
    public Object get(ModelMap modelMap, @RequestBody Map<String, Object> param) {
        return super.queryList(modelMap, param);
    }
}
继承他的基类使用基类的queryList方法,查询列表
继续到service
这里我们只需要创建service的实现类即可,非常方便
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调用基类的queryList时他帮我们做了许多事情不再用我们去查询他的列表,看它的代码
iBase4J简单应用添加模块
接着是我们的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>
这样的话它的整个项目前台请求到后台再到我们的数据库就都打通了
本博客中使用的各个名称都是学习使用并没有作为商用!!!
感谢大家的细心阅读,相信大家也一定会有更好的建议告诉我,快来评论吧!!!本人一定铭记教诲!!!