Guns 프레임 워 크 학습 기록 - 1 - 프레임 워 크 구축 + 주문 관리 CURD
12636 단어 코드 노트Guns 프레임 워 크 학습
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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Guns 프레임 워 크 학습 기록 - 1 - 프레임 워 크 구축 + 주문 관리 CURDmp 의 코드 생 성기: my batis - plus 코드 생 성 기 는 주로 dao, model, mapper 를 생 성 하 는 데 사 용 됩 니 다.자세 한 내용 은 살 펴 보 세 요.http://mp.baomi...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.