建立数据库
查询数据服务器IP地址ip address
通过数据库连接工具建立连接
创建新库
字符集、排序规则的选择
字符集选用utf8,目前足够了也可以选用utfmb4,它向下兼容utf8能表示更多字符同时也占用更大的空间
排序规则选用utf8_bin区分大小写,不同场景下排序规则会影响查询效率
发现没有权限
select * from mysql.user \G
查看权限
之前搭建数据服务器的时候明明设置权限了,估计强制重启服务器时出了问题,重新赋下权限
grant all privileges on *.* to mysqluser@'%' with grant option;
flush privileges;
新建成功,执行脚本创建相应的表
创建项目
傻瓜式next操作
修改配置文件application.yml为yml类型
SpringBoot自带容器可以直接运行
连接数据库
pom添加相关依赖
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
yml配置文件内配置数据库信息
spring:
datasource:
url: jdbc:mysql://10.2.27.112/sell?characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8
username: mysqluser
password: MySQL_user123
创建与表结构对应的实体类PO
PO:persistent object 持久对象
POJO :plain ordinary java object 无规则简单java对象
BO:business object 业务对象
VO:value object 值对象 / view object 表现层对象
DTO(TO):Data Transfer Object 数据传输对象
DAO:data access object数据访问对象
@Entity//jpa注解,对应表关系
@Data//lombok自动生成get、set
@DynamicUpdate//更新插入时间
@DynamicInsert
public class ProductInfo {
@Id
private String productId;
private String productName;
private BigDecimal productPrice;
private Integer productStock;
private String productDescription;
private String productIcon;
private Integer productStatus;
private Integer categoryType;
private Date createTime;
private Date updateTime;
}
JPA
public interface ProductInfoRepository extends JpaRepository<ProductInfo, String> {}
创建测试类,测试数据库操作
@RunWith(SpringRunner.class)
@SpringBootTest
public class ProductInfoRepositoryTest {
@Autowired
private ProductInfoRepository repository;
@Test
public void insert() {
ProductInfo productInfo = new ProductInfo();
productInfo.setProductId("2");
productInfo.setProductName("商品2");
productInfo.setProductPrice(new BigDecimal(2));
productInfo.setProductStock(2);
productInfo.setCategoryType(2);
Assert.assertNotNull(repository.save(productInfo));
}
@Test
public void select() {
Assert.assertNotNull(repository.findById("1"));
}
@Test
public void update() {
ProductInfo productInfo=repository.findById("1").get();
productInfo.setProductName("商品11");
productInfo.setProductPrice(new BigDecimal(11));
productInfo.setProductStock(11);
productInfo.setCategoryType(11);
Assert.assertNotNull(repository.save(productInfo));
}
@Test
public void delete() {
ProductInfo productInfo=repository.findById("1").get();
repository.delete(productInfo);
}
}