环境说明:Windows10,STS,MySql,JPA持久层框架
本人建议尝试去使用IntelliJ IDEA,你会发现是个神器,如果网上找不到可用注册码,请留言,会回复的哦。
废话不多说,直接上图,中间会穿插说一些会遇到的问题及解决办法,各位看官稍稍有点耐心看完哈。
1.新建项目
注意下图红色框框内,Packaging 选择Jar
注意注意:Lombok是属于第三方插件,需要安装才可以使用,如果嫌弃麻烦,就不要引用此依赖,我也是用于使用注解方便。
如果想使用请点击这里,有详细的讲解。
然后Finish.项目结构
查看POM文件,刚刚选择的三个依赖,点击项目 选择Maven--Update Maven
到此,项目创建完毕。
2.数据库,Mysql,首先生成这个表,
DROP TABLE IF EXISTS `sys_order`;
CREATE TABLE `sys_order` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`order_id` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '订单编号',
`order_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '订单名称',
`order_price` decimal(10,2) DEFAULT NULL COMMENT '订单价格',
`order_type` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '订单类型',
`order_status` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '订单状态',
`order_number` int(11) DEFAULT NULL COMMENT '订单数量',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
3.开始配置数据库连接
我喜欢把配置文件类型改成.yml,你也可以不变动,但是写法不同哦,在此建议尽量用.yml形式,养成好习惯
#------------------------配置项目启动端口,默认8080-----------------------------
server:
port: 8090
#------------------------MySql配置-----------------------------
spring:
datasource:
url: jdbc:mysql://localhost:3306/aspuser?characterEncoding=utf8&serverTimezone=GMT%2B8
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver
#------------------------JPA配置-----------------------------
jpa:
generate-ddl: false
database: MYSQL
hibernate:
ddl-auto: none
show-sql: true
data:
jpa:
repositories:
enabled: true
项目结构层次
代码区:
1.Model.java
package com.portal.model;
import java.io.Serializable;
import java.math.BigDecimal;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
*
* @author lizhixian
* 这里 @Data、@Builder、@NoArgsConstructor、@AllArgsConstructor 是: lombok的注解,与JPA无
* 关, 引入lombok主要是为了快速开发
* 注: 若使用了@Builder注解、建议一定要使用 @NoArgsConstructor、@AllArgsConstructor注解,因
* 为@Builder注解是建造者模式,如果只使用了@Builder,而不使用@NoArgsConstructor
* 、@AllArgsConstructor注解的话,可能他会导致fastjson、jpa等出现异常
*
* 这里 @Entity 的作用是: 表明这是一个JPA实体
* 这里 @Table 的作用是: 指明这个JPA实体 对应 那一张表 name等于你自己数据库中的表名
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "sys_order")
public class SysOrderModel implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
/**
* 订单编号
*/
private String order_id;
/**
* 订单名称
*/
private String order_name;
/**
* 订单价格
*/
private BigDecimal order_price;
/**
* 订单类型
*/
private String order_type;
/**
* 订单状态
*/
private String order_status;
/**
* 订单数量
*/
private Integer order_number;
}
2.DAO.java
package com.portal.dao;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import com.portal.model.SysOrderModel;
//JpaRepository
//<实体类名称,主键类型>
@Repository
public interface SysOrderDao extends JpaRepository{
}
3.Service.java
package com.portal.service;
import java.util.List;
import com.portal.model.SysOrderModel;
public interface SysOrderService {
/**
* 插入/更新 Jpa方法中,保存和修改使用同一个方法,通过id,封装方法会判断是否有主键值,有即为
* 修改操作
* @param sModel
*/
SysOrderModel insert(SysOrderModel sModel);
/**
* 查询全部
*/
List select();
/**
* 根据id查询
* @param id
*/
SysOrderModel selectById(Integer id);
/**
* 删除
* @param id
*/
void delete(Integer id);
}
4.ServiceImpl.java
package com.portal.service.impl;
import java.util.List;
import javax.transaction.Transactional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.portal.dao.SysOrderDao;
import com.portal.model.SysOrderModel;
import com.portal.service.SysOrderService;
@Service
public class SysOrderServiceImpl implements SysOrderService{
@Autowired
private SysOrderDao _SysOrderDao;
/**
* 保存/修改
*/
@Override
@Transactional
public SysOrderModel insert(SysOrderModel sModel) {
return _SysOrderDao.save(sModel);
}
/**
* 查询全部
*/
@Override
@Transactional
public List select() {
return _SysOrderDao.findAll();
}
/**
* 根据id查询
*/
@Override
@Transactional
public SysOrderModel selectById(Integer id) {
return _SysOrderDao.findOne(id);
}
/**
* 删除
*/
@Override
@Transactional
public void delete(Integer id) {
_SysOrderDao.delete(id);
}
}
5.Test.java
package com.portal;
import java.math.BigDecimal;
import java.util.List;
import java.util.UUID;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import com.portal.model.SysOrderModel;
import com.portal.service.SysOrderService;
@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringbootOrderTestApplicationTests {
@Autowired
private SysOrderService sysService;
/**
* 保存
*/
@Test
public void insert() {
SysOrderModel sModel = new SysOrderModel();
sModel.setOrder_id(UUID.randomUUID().toString());
sModel.setOrder_name("奥利奥");
sModel.setOrder_number(10000);
BigDecimal bigDecimal = new BigDecimal("14.99");
sModel.setOrder_price(bigDecimal);
sModel.setOrder_status("销售中");
sModel.setOrder_type("食品类");
sysService.insert(sModel);
}
/**
* 查询全部
*/
@Test
public void select()
{
List list = sysService.select();
list.forEach(System.out::println);
}
/**
* 根据id查询
*/
@Test
public void selectById()
{
System.out.println(sysService.selectById(1));
}
/**
* 删除
*/
@Test
public void delete()
{
sysService.delete(2);
}
/**
* 修改
*/
@Test
public void update()
{
SysOrderModel sModel = new SysOrderModel();
sModel.setId(3);
sModel.setOrder_id(UUID.randomUUID().toString());
sModel.setOrder_name("不要奥利奥");
sModel.setOrder_number(10000);
BigDecimal bigDecimal = new BigDecimal("9.99");
sModel.setOrder_price(bigDecimal);
sModel.setOrder_status("已售罄");
sModel.setOrder_type("食品类");
sysService.insert(sModel);
}
}
相关Sql语句,在配置文件配置红色框框内,控制台会打印出来,可供参考调试