Guns 프레임 워 크 학습 기록 - 1 - 프레임 워 크 구축 + 주문 관리 CURD

Guns 프레임 학습 기록 - 1
1. 기본 프레임 워 크 구축
1.1 mp      
1.2 guns      
1.3            

mp 의 코드 생 성기: my batis - plus 코드 생 성 기 는 주로 dao, model, mapper 를 생 성 하 는 데 사 용 됩 니 다.자세 한 내용 은 살 펴 보 세 요.http://mp.baomidou.com/#/generate-code
//     
GlobalConfig gc = new GlobalConfig();
gc.setOutputDir("D:\\workspace\\guns\\guns-admin\\src\\main\\java");//       java  
//      
DataSourceConfig dsc = new DataSourceConfig();
dsc.setDbType(DbType.MYSQL);
dsc.setTypeConvert(new MySqlTypeConvert() {
    //              【  】
    @Override
    public DbColumnType processTypeConvert(String fieldType) {
        return super.processTypeConvert(fieldType);
    }
});
dsc.setDriverName("com.mysql.jdbc.Driver");//     
dsc.setUsername("root");//      
dsc.setPassword("1234");//     
dsc.setUrl("jdbc:mysql://127.0.0.1:3306/guns?characterEncoding=utf8");
mpg.setDataSource(dsc);
//     
StrategyConfig strategy = new StrategyConfig();
//strategy.setTablePrefix(new String[]{"_"});//             
strategy.setNaming(NamingStrategy.underline_to_camel);//       
//  :               
strategy.setInclude(new String[]{"my_order"});
mpg.setStrategy(strategy);

guns 코드 생 성기: guns 프레임 워 크 자체 코드 생 성 기 는 contrller, service + impl, js, 전단 html 템 플 릿 을 생 성 하 는 데 사 용 됩 니 다.자세 한 내용 은 보 세 요:https://gitee.com/naan1993/guns
현재 admin 사용자 가 프로젝트 를 시작 한 후에 메뉴 를 추가 합 니 다. 주문 관리 (1 급) 와 주문 서 를 추가 하고 주문 서 를 수정 하 며 주문 서 를 편집 하 는 3 개의 2 급 메뉴 입 니 다.admin 사용 자 를 주문 관리 모든 권한 을 얻 습 니 다.
여기 서 주의해 야 할 것 은 생 성 된 2 급 메뉴 의 요청 주 소 는 반드시 guns 코드 생 성기 가 생 성 한 order. html 에서 요청 한 것 과 일치 해 야 합 니 다.원인 은:
guns        html     shiro         ,           ,           。
@if(shiro.hasPermission("/order/add")){
    
@}
@if(shiro.hasPermission("/order/update")){
    
@}
@if(shiro.hasPermission("/order/delete")){
    
@}

2. 심 플 데모 - 주문 관리 CURD
2.1      
2.2              
2.3        CURD

데이터 시트 만 들 기: myorder
CREATE TABLE `my_order` (
    `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '  id' ,
    `user` varchar(255) DEFAULT NULL COMMENT '     ' ,
    `place` varchar(255) DEFAULT NULL COMMENT '  ' ,
    `goods` varchar(255) DEFAULT NULL COMMENT '    ' ,
    `createtime` datetime DEFAULT NULL COMMENT '    ' ,
    PRIMARY KEY (`id`)
)ENGINE = INNODB DEFAULT CHARSET = utf8;

코드 생 성 기 를 통 해 생 성 된 코드 구 조 는 다음 과 같 습 니 다.
//mabatis-plus     
--dao 
    --mapping
        MyOrderMapper.xml   //     
    MyOrderMapper.java      //     
    --model
    MyOrder.java            //pojo   

//guns     
--order
    --controller
        OrderController.java    //      
    --service
        OrderService.java       //       
        -impl
            OrderServiceImpl.java   //        
--static
    --order.order
        order.js                //    
        order_info.js           //    
--WEB_INF
    --order.order
        order.html              //        
        order_add.html          //        
        order_edit.html         //        

주문 관리 CURD (개발 과정 상세 설명)
주문 전시
1.  :order.js
            ,           order.html ,          order.js 。          。
    :filed               !!!id          ,        。

/**
 *        
*/
Order.initColumn = function () {
    return [
        {field: 'selectItem', radio: true},
        {title: 'id', field: 'id', visible: false, align: 'center', valign: 'middle'},
        /*
        * title:         
        * field:        
        * visible:      
        * */
        {title: '     ', field: 'user', visible: true, align: 'center', valign: 'middle'},
        {title: '  ', field: 'place', visible: true, align: 'center', valign: 'middle'},
        {title: '    ', field: 'goods', visible: true, align: 'center', valign: 'middle'},
        {title: '    ', field: 'createtime', visible: true, align: 'center', valign: 'middle'},
    ];
};

2.  :OrderController.java
        ,          ,                  。

//  service     
@Autowired
private MyOrderMapper myOrderMapper;

/**
 *         
 */
@RequestMapping(value = "/list")
@ResponseBody
public Object list(String condition) {
    //                    --       
    if (ToolUtil.isNotEmpty(condition)) {
        //  mp      :EntityWrapper   like     --       like %x%
        EntityWrapper myOrderEntityWrapper = new EntityWrapper<>();
        myOrderEntityWrapper.like("goods",condition);
        //            ,    
        List myOrders = myOrderMapper.selectList(myOrderEntityWrapper);
        return myOrders;
    } else {
        List myOrders = myOrderMapper.selectList(null);
        return myOrders;
    }
}

메모: H + 전단 템 플 릿 사용, js 초기 화 페이지 설정, mp 조건 구조 기 Entity Wrapper 사용.
주문 추가
1.    :    '  '  ,        ,                   ,     ,          。
     、             :      +      。 :/order_add  +  /order/add 
  :OrderController.java

/**
 *           --      
 */
@RequestMapping("/order_add")
public String orderAdd() {
    return PREFIX + "order_add.html";
}

/**
 *        --      
 */
@RequestMapping(value = "/add")
@ResponseBody
public Object add(MyOrder myOrder) {
    //         -- id      ,   order        --       js    
    if (null != myOrder) {
        //          
        myOrder.setCreatetime(new Date());
    }
    //        
    Integer insert = myOrderMapper.insert(myOrder);
    return super.SUCCESS_TIP;
}

문제: 빈 폼 을 성공 적 으로 추가 할 수 있 습 니 다. 이것 은 논리 적 으로 허용 되 지 않 습 니 다. 우 리 는 폼 에 빈 인증 을 추가 해 야 합 니 다.
2.  order_info.js,            。
  :order_info.js

/**
*             
*/
var OrderInfoDlg = {
    orderInfoData : {},
    //          --   input 
    validateFields: {
        user: {
            validators: {
                notEmpty: {
                    message: '        '
                }
            }
        },
        place: {
            validators: {
                notEmpty: {
                    message: '      '
                }
            }
        },
        goods: {
            validators: {
                notEmpty: {
                    message: '        '
                }
            }
        }
    }
};

/*
*               
*/
$(function() {
    Feng.initValidator("orderInfoForm", OrderInfoDlg.validateFields);
});

/*
*         
* */
OrderInfoDlg.validate = function () {
    $('#orderInfoForm').data("bootstrapValidator").resetForm();
    $('#orderInfoForm').bootstrapValidator('validate');
    return $("#orderInfoForm").data('bootstrapValidator').isValid();
}

//                 ,         ,             。
if (!this.validate()) {
    return;
}

3.         id,  js  id       。
  :order_add.html

1.    :           ,  '  '   ,           ,    ,                。     ,          。
            :
                    --   
                      --   
                        ,       :/order_update + /order/update

/**
 *           --      
 */
@RequestMapping("/order_update/{orderId}")
public String orderUpdate(@PathVariable Integer orderId, Model model) {
    if (ToolUtil.isEmpty(orderId)) {
        throw new BussinessException(BizExceptionEnum.REQUEST_NULL);
    }
    //         orderId    
    MyOrder order = myOrderMapper.selectById(orderId);
    //             
    model.addAttribute("order", order);
    return PREFIX + "order_edit.html";
}

2.  order_edit.html    order  ,     。
3. , 。 /order/update, springmvc , 。 /** * -- */ @RequestMapping(value = "/update") @ResponseBody public Object update(@Validated MyOrder order) { //System.out.println(order.toString()); if (ToolUtil.isNotEmpty(order)){ myOrderMapper.updateById(order); } return super.SUCCESS_TIP; } 4. , 。 order_info.js 。 :order_info.js if (!this.validate()) { return; }

주문 삭제
1.    :         ,                 。
  :OrderController.java
/**
 *       
 */
@RequestMapping(value = "/delete")
@ResponseBody
public Object delete(@RequestParam("orderId") Integer orderId) {
    Integer deleteOrderId = myOrderMapper.deleteById(orderId);
    return SUCCESS_TIP;
}

문 제 를 총괄 하 다
1.          
2.mp BaseMapper   ,      CURD  。
3.mp  EntityWrapper        。
4.            。
    @RequestParam("param"):data      ,     。
    @PathVariable("param"):url     ,      。
5.@Validated @Valid  。
    Spring Validation               @Validated(Spring's JSR-303  ),javax   @Valid(  JSR-303  ),  BindingResult            。

제한 하 다.
설명 하 다.
@Null
null 로 만 제한
@NotNull
null
@AssertFalse
false 로 제한
@AssertTrue
트 루 로 제한
@DecimalMax(value)
지정 한 값 보다 크 지 않 은 숫자 로 제한 해 야 합 니 다.
@DecimalMin(value)
지정 한 값 보다 작 지 않 은 숫자 로 제한 해 야 합 니 다.
@Digits(integer,fraction)
제한 은 하나의 소수 로 해 야 하 며, 정수 부분의 자릿수 는 integer 를 초과 해 서 는 안 되 며, 소수 부분의 자릿수 는 fraction 을 초과 해 서 는 안 된다.
@Future
제한 은 반드시 미래의 날짜 여야 한다.
@Max(value)
지정 한 값 보다 크 지 않 은 숫자 로 제한 해 야 합 니 다.
@Min(value)
지정 한 값 보다 작 지 않 은 숫자 로 제한 해 야 합 니 다.
@Past
제한 은 반드시 과거의 날짜 여야 한다.
@Pattern(value)
제한 은 지정 한 정규 표현 식 에 부합 해 야 합 니 다.
@Size(max,min)
문자 길 이 를 제한 하려 면 min 에서 max 사이 에 있어 야 합 니 다.
@Past
주 해 를 검증 하 는 요소 값 (날짜 형식) 이 현재 시간 보다 빠 릅 니 다.
@NotEmpty
주 해 를 검증 하 는 요소 값 은 null 이 아니 라 비어 있 지 않 습 니 다 (문자열 길이 0 이 아 닙 니 다. 집합 크기 는 0 이 아 닙 니 다)
@NotBlank
주 해 를 검증 하 는 요소 값 은 비어 있 지 않 습 니 다 (null 이 아 닙 니 다. 첫 번 째 빈 칸 을 제거 한 후 길 이 는 0 입 니 다). @ NotEmpty 와 달리 @ NotBlank 는 문자열 에 만 적용 되 며 비교 할 때 문자열 의 빈 칸 을 제거 합 니 다.
@Email
주 해 를 검증 하 는 요소 값 은 Email 이 며 정규 표현 식 과 flag 를 통 해 사용자 정의 email 형식 을 지정 할 수 있 습 니 다.
    :
@Valid:package=javax.validation.Valid          。

//                           
@NotBlank(message = "       ")
private String rolename;

// controller              @Valid  ,      BindingResult  ,                。
@RequestMapping("/add")
@ResponseBody
public Role addRole(@Valid Role role, BindingResult bindingResult) {
    //      ,      
    if (bindingResult.hasErrors()) {
        //          message  
        System.out.println(bindingResult.getFieldError().getDefaultMessage());  
        return null;  
    }
    return roleMapper.addRole(role);
}

@Validated:package=javax.validation   @Valid     ,        。
                 ,    groups         。

       :
public interface Valid1() {
    //...
}
public interface Valid2() {
    //...
}
     :
    1.    groups,          。
    2.                            。
@NotBlank(message = "       ", groups = {Valid1.class})
@Size(min = 3,max = 8, message = "       ", groups = {Valid2.class})
private String rolename;

@NotNull(message = "      ")
private int age;
   :
    1. @Validated     groups    (@validated Role role),                 。
    2. @Validated   groups    (@validated({Group.class}) Role role),              。
    3.        :     ,             ,        ,           。
         :rolename  ,          ,       。                ,        ,      。
        //  @GroupSequence           。
        @GroupSequence({Valid1.class, Valid2.class})  
        public interface Group {  
            //...
        }
          ,     @validated({Group.class}) Role role       。
@RequestMapping("/add")
@ResponseBody
public Role addRole(@validated Role role, BindingResult bindingResult) {
    //      ,      
    if (bindingResult.hasErrors()) {
        //          message  
        System.out.println(bindingResult.getFieldError().getDefaultMessage());  
        return null;  
    }
    return roleMapper.addRole(role);
}
  :@NotNull、@NotEmpty @NotBlank  
@NotEmpty        
@NotBlank   String  
@NotNull          

8/2/2018 7:20:38 PM

좋은 웹페이지 즐겨찾기