一、使用IDEA
新建项目 new project
Spring Initializr
目录解释:
templates自动生成,放着spring-boot的模版,现在都是前后端分离,一般不用这个,这个性能不好,就算是写jsp也不用模版
application.properties是配置文件,建议使用.yml文件,简单不说格式还很舒服
TestApplication main方法启动服务
其他的都一眼看懂了
除了main方法启动,windows和linux都可以使用命令行启动,本地是windows的,所以进入项目目录内通过 mvnw.cmd spring-boot:run启动,linux应该直接mvn……即可,网上可以查阅
二、配置文件
server:
port: 8080 #端口 默认是8080
context-path: /man #requestMapping一样,首路径拦截
user:
cupSize: B # 业务中可以通过 @Value("${girl.age}")
age: 18
# 如果需要注入到对象中,则在对象中增加@ConfigurationProperties(prefix = "user") 前缀是user
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/test
driver-class-name: com.mysql.jdbc.Driver
username: root
password: root
jpa:
show-sql: true #打印sql语句
hibernate:
ddl-auto: update
#create 每次启动都新建表
#update 每次判断是否存在,不删除原有数据,最常用
#create-drop 应用停止就删除表
#none没有操作
#validate 验证是否一致,不一致报错
三、pom.xml文件
默认生成的包含了web和test以及一个manven插件
其他的:jpa和mysql是和数据库相关
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
四、实体类,项目启动自动建表(配置文件)
@Entity
public class Man {
@Id
@GeneratedValue
private Integer id; // 主键,自动增长
private String name;
public Man() { // 必须需要一个构造方法
}
get、set方法
}
五、sql实现层代码,是个接口
// controller @autowired使用
public interface ManRepository extends JpaRepository<Man, Integer> {
List<Man> findByName(String name);
}
继承JpaRepository即可,< Man,Integer> Man是要查询的实体类,Integer是主键的类型
findByName是自己除了增删改查新增的方法,这里的格式要求严格,findBy…
六、controller代码,@PathVariable restful风格{id}获得这个id
@RestController
public class ManController {
@Autowired
private ManRepository manRepository; // 继承jpa的接口,使sql变得非常简单
/**
* 查询所有
* @return
*/
@GetMapping(value = "/mans") // get方法
public List<Man> manList(){
return manRepository.findAll(); // 默认就有的方法
}
/**
* 新增一个
*/
@PostMapping(value = "mans") // post方法
public Man manAdd(@RequestParam("name")String name){
Man man = new Man();
man.setName(name);
return manRepository.save(man); // 默认就有的方法
}
/**
* 更新(如果id不存在则add,存在则update)
*/
@PutMapping("/mans/{id}") // put方法
public Man manUpdate(@PathVariable(value = "id")Integer id,
@RequestParam("name")String name){
Man man = new Man();
man.setName(name);
man.setId(4);
return manRepository.save(man); // 默认就有的方法
}
/**
* 删除
*/
@DeleteMapping("/mans/{id}") // delete方法
public void manDelete(@PathVariable(value = "id")Integer id){
manRepository.delete(id); // 默认就有的方法
}
/**
* 主键查询
*/
@GetMapping(value = "/findById/{id}")
public Man findById(@PathVariable(value = "id")Integer id){
return manRepository.findOne(id); // 默认就有的方法
}
/**
* 其他条件查询
*/
@RequestMapping(value = "/findByName/{name}")
public List<Man> findByName(@PathVariable(value = "name")String name){
return manRepository.findByName(name); // 自己扩展的方法
}
@Autowired
private ManServer manServer; // 测试事务用,很简单的一个小方法
/**
* 事务处理
*/
@RequestMapping(value = "two")
public void two(){
manServer.insertTwo();
}
七、业务层代码
@Service
public class ManServer {
@Autowired
private ManRepository manRepository;
@Transactional // 业务,只要是增删改都建议用
public void insertTwo(){
Man a = new Man();
Man b = new Man();
a.setName("1");
b.setName("2");
manRepository.save(a);
// int i = 0;
// System.out.println(0/i); // 报错业务测试
manRepository.save(b);
}
}
八、模版
一般是不建议用,比较占用内存不说,现在都是前后端分离,用jsp都行。
pom引入
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
1
templates里面增加index.html
html里面什么都不用写,要清空否则报错。然后直接写各种代码即可
直接在controller里面和springmvc一样返回String即可