CREATE TABLE `user` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `name` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, `age` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci 创建一个聚簇索引
时间: 2023-06-16 08:02:40 浏览: 108
在 MySQL 中,聚簇索引是将数据行物理上存储在索引中的索引类型。因此,在创建表时,可以通过指定存储引擎和其他选项来创建聚簇索引。在 InnoDB 存储引擎中,使用以下语句可以创建一个具有聚簇索引的 user 表:
```
CREATE TABLE `user` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
`age` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
```
这里的 `PRIMARY KEY` 关键字用于指定 `id` 字段作为表的主键,并且会自动创建一个聚簇索引。请注意,由于聚簇索引会将数据行物理上存储在索引中,因此在创建表时应该谨慎选择索引字段,避免过度使用聚簇索引导致性能问题。
相关问题
CREATE TABLE base_goods_channel ( id bigint unsigned NOT NULL AUTO_INCREMENT COMMENT 'id', model varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '商品型号', goods_id bigint NOT NULL COMMENT '商品ID', operator varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '操作人', create_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', update_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', remark varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '备注', type int NOT NULL DEFAULT '0' COMMENT '类型 1、现货2、预售', PRIMARY KEY (id) USING BTREE, KEY idx_model (model) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb3 ROW_FORMAT=DYNAMIC COMMENT='商品基本库关联渠道商品';根据表结构生成java的实体类,持久层,业务层,并添加注释
以下是根据表结构生成的Java实体类,持久层和业务层代码,并添加了注释:
实体类BaseGoodsChannel.java:
```java
/**
* 商品基本库关联渠道商品
*/
public class BaseGoodsChannel {
private Long id; // id
private String model; // 商品型号
private Long goodsId; // 商品ID
private String operator; // 操作人
private Date createTime; // 创建时间
private Date updateTime; // 修改时间
private String remark; // 备注
private Integer type; // 类型 1、现货2、预售
// getter和setter方法
// ...
}
```
持久层BaseGoodsChannelMapper.java:
```java
/**
* 商品基本库关联渠道商品Mapper
*/
public interface BaseGoodsChannelMapper {
/**
* 新增商品基本库关联渠道商品
* @param baseGoodsChannel 商品基本库关联渠道商品实体类
* @return 影响的行数
*/
int insert(BaseGoodsChannel baseGoodsChannel);
/**
* 根据id查询商品基本库关联渠道商品
* @param id 商品基本库关联渠道商品id
* @return 商品基本库关联渠道商品实体类
*/
BaseGoodsChannel selectById(Long id);
/**
* 根据商品型号查询商品基本库关联渠道商品
* @param model 商品型号
* @return 商品基本库关联渠道商品实体类列表
*/
List<BaseGoodsChannel> selectByModel(String model);
/**
* 更新商品基本库关联渠道商品
* @param baseGoodsChannel 商品基本库关联渠道商品实体类
* @return 影响的行数
*/
int update(BaseGoodsChannel baseGoodsChannel);
/**
* 根据id删除商品基本库关联渠道商品
* @param id 商品基本库关联渠道商品id
* @return 影响的行数
*/
int deleteById(Long id);
/**
* 根据商品型号删除商品基本库关联渠道商品
* @param model 商品型号
* @return 影响的行数
*/
int deleteByModel(String model);
}
```
业务层BaseGoodsChannelService.java:
```java
/**
* 商品基本库关联渠道商品Service
*/
public interface BaseGoodsChannelService {
/**
* 新增商品基本库关联渠道商品
* @param baseGoodsChannel 商品基本库关联渠道商品实体类
* @return 影响的行数
*/
int addBaseGoodsChannel(BaseGoodsChannel baseGoodsChannel);
/**
* 根据id查询商品基本库关联渠道商品
* @param id 商品基本库关联渠道商品id
* @return 商品基本库关联渠道商品实体类
*/
BaseGoodsChannel getBaseGoodsChannelById(Long id);
/**
* 根据商品型号查询商品基本库关联渠道商品
* @param model 商品型号
* @return 商品基本库关联渠道商品实体类列表
*/
List<BaseGoodsChannel> getBaseGoodsChannelByModel(String model);
/**
* 更新商品基本库关联渠道商品
* @param baseGoodsChannel 商品基本库关联渠道商品实体类
* @return 影响的行数
*/
int updateBaseGoodsChannel(BaseGoodsChannel baseGoodsChannel);
/**
* 根据id删除商品基本库关联渠道商品
* @param id 商品基本库关联渠道商品id
* @return 影响的行数
*/
int deleteBaseGoodsChannelById(Long id);
/**
* 根据商品型号删除商品基本库关联渠道商品
* @param model 商品型号
* @return 影响的行数
*/
int deleteBaseGoodsChannelByModel(String model);
}
```
BaseGoodsChannelServiceImpl.java:
```java
/**
* 商品基本库关联渠道商品Service实现类
*/
@Service
public class BaseGoodsChannelServiceImpl implements BaseGoodsChannelService {
@Autowired
private BaseGoodsChannelMapper baseGoodsChannelMapper;
/**
* 新增商品基本库关联渠道商品
* @param baseGoodsChannel 商品基本库关联渠道商品实体类
* @return 影响的行数
*/
@Override
public int addBaseGoodsChannel(BaseGoodsChannel baseGoodsChannel) {
return baseGoodsChannelMapper.insert(baseGoodsChannel);
}
/**
* 根据id查询商品基本库关联渠道商品
* @param id 商品基本库关联渠道商品id
* @return 商品基本库关联渠道商品实体类
*/
@Override
public BaseGoodsChannel getBaseGoodsChannelById(Long id) {
return baseGoodsChannelMapper.selectById(id);
}
/**
* 根据商品型号查询商品基本库关联渠道商品
* @param model 商品型号
* @return 商品基本库关联渠道商品实体类列表
*/
@Override
public List<BaseGoodsChannel> getBaseGoodsChannelByModel(String model) {
return baseGoodsChannelMapper.selectByModel(model);
}
/**
* 更新商品基本库关联渠道商品
* @param baseGoodsChannel 商品基本库关联渠道商品实体类
* @return 影响的行数
*/
@Override
public int updateBaseGoodsChannel(BaseGoodsChannel baseGoodsChannel) {
return baseGoodsChannelMapper.update(baseGoodsChannel);
}
/**
* 根据id删除商品基本库关联渠道商品
* @param id 商品基本库关联渠道商品id
* @return 影响的行数
*/
@Override
public int deleteBaseGoodsChannelById(Long id) {
return baseGoodsChannelMapper.deleteById(id);
}
/**
* 根据商品型号删除商品基本库关联渠道商品
* @param model 商品型号
* @return 影响的行数
*/
@Override
public int deleteBaseGoodsChannelByModel(String model) {
return baseGoodsChannelMapper.deleteByModel(model);
}
}
```
注:以上代码仅供参考,具体实现可根据具体情况进行调整。
CREATE TABLE order_cancel_late_record ( id bigint unsigned NOT NULL AUTO_INCREMENT, created_at datetime(3) DEFAULT NULL, order_id bigint unsigned NOT NULL COMMENT '订单号', operation varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '操作人', approval_no varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '审批单号', remark varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '备注', PRIMARY KEY (id) USING BTREE, KEY order_id (order_id) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='订单免除滞纳金记录';根据表结构,生成java的crud
以下是生成的 Java CRUD 代码,基于 Spring Boot + MyBatis-Plus 框架:
```java
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import java.util.Date;
@Data
@TableName("order_cancel_late_record")
public class OrderCancelLateRecord {
@TableId(type = IdType.AUTO)
private Long id;
@TableField(fill = FieldFill.INSERT)
private Date createdAt;
@TableField("order_id")
private Long orderId;
private String operation;
@TableField("approval_no")
private String approvalNo;
private String remark;
}
```
```java
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface OrderCancelLateRecordMapper extends BaseMapper<OrderCancelLateRecord> {
}
```
```java
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
@Service
public class OrderCancelLateRecordService extends ServiceImpl<OrderCancelLateRecordMapper, OrderCancelLateRecord> {
}
```
```java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/orders/cancel-late-records")
public class OrderCancelLateRecordController {
@Autowired
private OrderCancelLateRecordService orderCancelLateRecordService;
@PostMapping
public void create(@RequestBody OrderCancelLateRecord record) {
orderCancelLateRecordService.save(record);
}
@GetMapping("/{id}")
public OrderCancelLateRecord getById(@PathVariable Long id) {
return orderCancelLateRecordService.getById(id);
}
@PutMapping("/{id}")
public void updateById(@PathVariable Long id, @RequestBody OrderCancelLateRecord record) {
record.setId(id);
orderCancelLateRecordService.updateById(record);
}
@DeleteMapping("/{id}")
public void deleteById(@PathVariable Long id) {
orderCancelLateRecordService.removeById(id);
}
}
```
以上代码中,`OrderCancelLateRecord` 对应数据库表中的一行记录,使用 MyBatis-Plus 注解来映射数据库表结构。`OrderCancelLateRecordMapper` 是 MyBatis-Plus 自动生成的 Mapper 接口,继承自 `BaseMapper`,提供了 CRUD 方法。`OrderCancelLateRecordService` 是 Service 层的实现类,继承自 `ServiceImpl`,以便使用 MyBatis-Plus 提供的通用 Service 方法。`OrderCancelLateRecordController` 是一个简单的 RESTful 接口,用于对订单免除滞纳金记录进行增删改查操作。
阅读全文