Trời cao cơm hộp hạng mục thường dùng chú giải + động thái sql

Thường dùng chú giải

Thường thấy chú giải phân tích phương pháp có hai loại:

  • Biên dịch kỳ trực tiếp rà quét: Biên dịch khí trong biên chế dịch Java số hiệu thời điểm rà quét đối ứng chú giải cũng xử lý, tỷ như nào đó phương pháp sử dụng @Override chú giải, biên dịch khí trong biên chế dịch thời điểm liền sẽ kiểm tra đo lường trước mặt phương pháp hay không trọng viết phụ loại đối ứng phương pháp.
  • Vận hành kỳ thông qua phản xạ xử lý: Giống dàn giáo trung tự mang chú giải ( tỷ như Spring dàn giáo @Value, @Component) đều là thông qua phản xạ tới tiến hành xử lý
    @Resource cùng @AutowiredĐều là làm bean rót vào khi sử dụng, kỳ thật **@Resource cũng không phải Spring chú giải **, nó bao là javax.annotation.Resource, yêu cầu dẫn vào, nhưng là Spring duy trì nên chú giải rót vào.
    Cái này blog đối thường dùng chú giải giảng thực kỹ càng tỉ mỉ thả có ví dụSpringBoot thường dùng 50 cái chú giải

Dưới là căn cứ trời cao cơm hộp tới sửa sang lại chú giải cùng sử dụng ví dụ thực tế.
1.@ResponseBody
Tác dụng kỳ thật làĐem java đối tượng chuyển vì json cách thức số liệu,Sau đó trực tiếp viết nhập HTTP response body trung;
@RequestMapping sau, phản hồi giá trị thông thường phân tích vì nhảy chuyển đường nhỏ, nhưng là hơn nữa @ResponseBody sau phản hồi kết quả sẽ không bị phân tích vì nhảy chuyển đường nhỏ, mà là trực tiếp viết nhập HTTP response body trung.
2.@RestController=@ReponseBody+@Controller
Ở loại thượng dùng @RestController, này nội sở hữu phương pháp đều sẽ cam chịu hơn nữa @ResponseBody, cũng chính là cam chịu phản hồi JSON cách thức.Đem khống chế khí phương pháp phản hồi giá trị thay đổi vì JSON cách thức, cũng lấy HTTP hưởng ứng phương thức phản hồi cấp bản cài đặt.
@RestController cùng @ControllerĐiểm giống nhau là đều dùng để tỏ vẻ Spring nào đó loại hay không có thể tiếp thu HTTP thỉnh cầu, hai người khác nhau: @RestController vô pháp phản hồi chỉ định giao diện, mà @Controller có thể; người trước có thể trực tiếp phản hồi số liệu, người sau yêu cầu @ResponseBody phụ trợ.

@RestControllerNgón giữa định Bean tên.

@RestController("adminShopController")// vì tránh cho hai cái Bean đều kêu shopController xung đột, cho nên dùng vì phân chia hai người bọn họ
@RequestMapping("/admin/shop")
@Slf4j
@Api(tags="Cửa hàng tương quan tiếp lời")
publicclassShopController{
}
@RestController("UserShopController")
@RequestMapping("/user/shop")
@Api(tags="Cửa hàng tương quan tiếp lời")
@Slf4j
publicclassShopController{
}

3.@RequestBodyTác dụng ở hình tham danh sách thượng,Dùng cho đem trước đài gửi đi lại đây cố định cách thức số liệu 【xml cách thức hoặc là json chờ 】 phong trang vì đối ứng JavaBean đối tượng, phong trang khi sử dụng đến một cái đối tượng là hệ thống cam chịu phối trí HttpMessageConverter tiến hành phân tích, sau đó phong trang đến hình tham thượng.
Chính làĐem JSON cách thức số liệu phong trang đến thật thể loại trung
4.@TransactionalLà Spring dàn giáo có ích với thanh minh thức sự vụ quản lý mấu chốt chú giải. Thông qua sử dụng @Transactional chú giải, chúng ta có thể càng thêm phương tiện mà quản lýSự vụ,Bảo đảm số liệu nhất trí tính cùng đáng tin cậy tính. Dùng cho thanh minh thức sự vụ quản lý **, bảo đảm phương pháp hoặc loại trung thao tác ở cùng chuyện này vụ trung chấp hành **.
@Transactional tác dụng phạm vi phương pháp: Đề cử đem chú giải sử dụng với phương pháp thượng, bất quá yêu cầu chú ý chính là: Nên chú giải chỉ có thể ứng dụng đến public phương pháp thượng, nếu không không có hiệu lực. Loại: Nếu cái này chú giải sử dụng ở loại thượng nói, cho thấy nên chú giải đối nên loại trung sở hữu public phương pháp đều có hiệu lực. Tiếp lời: Không đề cử ở tiếp lời thượng sử dụng.

@Transactional chú giải sử dụng tường giải

( 1 )@TransactionalTác dụng phạm vi:
Phương pháp: Đề cử đem chú giải sử dụng với phương pháp thượng, bất quá yêu cầu chú ý chính là: Nên chú giải chỉ có thể ứng dụng đến public phương pháp thượng, nếu không không có hiệu lực.
Loại: Nếu cái này chú giải sử dụng ở loại thượng nói, cho thấy nên chú giải đối nên loại trung sở hữu public phương pháp đều có hiệu lực.
Tiếp lời: Không đề cử ở tiếp lời thượng sử dụng.
( 2 ) thường dùng phối trí tham số
在这里插入图片描述
propagation đại biểu sự vụ truyền bá hành vi, cam chịu giá trị vì Propagation.REQUIRED, mặt khác thuộc tính tin tức như sau:

  • Propagation.REQUIRED:Nếu trước mặt tồn tại sự vụ, tắc gia nhập nên sự vụ, nếu trước mặt không tồn tại sự vụ, tắc sáng tạo một cái tân sự vụ.( nói cách khác nếu A phương pháp cùng B phương pháp đều tăng thêm chú giải, ở cam chịu truyền bá hình thức hạ, A phương pháp bên trong thuyên chuyển B phương pháp, sẽ đem hai cái phương pháp sự vụ xác nhập vì một chuyện vụ )
  • Propagation.SUPPORTS: Nếu trước mặt tồn tại sự vụ, tắc gia nhập nên sự vụ; nếu trước mặt không tồn tại sự vụ, tắc lấy phi sự vụ phương thức tiếp tục vận hành
  • Propagation.MANDATORY: Nếu trước mặt tồn tại sự vụ, tắc gia nhập nên sự vụ; nếu trước mặt không tồn tại sự vụ, tắc tung ra dị thường.
  • Propagation.REQUIRES_NEW:Một lần nữa sáng tạo một cái tân sự vụ,Nếu trước mặt tồn tại sự vụ, tạm dừng trước mặt sự vụ. ( đương loại A trung a phương pháp dùng cam chịu
    Propagation.REQUIRED hình thức, loại B trung b phương pháp hơn nữa chọn dùng Propagation.REQUIRES_NEW hình thức, sau đó ở a phương pháp trung thuyên chuyển b phương pháp thao tác cơ sở dữ liệu, nhưng mà a phương pháp tung ra dị thường sau, b phương pháp cũng không có tiến hành hồi lăn,Bởi vì Propagation.REQUIRES_NEW sẽ tạm dừng a phương pháp sự vụ)
  • Propagation.NOT_SUPPORTED: Lấy phi sự vụ phương thức vận hành, nếu trước mặt tồn tại sự vụ, tạm dừng trước mặt sự vụ.
  • Propagation.NEVER: Lấy phi sự vụ phương thức vận hành, nếu trước mặt tồn tại sự vụ, tắc tung ra dị thường.
  • Propagation.NESTED:Cùng Propagation.REQUIRED hiệu quả giống nhau.

( 3 ) cùng cái loại trung phương pháp thuyên chuyển, dẫn tới@TransactionalMất đi hiệu lực
Khai phá trung tránh không được sẽ đối cùng cái loại bên trong phương pháp thuyên chuyển, tỷ như có một cái loại Test, nó một cái phương pháp A, A lại thuyên chuyển bổn loại phương pháp B ( bất luận phương pháp B là dùng public vẫn là private tân trang ), nhưng phương pháp A không có thanh minh chú giải sự vụ, mà B phương pháp có. Tắc phần ngoài thuyên chuyển phương pháp A lúc sau, phương pháp B sự vụ là sẽ không có tác dụng. Đây cũng là thường xuyên phạm sai lầm một chỗ.
( 4 ) @Transactional chú giải thuộc tính rollbackFor thiết trí sai lầm
rollbackFor có thể chỉ định có thể kích phát sự vụ hồi lăn dị thường loại hình. Spring cam chịu tung ra chưa kiểm tra unchecked dị thường ( kế thừa tự RuntimeException dị thường ) hoặc là Error mới hồi lăn sự vụ; mặt khác dị thường sẽ không kích phát hồi lăn sự vụ. Nếu ở sự vụ trung tung ra mặt khác loại hình dị thường, nhưng lại kỳ vọng Spring có thể hồi lăn sự vụ, liền yêu cầu chỉ định rollbackFor thuộc tính.
在这里插入图片描述
Nếu tại mục tiêu phương pháp trung tung ra dị thường là rollbackFor chỉ định dị thường tử loại, sự vụ đồng dạng sẽ hồi lăn.
Cho nên giống nhau sử dụng@Transactional(rollbackFor = Exception.class)Là được, nhưng có thể căn cứ nghiệp vụ tự định nghĩa dị thường loại

Sự vụ

( 1 )Sự vụLà logic thượng một tổ thao tác, hoặc là đều chấp hành, hoặc là đều không chấp hành.
( 2 ) sự vụ đặc tính ( ACID ):
Nguyên tử tính ( Atomicity ): Sự vụ là nhỏ nhất chấp hành đơn vị, không cho phép phân cách. Sự vụ nguyên tử tính bảo đảm động tác hoặc là toàn bộ hoàn thành, hoặc là hoàn toàn không có tác dụng;
Nhất trí tính ( Consistency ): Chấp hành sự vụ trước sau, số liệu bảo trì nhất trí, tỷ như chuyển khoản nghiệp vụ trung, vô luận sự vụ hay không thành công, chuyển khoản giả cùng thu khoản người tổng ngạch hẳn là bất biến;
Cách ly tính ( Isolation ): Đồng phát phỏng vấn cơ sở dữ liệu khi, một người dùng sự vụ không bị mặt khác văn phòng quấy nhiễu, các đồng phát sự vụ chi gian cơ sở dữ liệu là độc lập;
Kéo dài tính ( Durability ): Một chuyện vụ bị đệ trình lúc sau. Nó đối số liệu kho trung số liệu thay đổi là kéo dài, cho dù cơ sở dữ liệu phát sinh trục trặc cũng không nên đối này có bất luận cái gì ảnh hưởng.

Chỉ có bảo đảm xong việc vụ kéo dài tính, nguyên tử tính, cách ly tính lúc sau, nhất trí tính mới có thể được đến bảo đảm. Nói cách khác A, I, D là thủ đoạn, C là mục đích!
( 3 ) Spring duy trì hai loại phương thức sự vụ quản lý
【1】 biên thể thức sự vụ quản lý: Thông quaTransactionTemplate hoặc là TransactionManagerTay động quản lý sự vụ, thực tế ứng dụng trung rất ít sử dụng
【2】 thanh minh thức sự vụ quản lý: Thực tế là thông qua AOP thực hiện ( căn cứ vào @Transactional toàn chú giải phương thức sử dụng nhiều nhất )

5.@RequestMappingChiếu rọi thỉnh cầu URL cùng xử lý phương pháp.Nhảy chuyển đường nhỏ
6.@GetMappingDùng cho chiếu rọi HTTP GET thỉnh cầu.
7.@PostMappingDùng cho chiếu rọi HTTP POST thỉnh cầu.
8.@RequestParamDùng cho thu hoạch thỉnh cầu tham số giá trị.

@DeleteMapping
@ApiOperation("Thái phẩm phê lượng xóa bỏ")
publicResultdelete(@RequestParamList<Long>ids){// chú giải @RequestParam, có thể đem địa chỉ lan trung nhiều con số tham số lấy ra ra tới sau đó biến thành List tập hợp.
log.info("Thái phẩm phê lượng xóa bỏ: {}",ids);
dishService.deleteBatch(ids);
returnResult.success();
}

在这里插入图片描述
9.@ConfigurationPropertiesChú giải đại biểu trước mặt loại là một cái phối trí thuộc tính loại, tác dụng là: Phong lắp ráp trí văn kiện trung một ít phối trí hạng.
Nguyên lý chính là: Thông qua phối trí thuộc tính loại, đem phối trí văn kiện trung phối trí hạng, phong giả dạng làm một cái loại, sau đó thông qua @Autowired chú giải rót vào đến muốn sử dụng địa phương.
10. Lấy chính là đường nhỏ tham số, thêm chú giải@PathVariable,Nếu cùng đường nhỏ tham số bất đồng danh, liền phải thêm dấu móc song dấu ngoặc kép nói rõ lấy chính là cái nào đường nhỏ tham số@PathVariable( "status" );Nếu cùng tên, liền không cần thêm.

@PostMapping("/status/{status}")
@ApiOperation("Bắt đầu dùng cấm dùng công nhân tài khoản")
publicResultstartOrStop(@PathVariableIntegerstatus,Longid){
log.info("Bắt đầu dùng cấm dùng công nhân tài khoản: {},{}",status,id);
employeeService.startOrStop(status,id);
returnResult.success();
}
  1. AOP tương quan chú giải
    Thiết nhập điểm:@PointcutBên trong viết chính là đối này đó phương pháp tiến hành chặn lại, muốn thỏa mãn 2 điểm:
    ① cần thiết là mapper hạ sở hữu loại phương pháp,
    ② còn phải có AutoFill cái này chú giải.
    Ở đối mặt cắt định nghĩa trung cộng sử dụng@Pointcut( "execution(* com.sky.mapper.*.*(..)) && @annotation(com.sky.annotation.AutoFill)" )Nơi này chỉ định sử dụng bao phạm vi cùng ở có chú giải đánh dấu phương pháp thượng.

mapper trung sử dụng thí dụ mẫu:

@AutoFill(OperationType.UPDATE)
voidupdate(Employeeemployee);

( 1 ) sáng tạo tự định nghĩa chú giải
annotation.AutoFill.java chú giải loại
@Target(ElementType.METHOD)// chỉ định chú giải chỉ có thể thêm tái phương pháp thượng,@Retention(RetentionPolicy.RUNTIME)Vận hành khi
Target chú giải chỉ định hơn nữa cái gì mặt trên, Retention chú giải chỉ định khi nào dùng,

@Target(ElementType.METHOD)// chỉ định chú giải chỉ có thể thêm tái phương pháp thượng
@Documented
@Retention(RetentionPolicy.RUNTIME)
public@interfaceAutoFill{
// thông qua cái cử - chỉ định trước mặt thuộc tính OperationType
// cơ sở dữ liệu thao tác loại hình OperationType: Liền hai loại Update cùng Insert
OperationTypevalue();
}

( 2 ) mặt cắt loại aspect.AutoFillAspect.java tự động bỏ thêm vào cắt miếng loại

@Aspect
@Component
@Slf4j
publicclassAutoFillAspect{
// cái này trong bao loại cùng phương pháp cùng hơn nữa @AutoFill chú giải
@Pointcut("execution(* com.sky.mapper.*.*(..)) && @annotation(com.sky.annotation.AutoFill)")
publicvoidautoFillPointCut(){
}
// trước trí thông tri, ở sql chấp hành trước hơn nữa tức ( công cộng tự đoạn phú giá trị )
@Before("autoFillPointCut()")// đương xứng đôi thượng tiếp điểm biểu đạt thức chấp hành cái này
publicvoidautoFill(JoinPointjoinPoint){// cắm vào liên tiếp điểm tham số giá trị
//1. Thu hoạch đến trước mặt bị lan tiệt phương pháp thượng cơ sở dữ liệu thao tác loại hình
//2. Thu hoạch đến trước mặt bị chặn lại phương pháp tham số -- thật thể đối tượng
//3. Chuẩn bị phú giá trị số liệu
//4. Căn cứ trước mặt bất đồng thao tác loại hình, vì đối ứng thuộc tính thông qua phản xạ tới phú giá trị
}
}

12.Swagger sử dụng chú giải
在这里插入图片描述
@Api(tags = “Công nhân tương quan tiếp lời” )

@RestController
@RequestMapping("/admin/employee")
@Slf4j
@Api(tags="Công nhân tương quan tiếp lời")//tags dùng để miêu tả loại tác dụng
publicclassEmployeeController{

@ApiOperation( “Công nhân đăng nhập” )

@PostMapping("/login")
@ApiOperation("Công nhân đăng nhập")
publicResult<EmployeeLoginVO>login(@RequestBodyEmployeeLoginDTOemployeeLoginDTO){

@ApiModel(description = “Công nhân đăng nhập khi truyền lại số liệu mô hình” )
@ApiModelProperty( “Username” )

@Data
@ApiModel(description="Công nhân đăng nhập khi truyền lại số liệu mô hình")
publicclassEmployeeLoginDTOimplementsSerializable{

@ApiModelProperty("Username")
privateStringusername;

@ApiModelProperty("Mật mã")
privateStringpassword;

}

13.@Bean// hạng mục khởi động khi liền sẽ thuyên chuyển phương pháp sáng tạo đối tượng
@ConditionalOnMissingBean// bảo đảm Spring vật chứa chỉ có một cái Util đối tượng, điều kiện đối tượng đương không Bean khi lại sáng tạo
Chú ý muốn return chính là cái này tân sáng tạo đối tượng, bằng không mặt sau tự động rót vào sẽ thất bại, nơi này chủ yếu mục đích chính là sáng tạo Bean đối tượng

@Bean// hạng mục khởi động khi liền sẽ thuyên chuyển phương pháp sáng tạo đối tượng
@ConditionalOnMissingBean// bảo đảm Spring vật chứa chỉ có một cái Util đối tượng, điều kiện đối tượng đương không Bean khi lại sáng tạo
publicAliOssUtilaliOssUtil(AliOssPropertiesaliOssProperties){
returnnewAliOssUtil(aliOssProperties.getEndpoint(),
aliOssProperties.getAccessKeyId(),
aliOssProperties.getAccessKeySecret(),
aliOssProperties.getBucketName());
}

Bởi vì đề cập đến nhiều biểu, cho nên tăng thêm@TransactionalChú giải
( yêu cầu ở khởi động loại thượng tăng thêm@EnableTransactionManagementChú giải ): Mở ra chú giải phương thức sự vụ quản lý

@Transactional// đề cập bao nhiêu cái số liệu biểu, yêu cầu bảo đảm số liệu nhất trí tính, yêu cầu sự vụ chú giải -- bảo đảm nguyên tử tính, toàn thành công hoặc hoàn toàn biến mất bại
@Override
publicvoidsaveWithFlavor(DishDTOdishDTO){
// bắt đầu tân tăng thái phẩm
}

15.Spring Cache dàn giáo, thực hiện căn cứ vào chú giải hoãn tồn công năng.
在这里插入图片描述
Đều là ở Controller tầng:
( 1 )@CachePutCái này chú thích đem phương pháp phản hồi kết quả, user đối tượng bảo tồn đến Redis trung, đồng thời sinh thành động thái key, userCache::user.id

@CachePut(cacheNames="userCache",key="abs")//Spring Cache hoãn tồn số liệu, key sinh thành: userCache:abc
@CachePut(cacheNames="userCache",key="#user.id")// cùng hình tham bảo trì nhất trí, hoặc là
@CachePut(cacheNames="userCache",key="#result.id")// phản hồi giá trị result, hoặc là
@CachePut(cacheNames="userCache",key="#p0.id")// đạt được trước mặt phương pháp cái thứ nhất tham số user, hoặc là
@CachePut(cacheNames="userCache",key="#a0.id")// đạt được trước mặt phương pháp cái thứ nhất tham số user, hoặc là
@CachePut(cacheNames="userCache",key="#root.args[0].id")// đạt được trước mặt phương pháp cái thứ nhất tham số user
publicUsersave(@RequestBodyUseruser){
userMapper.insert(user);
returnresult;
}

Cắm vào xong số liệu sau, cơ sở dữ liệu sinh thành chủ kiện giá trị sẽ tự động phú cấp user đối tượng
Redis có thể hình thành thụ hình kết cấu

( 2 )@CacheableChú giải

@Cacheable(cahceNames="userCache"),key="#id")//key sinh thành, userCache::10
publicUsergetById(Longid){
Useruser=userMapper.getById(id);
returnuser;
}

( 3 )@CacheEvictMột lần rửa sạch một cái số liệu

@CacheEvict(cahceNames="userCache"),key="#id")//key sinh thành, userCache::10
publicvoiddeleteById(Longid){
userMapper.deleteById(id);
}

Thanh trừ sở hữu số liệu

@CacheEvict(cahceNames="userCache"),allEntries=true)//userCache hạ sở hữu kiện giá trị đối
publicvoiddeleteAlld(){
userMapper.deleteAll();
}

Động thái sql

insert phản hồi sinh thành chủ kiện giá trị

<insertid="insert"useGeneratedKeys="true"keyProperty="id"><!-- sinh ra chủ kiện giá trị sẽ phú cấp id thuộc tính -->
insert into dish (name, category_id, price, image, description, create_time, update_time, create_user, update_user, status)
values (#{name}, #{categoryId}, #{price}, #{image}, #{description}, #{createTime}, #{updateTime}, #{createUser}, #{updateUser}, #{status})
</insert>

mapper:
Không cần chú giải, động thái sql sử dụng ánh xạ văn kiện
Ở resource folder đều là xml văn kiện

select

<select>Nhãn id là mapper trung đối ứng phương pháp danh, resultType là phản hồi tham số loại hình.

<select id="selectByPage"resultType="com.sky.entity.Employee">
select*from employee
<where>
<iftest="name!=null and name!=''">
and name likeconcat('%',#{name},'%')<!--Mơ hồ tuần tra like-->
</if>
</where>
order by create_time desc<!--Sáng tạo thời gian hàng tự-->
</select>

Hơi phức tạp một chút select

Động thái sql
sql câu nói:Tả ngoại liên tiếp:Đem bên trái biểu sở hữu hạng cùng bên phải biểu làm liên tiếp
Đem đồ ăn cùng chủng loại hai cái biểu dựa theo chủng loại id liên tiếp lên, lấy này đạt được chủng loại tên

selectd.*,c.nameascategoryNamefromdish dleftouterjoincategory cond.category_id=c.id

Bởi vì chủng loại tên điều tra ra cũng kêu name, cho nên cấp tự đoạn khởi biệt danh

<selectid="pageQuery"resultType="com.sky.vo.DishVO">
select d.*,c.name categoryName from dish d left join category c on d.category_id = c.id
<where><!-- rốt cuộc động thái sql. Cho nó dùng where động thái đua thượng DTO 3 cái thuộc tính -->
<iftest="categoryId! =null">d.category_id=#{categoryId}</if>
<iftest="status!=null">d.status=#{status}</if>
<iftest="name!=null">d.name like concat('%',#{name},'%')</if>
</where>
order by d.create_time desc<!-- căn cứ sáng tạo thời gian hàng tự -->
</select>

delete

( 1 ) sql
Dựa theo đồ ăn id tra toàn bộ tin tức, lấy này được đến hay không ở bán

@Select("select * from dish where id=#{id}")
Dish getById(Long id);

( 2 ) sql
Hay không có phần ăn liên hệ
// select setmeal id from setmeal dish where dish_id in (1,2,3,4)
List queryUnsale(List ids); truyền vào thái phẩm List danh sách, dùng động thái sql tra mỗi cái thái phẩm hay không có phần ăn
SetMealDishMapper.xml

<selectid="getSetmealIdsByDishIds"resultType="java.lang.Long">
select setmeal_id from setmeal_dish where dish_id in
<foreachcollection="dishIds"separator=","item="id"open="("close=")">
#{id}
</foreach>
</select>

foreach tuần hoàn, collection là tập hợp, item là từng cái hạng, separator là phân cách ký hiệu, open là bắt đầu ký hiệu, close là kết thúc ký hiệu. Mỗi cái nguyên tố dùng dấu phẩy phân cách, sau đó dùng dấu móc nhọn quát lên.
(3) xóa bỏ đồ ăn — truyền vào vì danh sách

<deleteid="deleteBatch">
delete from dish where id in
<foreachcollection="ids"item="id"separator=","open="("close=")">
#{id}
</foreach>
</delete>

(4) xóa bỏ khẩu vị — truyền vào vì danh sách

<deleteid="deleteBatchByDishIds">
delete from dish_flavor where dish_id in
<foreachcollection="ids"item="id"open="("close=")"separator=",">
#{id}
</foreach>
</delete>

update

<updateid="update">
update dish
<set>
<iftest="name!=null">name=#{name},</if>
<iftest="categoryId!=null">category_id=#{categoryId},</if>
<iftest="price!=null">price=#{price},</if>
<iftest="image!=null">image=#{image},</if>
<iftest="description!=null">description=#{description},</if>
<iftest="status!=null">status=#{status},</if>
<iftest="updateTime!=null">update_time=#{updateTime},</if>
<iftest="updateUser!=null">update_user=#{updateUser},</if>
</set>
where id=#{id}
</update>
  • 20
    Điểm tán
  • Dẫm
  • 9
    Cất chứa
    Cảm thấy cũng không tệ lắm? Một kiện cất chứa
  • 0
    Bình luận

“Tương quan đề cử” đối với ngươi có trợ giúp sao?

  • Phi thường không trợ giúp
  • Không trợ giúp
  • Giống nhau
  • Có trợ giúp
  • Phi thường có trợ giúp
Đệ trình
Bình luận
Tăng thêm bao lì xì

Thỉnh điền bao lì xì chúc phúc ngữ hoặc tiêu đề

Cái

Bao lì xì cái số nhỏ nhất vì 10 cái

Nguyên

Bao lì xì kim ngạch thấp nhất 5 nguyên

Trước mặt ngạch trống3.43Nguyên Đi trước nạp phí >
Cần chi trả:10.00Nguyên
Thành tựu một trăm triệu kỹ thuật người!
Lĩnh sau ngươi sẽ tự động trở thành bác chủ cùng bao lì xì chủ fans Quy tắc
hope_wisdom
Phát ra bao lì xì
Thật phóNguyên
Sử dụng ngạch trống chi trả
Điểm đánh một lần nữa thu hoạch
Quét mã chi trả
Tiền bao ngạch trống 0

Để khấu thuyết minh:

1. Ngạch trống là tiền bao nạp phí giả thuyết tiền, dựa theo 1:1 tỉ lệ tiến hành chi trả kim ngạch để khấu.
2. Ngạch trống vô pháp trực tiếp mua sắm download, có thể mua sắm VIP, trả phí chuyên mục cập chương trình học.

Ngạch trống nạp phí