项目搭建及配置
1、springboot的两个配置文件:application.yml pom.xml(负责导入maven的依赖)。在创建完项目之后,去数据库设计表结构,之后进行全局配置文件(application.yml)的编写。
2、首先需要有一个用户需要的pojo类,即pojo包下创建的User类,需要这个User类映射为数据库的一个表,因为spring data jpa是面向对象的方式来去操作数据库,所以可以添加@Table、@Entity两个注解。这两个注解都是将一个类映射成一个表:
@Table
//@Entity
public class User{
private Integer userId;
private String username;
private String password;
private String email;
//get、set方法...
//toString生成...
}当使用了@Table、@Entity这两个注解之后,默认就会把类名当做表名,所以可以重新映射一个表名:
@Table(name="tb_user")
//@Entity(name="tb_user")
public class User{
...
}这样写它会报错,提示你添加主键id,我们可以将userId当作主键,添加@Id注解。
这个id你希望是以什么样的方式进行生成,如果希望id是自动生成的方式,就加上@GeneratedValue注解,在注解里面指定生成的策略,给他指定为自增的方式:
@GeneratedValue(strategy=Generation.IdENTITY)还可以用@Column改变字段名,因为默认情况下它会把属性名作为数据库表的字段名:@Column(name="user_id") //用蛇形命名不用驼峰式 完整模板为:
@Table(name="tb_user")
@Entity
public class User{
@Id
@GeneratedValue(strategy=GenerationType.IdENTITY)
@Column(name="user_id")
private Integer userId;
@Column(name="user_name")
private String userName;
@Column(name="password")
private String password;
@Column(name="email")
private String email;
//get、set方法...
@Override
public String toString(){
return "User{" +
"userId=" + userId +
", username=" + username + '\' +
", password=" + password + '\' +
", email=" + email + '\' +
"}";
}
}application.yml
因为是要用java操作数据库,所以要配置数据源:
Spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver //驱动
url: jdbc:mysql://localhost:3306/Student?useSSL=false&characterEncoding=utf8
username: root
password: aaaaa
//当在Controller跳转到index上,会变成/index.jsp,就会跳转到这上面
mvc:
view:
prefix: /
suffix: .jsp
//因为做完查询之后,要将结果显示到jsp中,所以需要配置jsp的映射路径:即上面mvc的配置
mybatis:
type-aliases-package: com.example.student.pojo
//放置映射文件的路径,通常在resources里面建一个包mapper
mapper-locations: classpath:/mapper/*Mapper.xml可能出现的问题:当在application.yml中配置数据源的时候,写完type: com.alibaba.druid.pool.DruidDataSource报红,是因为没有添加Druid连接池依赖。解决方法:在pom.xml中添加Druid依赖
application.properties
在maven项目中,application.properties文件是Spring Boot应用程序的配置文件之一,其中属性spring.application.name是springboot中的一个标准属性,它用于指定应用程序的名称,因此设置spring.application.name属性有助于在分布式环境中识别和管理应用程序
spring.application.name=springboot_wangsong
#web应用端口,默认8080
server.port=8080
<!--显示sql-->
spring.jpa.show-sql=true
spring.datasource.url=jdbc:mysql://localhost:3306/child?serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=aaaaa<!--这三句是关于spring data jpa-->
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
<!--格式化sql语句,避免一行打印在控制台上-->
spring.jpa.properties.hibernate.format_sql=true
<!--自动更新数据库表结构-->
spring.jpa.hibernate.ddl-auto=update如果我希望一启动项目它就自动为我生成数据库的表,怎么让它根据配置生成数据库的表呢,就需要在application.properties中加入这一项配置:
`spring.jpa.hibernate.ddl-auto=update`
它会自动更新数据库表的结构,也就是说如果数据库没有这个表,它会插入;如果我添加了一个字段,他也会帮我在数据库里添加一个字段。
还有一个配置是格式化sql,因为到时候生成的一些sql语句,希望让他打印在控制台,如果不格式化,他会全部一行显示,对我们开发进行调试就不太友好:spring.jpa.properties.hibernate.format_sql=true
application.properties中还有一个配置,可以显示sql,当执行sql操作,以及生成表,他都会为控制台显示ui对应的sql语句
pom.xml
是SprinBoot的依赖配置文件,一个标准的pom.xml会有一个标准的<parent>,这个<parent>就是继承springboot的一个父maven项目
<parent>
<groupId>org.springframework.boot</groupId>
<!--管理所有依赖的版本,可以解决依赖跟依赖之间的版本冲突问题-->
<artifactId>spring-boot-starter-parent<artifactId>
<version>3.3.2</version>
<!--这个其实可以去掉,它其实在file-Project Stucture配置的jdk进行使用,不需要单独的去进行配置-->
<properties>
<java.version>17</java.version>
</properties>
<!--下面是创建项目时选择的依赖:-->
<dependencies>
<!--spring data jpa 操作数据库-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!--整合springmvc需要的一个starter-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--mysql驱动-->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
<!--单元测试-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>