手把手教学,10分钟学会创建SpringBoot项目,编写查询MySQL数据库接口
这个类是一个简单的Java Bean(也称为POJO,Plain Old Java Object),通常用于表示数据库中的一条记录或业务逻辑中的一个实体。在这个例子中,User类代表了一个用户实体。以下是对User包声明这行代码声明了类所在的包名,有助于Java编译器和运行时环境组织类文件。类声明这行代码声明了一个公开的类,名为User。成员变量:类内部定义了五个私有成员变量(idnameageg
教程目录
引言
用户使用浏览器上的Web应用,进行注册、登录、查看和下载等功能时,发送请求给后端,后端Controller控制层接收request,然后调用Service服务层方法实现功能后,将response返回给浏览器。而Service服务层会调用Mapper数据访问层方法,Mapper会与数据库直接进行交互,将数据表映射到实体类从而获取数据。
一、新建Spring Boot工程
打开IDEA,New Project,选择Spring Boot快速构建Spring工程,引入Web、MyBatis、MySQL起步依赖,最后Create。
二、建库建表和插数据
确保本地MySQL服务启动,使用DataBase插件连接数据库,然后执行下方的SQL语句,创建数据库mybatis,然后创建数据表user,并插入6条数据。
create database if not exists mybatis;
use mybatis;
create table user(
id int unsigned primary key auto_increment comment 'ID',
name varchar(100) comment '姓名',
age tinyint unsigned comment '年龄',
gender tinyint unsigned comment '性别, 1:男, 2:女',
phone varchar(11) comment '手机号'
) comment '用户表';
insert into user(id, name, age, gender, phone) VALUES (null,'白眉鹰王',55,'1','18800000000');
insert into user(id, name, age, gender, phone) VALUES (null,'金毛狮王',45,'1','18800000001');
insert into user(id, name, age, gender, phone) VALUES (null,'青翼蝠王',38,'1','18800000002');
insert into user(id, name, age, gender, phone) VALUES (null,'紫衫龙王',42,'2','18800000003');
insert into user(id, name, age, gender, phone) VALUES (null,'光明左使',37,'1','18800000004');
insert into user(id, name, age, gender, phone) VALUES (null,'光明右使',48,'1','18800000005');
三、实体类:User类
User类是一个简单的Java Bean(也称为POJO,Plain Old Java Object),通常用于表示数据库中的一条记录或业务逻辑中的一个实体。在这个例子中,User
类代表了一个用户实体。以下是对User
类各个部分的解释:
-
包声明:
package org.example.springdemo.pojo;
这行代码声明了类所在的包名,有助于Java编译器和运行时环境组织类文件。 -
类声明:
public class User
这行代码声明了一个公开的类,名为User
。 -
成员变量:类内部定义了五个私有成员变量(
id
,name
,age
,gender
,phone
),分别用于存储用户的ID、姓名、年龄、性别和电话号码。 -
无参构造器:
public User()
是一个无参数的构造方法,它允许在不提供任何初始值的情况下创建User
对象。这通常是JPA(Java Persistence API)或MyBatis等ORM(Object-Relational Mapping)框架在实例化实体时所需要的。 -
有参构造器:
public User(int id, String name, int age, int gender, String phone)
是一个带有参数的构造方法,允许在创建User
对象时直接初始化其成员变量。 -
Getter和Setter方法:每个成员变量都有对应的getter和setter方法,用于获取和设置变量的值。这些方法是Java Bean规范的一部分,允许外部代码以标准化的方式访问类的内部状态。
-
toString
方法:@Override public String toString()
方法覆盖了Object
类的toString
方法,提供了一种将User
对象的内部状态转换为字符串表示的方式。这通常用于调试或日志记录。
在实际应用中,User
类与数据库中的user
表相关联,其中每个属性都映射到表中的每个字段。
四、数据访问层:UserMapper接口
这段代码展示了如何使用MyBatis框架通过定义Mapper接口和注解的方式,实现对数据库的基本查询操作。MyBatis是一个支持普通SQL查询、存储过程和高级映射的持久层框架。它消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。
在这个例子中,UserMapper
接口定义了一个名为findById
的方法,用于根据用户的ID从数据库中查询并返回一个User
对象。
-
@Mapper
注解:这个注解用于标识这个接口是一个MyBatis的Mapper接口,MyBatis在启动时会自动扫描这些接口并创建它们的实现,以便在应用中通过依赖注入使用。 -
@Select
注解:这个注解用于指定查询数据库的SQL语句。在这个例子中,SQL语句是"select * from user where id = #{id}"
,意味着从user
表中查询ID等于方法参数id
的记录。#{id}
是MyBatis的参数占位符,它会被方法调用时传入的参数值替换。 -
public User findById(int id);
:这是UserMapper
接口中的一个方法声明。它接受一个整型参数id
,并返回一个User
类型的对象。这个方法的实现由MyBatis框架在运行时动态提供,开发者无需手动编写实现代码。
在使用这个Mapper接口之前,需要在MyBatis配置文件中(通常是XML文件或Java配置类)注册这个Mapper接口,或者在Spring Boot应用中通过@MapperScan
注解指定Mapper接口所在的包,以便MyBatis能够扫描到并创建这些Mapper接口的实现。
五、服务层:Service接口和ServiceImpl实现类
这段代码展示了一个使用Spring框架的服务层示例,其中UserService是一个接口,而UserServiceImpl是它的一个实现类。这个服务层的设计目的是为了封装业务逻辑,并通过调用数据访问层(在这个例子中是UserMapper)来与数据库进行交互。
-
UserService
是一个Java接口,它定义了一个名为getUserById
的方法。这个方法接受一个整型参数id
,并返回一个User
对象。 -
接口是Java中一种抽象类型,它允许定义方法的签名而不实现它们。实现接口的类必须提供接口中所有方法的具体实现。
-
UserServiceImpl
是一个Java类,它实现了UserService
接口。这意味着它必须提供getUserById
方法的具体实现。 -
@Service
注解是Spring框架提供的,用于标识这个类是一个服务层的组件。Spring容器在启动时会自动扫描这些注解,并创建相应的bean实例。 -
@Autowired
注解用于自动注入UserMapper
的实例。UserMapper
是一个数据访问层(DAO)接口,通常与MyBatis等ORM框架一起使用,用于定义数据库操作的方法。在这个例子中,UserMapper
有一个名为findById
的方法,它接受一个ID并返回一个User
对象。 -
getUserById
方法实现了UserService
接口中定义的方法。它调用userMapper
的findById
方法,并将结果返回。
这个服务层的设计遵循了Spring框架的推荐实践,即使用接口定义服务,并使用实现类提供具体的业务逻辑。通过将数据访问逻辑封装在UserMapper
接口中,服务层可以更容易地进行测试和替换,因为它不直接依赖于特定的数据库实现。此外,使用@Autowired
注解可以简化bean之间的依赖注入,使代码更加简洁和易于维护。
六、控制层:Controller类
下面代码是一个Spring MVC的控制器类UserController
,它使用了Spring Web框架的注解来定义处理HTTP请求的方法。这个控制器负责处理与用户相关的请求,并调用服务层(UserService
)来获取用户信息。以下是对代码的详细解释:
-
@RestController
:这是一个组合注解,它结合了@Controller
和@ResponseBody
的功能。它表明这个类是一个Spring MVC控制器,并且控制器的每个方法返回的对象都会自动转换为JSON或XML格式的响应体。这通常用于构建RESTful Web服务。 -
@RequestMapping("/user")
:这个注解用于定义控制器中所有方法的公共路径前缀。在这个例子中,任何由UserController
处理的请求都将以/user
作为URL的一部分。 -
@Autowired
:这个注解用于自动注入UserService
的实例。Spring容器会在运行时查找匹配的bean,并将其注入到userService变量中。 这样,控制器就可以调用服务层的方法来执行业务逻辑。 -
@GetMapping("/id")
:这个注解是@RequestMapping
的一个特化,它专门用于处理HTTP GET请求。它定义了处理请求的完整URL路径(在这个例子中是/user/id
),并且由于它是在类级别@RequestMapping
的基础上定义的,所以实际的路径将是/user/id
。 -
public User getById(int id)
:这是一个控制器方法,它接受一个名为id
的整型参数,并返回一个User
对象。方法体内部调用了userService.getUserById(id)
来获取用户信息,并将结果直接返回给客户端。由于@RestController
注解的存在,这个User
对象会被自动转换为JSON格式的响应体。
UserController
类是一个典型的Spring MVC控制器,它使用注解来定义请求处理方法和路径。通过调用服务层(UserService
)的方法,控制器能够处理客户端的请求并返回相应的数据。由于使用了@RestController
注解,这个控制器能够轻松地构建RESTful Web
服务,将Java对象自动转换为JSON或XML格式的响应体
。
七、配置文件:application.yml
application.yml
文件较原始的application.properties
文件的优势在于:层次清晰和关注数据。
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/mybatis
username: root
password: root
server:
port: 9090
servlet:
context-path:
配置项解释 |
---|
-
spring.datasource.driver-class-name
:指定数据库驱动类的全限定名。对于MySQL 8.x版本,建议使用com.mysql.cj.jdbc.Driver
。 -
spring.datasource.url
:指定数据库的JDBC URL,包括协议、主机名、端口号和数据库名。 -
spring.datasource.username
和spring.datasource.password
:分别指定数据库的用户名和密码。 -
server.port
:指定Spring Boot应用运行的端口号。在这个例子中,应用将在9090端口上运行。 -
server.servlet.context-path
:指定应用的上下文路径(Context Path)。这意味着,当部署这个应用时,访问它的URL将需要包含这个路径。例如,如果应用部署在localhost
上,并且上下文路径设置为/myapp
,那么访问应用的URL将是http://localhost:9090/myapp
。
注意事项 |
---|
-
驱动类名:确保使用的驱动类名与MySQL JDBC驱动版本相匹配。在MySQL 8.x中,推荐使用
com.mysql.cj.jdbc.Driver
。 -
安全性:在生产环境中,不要将数据库用户名和密码硬编码在配置文件中。考虑使用Spring Boot的配置管理功能,如Spring Cloud Config,或环境变量来管理敏感信息。
-
YAML格式:YAML文件对缩进非常敏感。确保每个配置项都正确缩进,以避免解析错误。
八、运行启动类SpringDemoApplication
启动SpringBoot工程,内置的Tomcat也会启动,在浏览器中输入localhots:9090/user/id?id=1即可查询到id为1的数据。
“积善之家,必有余庆;积不善之家,必有余殃”。一个人的善行或恶行不仅仅对自己的人生命运有极大影响,而且会影响后代子孙。如果一个人自己邪淫做恶,那么子孙后代往往会遭殃。如果一个人自己戒邪淫并力行善事,那么子孙后代会平安、有福,而且人才辈出。

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)