WordPress使用CDN无法登录,网站推广优化外包公司,揭阳企业网站建设开发,做公司的网站的需求有哪些Spring Boot MyBatis 项目中常用注解详解
在现代Java开发中#xff0c;Spring Boot和MyBatis是两大热门框架#xff0c;广泛应用于构建高效、可维护的企业级应用。两者结合使用#xff0c;可以充分发挥各自的优势#xff0c;提高开发效率和代码质量。在这个过程中#x…Spring Boot MyBatis 项目中常用注解详解
在现代Java开发中Spring Boot和MyBatis是两大热门框架广泛应用于构建高效、可维护的企业级应用。两者结合使用可以充分发挥各自的优势提高开发效率和代码质量。在这个过程中注解Annotations起到了关键作用。本文将详细、全面地讲解在Spring Boot MyBatis项目中常用的注解及其含义和作用并通过分类整理帮助开发者更好地理解和运用这些工具。 目录 Spring Boot MyBatis 项目中常用注解详解Spring Boot 常用注解核心注解SpringBootApplication 组件标识注解RestControllerControllerServiceRepositoryComponent 依赖注入注解AutowiredQualifierInject 配置注解ConfigurationBeanValueConfigurationProperties 事务管理注解Transactional Web层注解请求映射注解RequestMappingGetMappingPostMappingPutMappingDeleteMapping 参数绑定注解PathVariableRequestParamRequestBodyResponseBody MyBatis 常用注解Mapper接口注解Mapper SQL操作注解SelectInsertUpdateDelete 参数绑定注解Param 结果映射注解Results 和 Result 关联映射注解One 和 Many 综合示例项目结构1. 主类2. 实体类3. Mapper 接口4. 服务类5. 控制器类6. 配置文件 总结附录常用注解对照表 Spring Boot 常用注解
Spring Boot 提供了丰富的注解来简化开发过程。以下将这些注解按照功能进行分类便于理解和应用。
核心注解
SpringBootApplication
含义与作用SpringBootApplication 是一个复合注解包含了 Configuration、EnableAutoConfiguration 和 ComponentScan。用于标注主类启用Spring Boot的自动配置和组件扫描功能。
示例
SpringBootApplication
public class MyApplication {public static void main(String[] args) {SpringApplication.run(MyApplication.class, args);}
}组件标识注解
这些注解用于标识不同层次的组件便于Spring进行自动扫描和管理。
RestController
含义与作用RestController 是 Controller 和 ResponseBody 的组合注解用于标识控制器类适用于构建RESTful Web服务。所有方法返回的对象会自动序列化为JSON或XML。
示例
RestController
RequestMapping(/api)
public class UserController {GetMapping(/users)public ListUser getAllUsers() {// 返回用户列表}
}Controller
含义与作用Controller 用于标识控制器类通常与视图解析器如Thymeleaf配合使用适用于传统的MVC模式。
示例
Controller
public class HomeController {GetMapping(/)public String home(Model model) {model.addAttribute(message, Hello World);return home;}
}Service
含义与作用Service 用于标识业务逻辑层的组件增强代码的可读性和可维护性。它也是一个 Component因此会被Spring扫描和管理。
示例
Service
public class UserService {Autowiredprivate UserRepository userRepository;public ListUser getAllUsers() {return userRepository.findAll();}
}Repository
含义与作用Repository 用于标识数据访问层的组件通常与持久化技术如JPA、MyBatis结合使用。它还提供了异常转换功能将持久层异常转换为Spring的统一异常。
示例
Repository
public class UserRepository {Autowiredprivate JdbcTemplate jdbcTemplate;public ListUser findAll() {// 查询数据库}
}Component
含义与作用Component 是一个通用的Spring管理的组件注解用于标识任何Spring管理的Bean。其他注解如 Service、Repository、Controller都是 Component 的特化。
示例
Component
public class Utility {public void performTask() {// 执行任务}
}依赖注入注解
这些注解用于实现Spring的依赖注入机制简化Bean的管理和使用。
Autowired
含义与作用Autowired 用于自动装配Bean可以应用于构造函数、字段或Setter方法。Spring会根据类型自动注入匹配的Bean。
示例
Service
public class OrderService {Autowiredprivate OrderRepository orderRepository;// 或者通过构造函数注入// private final OrderRepository orderRepository;//// Autowired// public OrderService(OrderRepository orderRepository) {// this.orderRepository orderRepository;// }
}Qualifier
含义与作用Qualifier 与 Autowired 一起使用用于在多个Bean候选者中指定要注入的具体Bean。
示例
Service
public class PaymentService {AutowiredQualifier(creditCardPayment)private PaymentProcessor paymentProcessor;
}Inject
含义与作用Inject 是JSR-330规范的注解与 Autowired 类似用于实现依赖注入。功能上与 Autowired 基本相同但不支持 required 属性。
示例
Service
public class NotificationService {Injectprivate EmailService emailService;
}配置注解
用于定义和管理应用的配置和Bean。
Configuration
含义与作用Configuration 用于标识配置类类似于传统的XML配置文件。可以在配置类中定义Bean并进行依赖注入的配置。
示例
Configuration
public class AppConfig {Beanpublic RestTemplate restTemplate() {return new RestTemplate();}
}Bean
含义与作用Bean 用于在 Configuration 类中定义BeanSpring会管理这些Bean的生命周期和依赖。
示例
Configuration
public class DataSourceConfig {Beanpublic DataSource dataSource() {// 配置数据源}
}Value
含义与作用Value 用于注入配置文件中的属性值可以注入到字段、方法参数或构造函数参数中。
示例
Component
public class AppProperties {Value(${app.name})private String appName;Value(${app.version})private String appVersion;
}ConfigurationProperties
含义与作用ConfigurationProperties 用于将配置文件中的属性映射到一个Java对象中适用于大量相关属性的绑定。
示例
Component
ConfigurationProperties(prefix app)
public class AppProperties {private String name;private String version;// getters and setters
}事务管理注解
用于声明事务管理确保数据一致性和完整性。
Transactional
含义与作用Transactional 用于声明事务管理适用于需要事务控制的方法或类。可以指定事务的传播行为、隔离级别、回滚规则等。
示例
Service
public class PaymentService {Transactionalpublic void processPayment(Order order) {// 执行支付逻辑}
}Web层注解
用于处理Web请求和响应简化控制器的开发。
请求映射注解
这些注解用于定义HTTP请求的路径和方法简化路由配置。
RequestMapping
含义与作用RequestMapping 用于定义请求的URL路径和HTTP方法适用于类级别和方法级别。它是一个通用的映射注解可以通过 method 属性指定具体的HTTP方法。
示例
RestController
RequestMapping(/api)
public class UserController {RequestMapping(value /users, method RequestMethod.GET)public ListUser getAllUsers() {// 返回用户列表}
}GetMapping
含义与作用GetMapping 是 RequestMapping 的快捷方式用于处理HTTP GET请求。适用于方法级别简化代码。
示例
GetMapping(/users)
public ListUser getAllUsers() {// 返回用户列表
}PostMapping
含义与作用PostMapping 是 RequestMapping 的快捷方式用于处理HTTP POST请求。适用于方法级别简化代码。
示例
PostMapping(/users)
public ResponseEntityVoid createUser(RequestBody User user) {// 创建用户
}PutMapping
含义与作用PutMapping 是 RequestMapping 的快捷方式用于处理HTTP PUT请求。适用于方法级别简化代码。
示例
PutMapping(/users/{id})
public ResponseEntityVoid updateUser(PathVariable Long id, RequestBody User user) {// 更新用户
}DeleteMapping
含义与作用DeleteMapping 是 RequestMapping 的快捷方式用于处理HTTP DELETE请求。适用于方法级别简化代码。
示例
DeleteMapping(/users/{id})
public ResponseEntityVoid deleteUser(PathVariable Long id) {// 删除用户
}参数绑定注解
这些注解用于将HTTP请求中的参数绑定到控制器方法的参数上。
PathVariable
含义与作用PathVariable 用于绑定URL路径中的变量到方法参数常用于RESTful API中的资源标识。
示例
GetMapping(/users/{id})
public User getUser(PathVariable Long id) {// 根据ID获取用户
}RequestParam
含义与作用RequestParam 用于绑定HTTP请求中的参数到方法参数适用于查询参数或表单参数。
示例
GetMapping(/search)
public ListUser searchUsers(RequestParam String name, RequestParam int age) {// 根据姓名和年龄搜索用户
}RequestBody
含义与作用RequestBody 用于将HTTP请求体中的JSON或XML数据绑定到方法参数常用于处理POST和PUT请求中的数据。
示例
PostMapping(/users)
public ResponseEntityVoid createUser(RequestBody User user) {// 创建用户
}ResponseBody
含义与作用ResponseBody 用于将方法返回的对象序列化为JSON或XML并写入HTTP响应体通常与 Controller 一起使用。RestController 已经包含了 ResponseBody 的功能。
示例
Controller
public class UserController {GetMapping(/users)ResponseBodypublic ListUser getAllUsers() {// 返回用户列表}
}MyBatis 常用注解
MyBatis 是一个优秀的持久层框架通过映射语句将数据库操作与Java方法关联。MyBatis提供了一系列注解简化了XML映射文件的使用。
Mapper接口注解
Mapper
含义与作用Mapper 用于标识MyBatis的Mapper接口Spring会自动扫描并生成代理对象。通常与 MapperScan 配合使用。
示例
Mapper
public interface UserMapper {Select(SELECT * FROM users WHERE id #{id})User getUserById(Param(id) Long id);
}SQL操作注解
这些注解用于定义具体的SQL语句关联到Mapper接口的方法上实现数据库的CRUD操作。
Select
含义与作用Select 用于标注查询语句关联到接口的方法上实现数据库的查询操作。
示例
Mapper
public interface UserMapper {Select(SELECT * FROM users)ListUser getAllUsers();
}Insert
含义与作用Insert 用于标注插入语句关联到接口的方法上实现数据库的插入操作。
示例
Mapper
public interface UserMapper {Insert(INSERT INTO users(name, email) VALUES(#{name}, #{email}))Options(useGeneratedKeys true, keyProperty id)void insertUser(User user);
}Update
含义与作用Update 用于标注更新语句关联到接口的方法上实现数据库的更新操作。
示例
Mapper
public interface UserMapper {Update(UPDATE users SET name #{name}, email #{email} WHERE id #{id})void updateUser(User user);
}Delete
含义与作用Delete 用于标注删除语句关联到接口的方法上实现数据库的删除操作。
示例
Mapper
public interface UserMapper {Delete(DELETE FROM users WHERE id #{id})void deleteUser(Param(id) Long id);
}参数绑定注解
Param
含义与作用Param 用于给方法参数命名以便在SQL语句中引用。特别适用于有多个参数的方法。
示例
Mapper
public interface UserMapper {Select(SELECT * FROM users WHERE name #{name} AND age #{age})ListUser getUsersByNameAndAge(Param(name) String name, Param(age) int age);
}结果映射注解
这些注解用于定义查询结果与Java对象属性的映射关系适用于字段名与属性名不一致的情况。
Results 和 Result
含义与作用Results 和 Result 用于定义查询结果与Java对象属性的映射关系适用于字段名与属性名不一致的情况。
示例
Mapper
public interface UserMapper {Select(SELECT id, user_name, email_address FROM users WHERE id #{id})Results({Result(property id, column id),Result(property name, column user_name),Result(property email, column email_address)})User getUserById(Param(id) Long id);
}关联映射注解
用于定义对象之间的一对一或一对多关系适用于复杂的对象关系映射。
One 和 Many
含义与作用One 和 Many 用于定义一对一和一对多的关联关系适用于复杂的对象关系映射。
示例
Mapper
public interface OrderMapper {Select(SELECT * FROM orders WHERE id #{id})Results({Result(property id, column id),Result(property user, column user_id, one One(select com.example.mapper.UserMapper.getUserById))})Order getOrderById(Param(id) Long id);
}综合示例
为了更好地理解上述注解的应用下面通过一个简单的用户管理系统示例展示Spring Boot与MyBatis如何协同工作。
项目结构
src
├── main
│ ├── java
│ │ └── com.example.demo
│ │ ├── DemoApplication.java
│ │ ├── controller
│ │ │ └── UserController.java
│ │ ├── service
│ │ │ └── UserService.java
│ │ ├── mapper
│ │ │ └── UserMapper.java
│ │ └── model
│ │ └── User.java
│ └── resources
│ └── application.properties1. 主类
SpringBootApplication
MapperScan(com.example.demo.mapper)
public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}
}说明MapperScan 指定MyBatis的Mapper接口扫描路径确保Mapper接口能够被正确识别和代理。
2. 实体类
public class User {private Long id;private String name;private String email;// getters and setters
}3. Mapper 接口
Mapper
public interface UserMapper {Select(SELECT * FROM users)ListUser getAllUsers();Select(SELECT * FROM users WHERE id #{id})User getUserById(Param(id) Long id);Insert(INSERT INTO users(name, email) VALUES(#{name}, #{email}))Options(useGeneratedKeys true, keyProperty id)void insertUser(User user);Update(UPDATE users SET name #{name}, email #{email} WHERE id #{id})void updateUser(User user);Delete(DELETE FROM users WHERE id #{id})void deleteUser(Param(id) Long id);
}4. 服务类
Service
public class UserService {Autowiredprivate UserMapper userMapper;public ListUser getAllUsers() {return userMapper.getAllUsers();}public User getUserById(Long id) {return userMapper.getUserById(id);}public void createUser(User user) {userMapper.insertUser(user);}public void updateUser(User user) {userMapper.updateUser(user);}public void deleteUser(Long id) {userMapper.deleteUser(id);}
}5. 控制器类
RestController
RequestMapping(/api/users)
public class UserController {Autowiredprivate UserService userService;// 获取所有用户GetMappingpublic ListUser listUsers() {return userService.getAllUsers();}// 根据ID获取用户GetMapping(/{id})public ResponseEntityUser getUser(PathVariable Long id) {User user userService.getUserById(id);if(user ! null){return ResponseEntity.ok(user);} else {return ResponseEntity.notFound().build();}}// 创建用户PostMappingpublic ResponseEntityVoid createUser(RequestBody User user) {userService.createUser(user);return ResponseEntity.status(HttpStatus.CREATED).build();}// 更新用户PutMapping(/{id})public ResponseEntityVoid updateUser(PathVariable Long id, RequestBody User user) {user.setId(id);userService.updateUser(user);return ResponseEntity.ok().build();}// 删除用户DeleteMapping(/{id})public ResponseEntityVoid deleteUser(PathVariable Long id) {userService.deleteUser(id);return ResponseEntity.noContent().build();}
}6. 配置文件
spring.datasource.urljdbc:mysql://localhost:3306/mydb
spring.datasource.usernameroot
spring.datasource.passwordsecret
spring.datasource.driver-class-namecom.mysql.cj.jdbc.Drivermybatis.configuration.map-underscore-to-camel-casetrue# 显示SQL语句
mybatis.configuration.log-implorg.apache.ibatis.logging.stdout.StdOutImpl说明
map-underscore-to-camel-casetrue自动将数据库下划线命名转换为Java的驼峰命名。log-impl设置MyBatis的日志实现这里使用标准输出日志。
总结
在Spring Boot MyBatis项目中注解的使用极大地简化了配置和开发流程。通过合理运用各种注解可以实现代码的高内聚低耦合提升项目的可维护性和扩展性。本文按照功能对Spring Boot和MyBatis中的常用注解进行了分类讲解并通过一个综合示例展示了它们的实际应用。希望能帮助开发者在实际项目中更好地理解和运用这些注解构建高效、稳定的应用系统。 附录常用注解对照表
注解类别注解名称作用核心注解SpringBootApplication标注主类启用自动配置和组件扫描组件标识注解RestController标识REST控制器返回JSON/XML数据Controller标识MVC控制器返回视图Service标识业务逻辑层组件Repository标识数据访问层组件提供异常转换Component通用组件注解依赖注入注解Autowired自动装配BeanQualifier指定注入的具体BeanInject实现依赖注入JSR-330规范配置注解Configuration标识配置类Bean定义BeanValue注入配置属性值ConfigurationProperties绑定配置属性到Java对象事务管理注解Transactional声明事务管理Web层注解RequestMapping定义请求路径和方法GetMapping处理GET请求PostMapping处理POST请求PutMapping处理PUT请求DeleteMapping处理DELETE请求PathVariable绑定URL路径变量到方法参数RequestParam绑定请求参数到方法参数RequestBody绑定请求体到方法参数ResponseBody将方法返回值序列化到响应体MyBatis注解Mapper标识Mapper接口Select定义SELECT语句Insert定义INSERT语句Update定义UPDATE语句Delete定义DELETE语句Param命名方法参数Results定义结果集映射Result定义单个结果映射One定义一对一关联Many定义一对多关联
通过对这些注解的深入理解和正确使用可以有效提升Spring Boot MyBatis项目的开发效率和代码质量。 摊牌了不装了整理不易我想要你手中的赞和关注