一:第一个SpringBoot项目
一:创建一个SpringBoot项目
选择web组件
这里有问题一:SpringBoot项目构建过慢
解决办法:在Maven根目录下的setting.xml添加阿里云镜像,过程自行百度
二:创建Controller并访问
创建好的目录如下:
在com.example.demo包下面创建一个controller包,再创建一个helloController类
这里有问题二:*Application.java为SpringBoot的启动类,仅会扫描其所在的当前目录及其目录。
-
@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/,就可以了
三:利用Spring-data-JPA进行curd
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;
-
-
@GetMapping(value =
"get/{id}")
-
public user findById(@PathVariable("id") int id) {
-
return userService.findById(id);
-
}
-
}
这个url的写法是RESTful编程,可自行百度RESTful
这里问题三:查询返回的结果无法转化为json格式
异常信息如下:
原因:hibernate会给每个被管理的对象加上hibernateLazyInitializer属性,hibernate会给被管理的pojo加入一个hibernateLazyInitializer属性,jsonplugin通过java的反射机制将pojo转换成json,会把hibernateLazyInitializer也拿出来操作,但是hibernateLazyInitializer无法由反射得到。
解决方法:让其生成json对象的时候,忽略hibernateLazyInitializer属性
在实例类上加上
-
@Entity
-
@JsonIgnoreProperties(value = {
"hibernateLazyInitializer",
"handler"})
-
public
class user {
-
。。。
-
}