增加controller和restcontroller的区别:
https://mp.weixin.qq.com/s?src=11×tamp=1568796617&ver=1859&signature=dr560SpPS6sRKE0pbJWUSOXsiiWkAQEgQiuPs7Y16L8tzx8nCfyjf4WlYRW1JcF8v1vDw3y88PwAqMXXxMfvGPHHl3taLwtH2sVCfOCg0f83bYXfdRzkXvbZ6GZNsy7L&new=1
简单来讲,
仅仅是@Controller 将会返回一个页面
仅仅@RestController 返回JSON 或 XML 形式数据
@Controller +@ResponseBody 返回JSON 或 XML 形式数据
-
首先在pom.xml里添加相关依赖
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency>
-
在application.yml里配置数据库(注意什么参数和什么参数是同级的还是分支的,新手容易错)
spring: profiles: active: dev datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/sss?serverTimezone=UTC&characterEncoding=utf-8 //sss为你的数据库名字 username: root password: ****** //你的数据库密码 jpa: hibernate: ddl-auto: update (还有create方式) # 为update,否则每次启动都会重建表: show-sql: true
-
创建实体类
@Entity public class User { @Id @GeneratedValue private Integer id; private String name; private Integer age; public User() { } public User(Integer id,Integer age) { this.id = id; this.name = name; this.age = age; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age=age; } }
-
创建Repository, 传入User类 和 id的数据类型Integer:
public interface DataRepository extends JpaRepository<User,Integer> { //public List<User> findByAge(Integer age); //什么都不写都行 }
此时运行程序,打开数据库观察,已经发现新建了一个叫 user 的表单。
p.s. 博主有次做新项目时,一模一样写的出现了error creating bean with name ‘entityManagerFactory’ 的报错,解决方法:将maven中mysql-connector-java的版本指定为5.1.42.这个错误产生的原因是mysql默认的驱动版本太高,与hibernate版本不“兼容” 。5.1.42是我测试可以用的,其他高于此的版本不太清楚能不能用,小伙伴们可以试一试。 -
创建Controller
@CrossOrigin(origins = "*", maxAge = 3600) //@RestController只能返回对象,不能返回视图,如有其它应用请注意 //@RestController @Controller public class UserController { @Autowired DataRepository dataRepository; @PostMapping (value = "/delete") //删除(此方式为前端发来id:x,后端删除) @ResponseBody public void delete(@RequestParam("id") int id) { User user=new User(); user.setId(id); dataRepository.delete(user); //dataRepository.deleteById(id); } @PostMapping (value = "/search") //查询全部 @ResponseBody public List<User>find() { User user=new User(); return dataRepository.findAll(); } @PostMapping (value = "/add") //增 @ResponseBody public User add(@RequestParam("age") int age, @RequestParam("name") String name) { User user=new User(); user.setAge(age); user.setName(name); return dataRepository.save(user); } @PostMapping (value = "/edit") //改 @ResponseBody public User userupdate(@RequestParam("id") Integer id, @RequestParam("name") String name, @RequestParam("age") Integer age ) { User user=new User(); user.setId(id); user.setName(name); user.setAge(age); return dataRepository.save(user); } @PostMapping (value = "/searchone") //限定条件查询 @ResponseBody public List<User> searchone(@RequestParam("age") Integer age) { return dataRepository.findByAge(age); } }