AOS开发

AOS平台简介 
AOS应用基础平台基于JavaEE技术体系,以“标准功能可复用、通用模块可配置、行业需求快速开发、异构系统无缝集成”为目标,为软件开发团队提供高效可控、随需应变、快速实现业务需求的全栈式技术解决方案。点击加入QQ交流群(92497522)

AOS在线演示系统 
http://42.120.21.17/aos (在线演示系统为只读模式,部分功能可能不流畅。完美体验请搭建本地环境。) 
登录帐户/密码:root/111111。(或单击 开发者 按钮直接登录)

AOS项目主页 
http://git.oschina.net/osworks/AOS


感谢黑哥的无私奉献!通过阅读本文,您将了解AOS基本模块的开发流程,其中包括增、删、改、查。如书写不当,还望各位黑粉orA粉告知!

AOS模版开发流程

—->本例中使用MySQL数据库

① 建表

DROP TABLE IF EXISTS `test`;
CREATE TABLE `test` (
  `id_` varchar(64) NOT NULL DEFAULT '0',
  `name` varchar(40) DEFAULT NULL,
  PRIMARY KEY (`id_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

②生成Dao 
AOS平台中自带Dao生成工具类cn.osworks.aos.builder.DaoBuilderConsole,进行相应的设置后,可自动生成Dao(此处根据自己的情况进行设置) 
这里写图片描述
处理完成后,会在cn.osworks.aos.hansheng.dao下生成相应的文件 
这里写图片描述 
③书写Service 
您需要注意的是,在方法saveTest中,TEST1ID需要在IdCons中定义(参考IdCons中的其他属性), 同时需要在Web界面->控制台->资源->序列号中定义,前后定义的名称应一致

package cn.osworks.aos.hansheng.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import cn.osworks.aos.core.asset.AOSUtils;
import cn.osworks.aos.core.id.AOSId;
import cn.osworks.aos.core.typewrap.Dto;
import cn.osworks.aos.core.typewrap.Dtos;
import cn.osworks.aos.hansheng.dao.mapper.TestMapper;
import cn.osworks.aos.hansheng.dao.po.TestPO;
import cn.osworks.aos.system.asset.IdCons;

/**
 * 测试测试
 * 
 * @author OSWorks-XC
 * @date 2014-07-16
 */
@Service
public class TestService {

    @Autowired
    private TestMapper testMapper;

    /**
     * 查询
     * 
     * @param qDto
     * @return
     */
    public List likeTests(Dto qDto) {
        List list = testMapper.likePage(qDto);
        return list;
    }

    /**
     * 增加
     * 
     * @param inDto
     */
    @Transactional
    public void saveTest(Dto inDto) {
        TestPO testPO = new TestPO();
        AOSUtils.apply(inDto, testPO);
        // 此处TEST1ID需要在IdCons中定义(参考IdCons中的其他属性)
        // 同时需要在Web界面->控制台->资源->序列号中定义,前后定义的名称应一致
        testPO.setId_(AOSId.id(IdCons.TEST1ID));
        testMapper.insert(testPO);
    }

    /**
     * 修改
     * 
     * @param inDto
     */
    @Transactional
    public Dto updateTest(Dto inDto) {
        Dto outDto = Dtos.newDto();
        TestPO testPO = new TestPO();
        AOSUtils.apply(inDto, testPO);
        testMapper.updateByKey(testPO);
        return outDto;
    }

    /**
     * 删除
     * 
     * 
     * @param qDto
     */
    @Transactional
    public Dto deleteTest(Dto qDto) {
        Dto outDto = Dtos.newDto();
        String[] selections = qDto.getRows();
        int del = 0;
        for (String id_ : selections) {
            testMapper.deleteByKey(id_);
            del++;
        }
        String msg = "操作完成, ";
        if (del > 0) {
            msg = AOSUtils.merge(msg + "成功删除测试[{0}]个。", del);
        }
        outDto.setAppMsg(msg);
        return outDto;
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92

④书写Controller

package cn.osworks.aos.hansheng.modules;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import cn.osworks.aos.core.asset.AOSJson;
import cn.osworks.aos.core.asset.WebCxt;
import cn.osworks.aos.core.typewrap.Dto;
import cn.osworks.aos.core.typewrap.Dtos;
import cn.osworks.aos.hansheng.dao.po.TestPO;
import cn.osworks.aos.hansheng.service.TestService;

/**
 * 测试测试
 * 
 * @author OSWorks-XC
 * @date 2014-07-16
 */
@Controller
@RequestMapping(value = "hansheng/test/")
public class TestController {

    @Autowired
    private TestService testService;

    /**
     * 页面初始化
     * @return
     */
    @RequestMapping(value = "init")
    public String init(HttpSession session, HttpServletRequest request) {
        return "hansheng/test/test.jsp";
    }

    /**
     * 查询
     * 
     * @param request
     * @param response
     */
    @RequestMapping(value = "listTests")
    public void listTests(HttpServletRequest request,
            HttpServletResponse response) {
        Dto qDto = Dtos.newDto(request);
        List testPOs = testService.likeTests(qDto);
        String outString = AOSJson.toGridJson(testPOs, qDto.getPageTotal());
        WebCxt.write(response, outString);
    }

    /**
     * 增加
     * 
     * @param request
     * @param response
     */
    @RequestMapping(value = "saveTest")
    public void saveTest(HttpServletRequest request,
            HttpServletResponse response) {
        Dto dto = Dtos.newDto(request);
        testService.saveTest(dto);
        WebCxt.write(response, "操作完成,测试新增成功。");
    }

    /**
     * 修改
     * 
     * @param request
     * @param response
     */
    @RequestMapping(value = "updateTest")
    public void updateTest(HttpServletRequest request,
            HttpServletResponse response) {
        Dto dto = Dtos.newDto(request);
        Dto outDto = testService.updateTest(dto);
        outDto.setAppMsg("操作完成,组织信息修改成功。");
        WebCxt.write(response, AOSJson.toJson(outDto));
    }

    /**
     * 删除
     * 
     * @param request
     * @param response
     */
    @RequestMapping(value = "deleteTest")
    public void deleteTest(HttpServletRequest request,
            HttpServletResponse response) {
        Dto dto = Dtos.newDto(request);
        Dto outDto = testService.deleteTest(dto);
        WebCxt.write(response, AOSJson.toJson(outDto));
    }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101

⑤书写 Jsp

<%@ page contentType="text/html; charset=utf-8"%>
<%@ include file="/WEB-INF/jsp/common/tags.jsp"%>
<aos:html>
<aos:head title="测试测试111">
    <aos:include lib="ext" />
    <aos:base href="hansheng/project/test" />
aos:head>
<aos:body>
aos:body>
<aos:onready>
    <aos:viewport layout="fit">
        <aos:gridpanel id="_g_test" url="listTests.jhtml" onrender="_g_test_query" onitemdblclick="_w_test_u_show">
            <aos:docked>
                <aos:dockeditem onclick="_w_test_show" text="新增" icon="add.png" />
                <aos:dockeditem onclick="_w_test_u_show" text="修改" icon="edit.png" />
                <aos:dockeditem onclick="_g_test_del" text="删除" icon="del.png" />
                <aos:triggerfield emptyText="姓名" name="name" id="_hotkey" onenterkey="_g_test_query"
                    trigger1Cls="x-form-search-trigger" onTrigger1Click="_g_test_query" width="180" />
                <aos:dockeditem xtype="tbfill" />
            aos:docked>
            <aos:selmodel type="checkbox" mode="multi" />
            <aos:column type="rowno" />
            <aos:column dataIndex="id_" hidden="true" />
            <aos:column header="姓名" dataIndex="name"/>
        aos:gridpanel>
        <aos:window id="_w_test" title="新增测试">
            <aos:formpanel id="_f_test" width="400" layout="column" labelWidth="70">
                <aos:fieldset title="请查询" labelWidth="60">
                    <aos:textfield name="name" fieldLabel="名称" allowBlank="false" maxLength="50" />
                aos:fieldset>
            aos:formpanel>
            <aos:docked dock="bottom" ui="footer">
                <aos:dockeditem xtype="tbfill" />
                <aos:dockeditem onclick="_f_test_save" text="保存" icon="ok.png" />
                <aos:dockeditem onclick="#_w_test.hide();" text="关闭" icon="close.png" />
            aos:docked>
        aos:window>
        <aos:window id="_w_test_u" title="修改测试">
            <aos:formpanel id="_f_test_u" width="400" layout="column" labelWidth="70">
                <aos:hiddenfield name="id_" />
                <aos:fieldset title="请查询" labelWidth="60">
                    <aos:textfield name="name" fieldLabel="名称" allowBlank="false" maxLength="50" />
                aos:fieldset>
            aos:formpanel>
            <aos:docked dock="bottom" ui="footer">
                <aos:dockeditem xtype="tbfill" />
                <aos:dockeditem onclick="_f_test_u_save" text="保存" icon="ok.png" />
                <aos:dockeditem onclick="#_w_test_u.hide();" text="关闭" icon="close.png" />
            aos:docked>
        aos:window>
    aos:viewport>
    <script type="text/javascript">
        //查询测试列表
        function _g_test_query(){
            var params = {
                    name : _hotkey.getValue()
            };
            _g_test_store.getProxy().extraParams = params;
            _g_test_store.load();
         }

        //弹出新增测试窗口
        function _w_test_show(){
            AOS.reset(_f_test);
            _w_test.show();
        }

        //保存测试
        function _f_test_save(){
                AOS.ajax({
                forms : _f_test,
                url : 'save.jhtml',
                ok : function(data) {
                    _w_test.hide();
                    _g_test_store.reload();
                    AOS.tip(data.appmsg);
                }
            }); 
         }

        //弹出修改测试窗口
        function _w_test_u_show(){
            AOS.reset(_f_test_u);
            var record = AOS.selectone(_g_test);
            if(record){
                _w_test_u.show();
                _f_test_u.loadRecord(record);
            }
        }        

        //修改测试
        function _f_test_u_save(){
                AOS.ajax({
                forms : _f_test_u,
                url : 'update.jhtml',
                ok : function(data) {
                    _w_test_u.hide();
                    _g_test_store.reload();
                    AOS.tip(data.appmsg);
                }
            }); 
        }

        //删除测试
        function _g_test_del(){
            var rows = AOS.rows(_g_test);
            if(rows === 0){
                AOS.tip('删除前请先选中数据。');
                return;
            }
            var msg =  AOS.merge('确认要删除选中的[{0}]条数据吗?', rows);
            AOS.confirm(msg, function(btn){
                if(btn === 'cancel'){
                    AOS.tip('删除操作被取消。');
                    return;
                }
                AOS.ajax({
                    url : 'delete.jhtml',
                    params:{
                        aos_rows_: AOS.selection(_g_test, 'id_')
                    },
                    ok : function(data) {
                        AOS.tip(data.appmsg);
                        _g_test_store.reload();
                    }
                });
            });
        }
        script>
aos:onready>
aos:html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131

完了在系统中配置好菜单,设置好权限 
这里写图片描述 
功能预览、测试 
这里写图片描述

引用“soft_xiang”的评论:service里面
[code=java]
AOSUtils.apply(inDto, testPO...

现在改成

AOSUtils.copyProperties(inDto, aos_sys_user_extPO);

这个了
6楼  soft_xiang 2015-11-11 18:27发表 [回复]
service里面
[java]  view plain  copy
  1. AOSUtils.apply(inDto, testPO);  

出现 The method apply(Dto, Cus_base_partnersPO) is undefined for the type AOSUtils
Re:  soft_xiang 2015-11-11 18:28发表 [回复]
回复soft_xiang:我改过代码,AOSUtils中没有apply方法


你可能感兴趣的:(java)