一:创建一个SpringBoot项目
选择web组件
解决办法:在Maven根目录下的setting.xml添加阿里云镜像,过程自行百度
二:创建Controller并访问
创建好的目录如下:
在com.example.demo包下面创建一个controller包,再创建一个helloController类
@RestController public class helloController { @RequestMapping(value="/hello",method=RequestMethod.GET) public String hello() { return "Hello!!"; } }
@RestController = @Controller + @ResponseBody 注册controller,返回数据为json格式。
所用的工具为Postman,有Google浏览器就可以用。
访问 localhost:8080/hello,就成功了。
Spring Boot的配置文件有两种后缀 *.properties或者*.yml,两种区别,自行鉴别。
写了controller来读取名字的属性
一:属性注入
@RestController public class animalController { @Value("${cat.name}") private String catName; @Value("${dog.name}") private String dogName; @RequestMapping(value="") public String animal() { System.out.println(catName+"---"+dogName); return "OK!!"; } }
@Value 注解 将${xxx}大括号中的对应的值注入注释的属性上
二:对象注入
写个cat对象
@Component @ConfigurationProperties(prefix="cat") public class cat { private String name; private int age; }
@Component 将cat注入容器
@ConfigurationProperties 将同类的配置信息封装成实体类
@Autowired 自动装配
@RestController public class animalController { @Autowired private cat cat; @RequestMapping(value="") public String animal() { System.out.println(cat); return "OK!!"; } }
访问localhost:8080/,就可以了
JPA(Java Persistence API)是Sun官方提出的Java持久化规范,它为Java开发人员提供了一种对象/关联映射工具 来管理Java应用中的关系数据。
简而言之,JPA就是一种规范,工具。
一:添加依赖
pom.xml中添加
<!-- jpa依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <!-- mysql依赖 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency>
、二:创建一个对象
@Entity public class user { @Id @GeneratedValue private int id; private String name; private int age; }
@Entity 数据库中对应的实体类
@Id 主键
@GeneratedValue 自增长
配置数据库参数
spring: datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/springboot username: root password: xxxx jpa: hibernate: ddl-auto: update show-sql: true
ddl-auto : 自动建表 有相对应的表则访问,没有则创建
运行,启动Spring Boot,发现数据库中对一张表
三:过程
创建一个 repository包和service包,并创建userRepository类,userService类
userRepository类
public interface userRepository extends JpaRepository<user, Integer>{ //对应的实体对象 主键的类型 }
userService类
@Service public class userService { @Autowired private userRepository userRepository; // 查询全部 public List<user> findAll() { return userRepository.findAll(); } // 根据id查询 public user findById(int id) { return userRepository.getOne(id); } // 添加用户 public user save(user u) { u.setId(0); return userRepository.save(u); } // 删除 public void delete(int id) { userRepository.delete(userRepository.getOne(id)); } // 修改用户 public user update(user u ) { return userRepository.save(u); } }
userController
@RestController public class userController { @Autowired private userService userService; //根据id查询 @GetMapping(value = "/get/{id}") public user findById(@PathVariable("id") int id) { return userService.findById(id); } //查询全部 @GetMapping(value="/user") public List<user> getAll(){ return userService.findAll(); } //保存用户 @PostMapping(value="/save") public user save(user user ) { return userService.save(user); } //删除用户 @GetMapping(value="/del/{id}") public String del(@PathVariable("id")int id) { System.out.println(id); userService.delete(id); return "ok!!"; } //修改用户 @PostMapping(value="/update") public user update(user user) { return userService.update(user); } }
异常信息如下:
原因:hibernate会给每个被管理的对象加上hibernateLazyInitializer属性,hibernate会给被管理的pojo加入一个hibernateLazyInitializer属性,jsonplugin通过java的反射机制将pojo转换成json,会把hibernateLazyInitializer也拿出来操作,但是hibernateLazyInitializer无法由反射得到。
解决方法:让其生成json对象的时候,忽略hibernateLazyInitializer属性
在实例类上加上
@Entity @JsonIgnoreProperties(value = {"hibernateLazyInitializer", "handler"}) public class user { 。。。 }
最后,测试统一采用Postman工具进行。