SSM框架-注解站

SSM框架-注解站

一.SSM注解汇总

1.MyBatis注解

1.1常见注解
  • @Mapper:为了把mapper这个DAO交给Spring容器管理,一般不加,我们在XXXMapper.xml中的namespace中已经指定过了。

  • @Param(value属性值为键,以参数为值):@Param注解为相应的查询接口传递值,但是具体SQL语句中的参数要与@Param中定义的参数保持一致,标识mapper接口中的方法参数。

  • @lnsert:实现新增

  • @Update:实现更新

  • @Delete:实现删除

  • @Select:实现查询

  • @Result:实现结果集封装

  • @Results:可以与@Result一起使用,封装多个结果集

  • @One:实现一对一结果集封装

  • @Many:实现一对多结果集封装

@Select("SELECT * FROM account_info WHERE username=#{username}")
@Results({
        @Result(column = "account",property = "account"),
        @Result(column = "username",property = "username"),
        @Result(column = "password",property = "password"),
        @Result(column = "account",
                property = "userRole",
                javaType = UserRole.class,
                one = @One(select="com.cqgcxy.mapper.UserRoleMapper.selectByAccount")
        )
})
AccountInfoDto selectAccountAndRole(String username);
1.2其他注解
  • @Options:用于指定一些高级选项,比如设置缓存、批量操作等。

    @Insert("INSERT INTO orders(order_no, user_id) VALUES(#{orderNo}, #{userId})") @Options(useGeneratedKeys = true, keyProperty = "id") int insert(Order order);
    
  • @MapKey:用于指定查询结果集中作为Map的key的属性。

    @Select("SELECT * FROM orders WHERE user_id = #{userId}")    @MapKey("orderNo")    
    Map<String, Order> getOrdersByUserId(@Param("userId") Long userId);
    
  • @SelectKey:用于在插入操作时获取生成的主键值。

        @Insert("INSERT INTO users(username, password) VALUES(#{username}, #{password})")    @SelectKey(statement = "SELECT last_insert_id()", keyProperty = "id", before = false, resultType = Long.class)    
        int insert(User user);
    
  • @Flush:用于在执行SQL语句后刷新缓存。(只能用于查询方法,只对开启了二级缓存起作用)

     @Select("SELECT * FROM users WHERE id = #{id}")    @Flush    
     User getUserById(@Param("id") Long id);
    

2.Spring注解

2.1Spring常见注解
  • @Component:用于标注一个类为组件类,通常与@Autowired配合使用进行自动装配。
  • @Service:用于标注一个类为服务类,通常作为业务逻辑层的实现类使用。
  • @Repository:用于标注一个类为数据访问层的实现类,通常与@Mapper或@MapperScan一起使用。
  • @Autowired:用于进行自动装配,将一个类的实例自动注入到另一个类中。
  • @Qualifier:用于指定要注入的实例名称,与@Autowired一起使用。
  • @Value:用于注入配置文件中的属性值。
  • @RequestMapping:用于映射请求路径和处理方法,可以指定HTTP请求方法、请求参数等信息。
  • @PathVariable:用于获取URL路径中的变量值。
  • @RequestParam:用于获取HTTP请求参数的值。
  • @ResponseBody:用于将方法返回值转换为JSON格式并返回客户端。
  • @Controller:用于标注一个类为控制器类,通常用来处理HTTP请求。
  • @RestController:用于标注一个类为RESTful风格的控制器类,通常用来处理HTTP请求并返回JSON格式的数据。
  • @Configuration:用于标注一个类为配置类,通常与@Bean配合使用。
  • @Bean:用于将一个方法的返回值作为Bean注册到Spring容器中。
  • @Import:用于导入其他配置类。
  • @Aspect:用于定义切面(Aspect),通常与@Before、@After、@Around等注解一起使用来实现面向切面编程(AOP)。
  • @Transactional:用于标注事务处理相关的方法或类,表明该方法或类需要进行事务管理。
2.2Spring其他注解
  • @Conditional:用于条件是否装配Bean(满足MyCondition的条件)

    @Configuration public class AppConfig {    
    @Bean   
    @Conditional(MyCondition.class)   
    public MyBean myBean() {      
    
      *// 创建并返回一个MyBean实例*    } }
    
  • @Scheduled:用于标注一个方法为定时任务方法,可以指定方法执行的时间间隔、固定延迟等。

    @Component public class helloScheduler {    @Scheduled(fixedRate = 5000) *// 每隔5秒执行一次*    public void myTask() {        *// 执行定时任务的逻辑*    } }
    
  • @EnableScheduling:用于开启定时任务的支持,通常与@Configuration一起使用。

  • @EnableAsync:用于开启异步方法的支持,可以使标注为@Async的方法在异步执行。

  • @Validated:用于标注在方法参数、方法、类上,表示开启参数校验功能,通常与@Valid等注解一起使用。

  • @ExceptionHandler:用于捕获并处理异常,通常用在Controller层的方法上。

  • @ControllerAdvice:用于定义全局的异常处理器,可以统一处理应用程序中抛出的异常。

  • @RequestScope、@SessionScope、@ApplicationScope:用于定义Bean的作用域范围,分别表示请求范围、会话范围和应用程序范围

3.SpringMVC注解

3.1SpringMVC常见注解
  • @Controller:用于标识一个类是控制器,处理HTTP请求。该注解通常与@RequestMapping一起使用。
  • @RestController:与@Controller类似,但其返回的是RESTful风格的响应,会自动将响应数据转换为JSON/XML格式。
  • @RequestMapping:用于映射请求路径和方法,可以标注在类和方法上。可以指定请求的URL、HTTP方法、请求头等条件,以及指定处理方法的返回视图。
  • @GetMapping@PostMapping@PutMapping@DeleteMapping:这些注解是对@RequestMapping的缩写形式,用于指定HTTP方法的映射。
  • @PathVariable:用于获取请求路径中的参数值,将其绑定到方法参数。
  • @RequestParam:用于获取请求参数的值,可以指定参数名称、默认值等。
  • @RequestBody:用于将请求体中的数据绑定到方法参数,通常用于接收JSON/XML格式的请求数据。
  • @ResponseBody:用于将方法返回值直接作为响应体返回,可以自动将对象转换为JSON/XML格式。
  • @ModelAttribute:用于将请求中的属性绑定到方法参数或方法返回值,可以用于表单提交或请求数据的预处理。
  • @Valid:用于开启参数校验,通常与@Validated一起使用。可以在方法参数上标注,表示需要对该参数进行校验。
  • @InitBinder:用于配置WebDataBinder,可以自定义数据绑定和格式化操作。
  • @ExceptionHandler:用于捕获并处理异常,通常用在Controller层的方法上。
  • @ControllerAdvice:用于定义全局的异常处理器,可以统一处理应用程序中抛出的异常。
  • @SessionAttributes:用于指定哪些模型属性需要存储到会话中。
  • @RequestHeader:用于获取请求头的值,将其绑定到方法参数。
  • @CookieValue:用于获取cookie的值,将其绑定到方法参数。
  • @EnableWebMvc:通常与@Configuration一起使用,用于开启Spring MVC的支持,可以自定义配置Web MVC功能。
3.2SpringMVC其他注解
  • @CrossOrigin:用于处理跨域请求,可以标注在Controller类或方法上,指定允许的跨域请求来源、方法和头信息。

    @RestController public class helloController {        @CrossOrigin(origins = "http://localhost:8080")    @GetMapping("/hello")   
    public String hello() {       
    return "Hello, World!";    } }
    
  • @Async:标注在方法上,表示该方法是一个异步方法,可以在方法内部执行异步操作。

    @RestController public class MyController {     @Autowired    private MyService myService;    
    @Async    
    @GetMapping("/async")   
    public CompletableFuture<String> async() {        return myService.doSomethingAsync();    } } 
    @Service 
    public class MyService {    
    @Async   
    public CompletableFuture<String> doSomethingAsync() {        *// 异步操作*       
    return CompletableFuture.completedFuture("Done!");    } }
    
  • @ResponseStatus:用于定义请求处理完成后的HTTP响应状态码和原因。

    @RestController public class MyController {     @GetMapping("/notfound")    
    public void notFound() throws NotFoundException {        throw new NotFoundException("Not found");    }     @ResponseStatus(HttpStatus.NOT_FOUND)    @ExceptionHandler(NotFoundException.class)   
    public void handleNotFound() {} }
    
  • @SessionScope(用户打开浏览器时创建该Bean实例,直到用户关闭浏览器时才销毁该实例)、@RequestScope@ApplicationScope:这些注解用于定义Bean的作用域范围,分别表示会话范围、请求范围和应用程序范围。

  • @PathVariableMap:用于获取所有路径参数的Map集合。

  • @MatrixVariable:用于获取路径中的矩阵变量,即URL中分号分隔的键值对。

    @RestController @RequestMapping("/books/{bookId}") public class BookController {    
    @GetMapping(path = "/authors/{authorId}")   
    public String getAuthor(        
    @PathVariable int bookId,         @MatrixVariable(name = "name") String name,        @MatrixVariable(name = "age") int age) {        return "Book: " + bookId + ", Author: " + name + ", " + age;    } }
    
  • @RequestPart:用于处理multipart/form-data类型的请求,将请求中的部分内容绑定到方法参数。

@RestController 
@RequestMapping("/files") 
public class FileController {    
@PostMapping("/upload")    
public String uploadFile(
@RequestPart("file") MultipartFile file) {     
*// 处理上传的文件*          
return "File uploaded successfully!";    } }

二.用注解搭建SSM-Maven项目

详细步骤:

  1. 创建Maven项目: 使用Maven的命令行工具或者IDE(如IntelliJ IDEA、Eclipse)创建一个新的Maven项目。

  2. 添加依赖: 在项目的pom.xml文件中添加Spring、Spring MVC、MyBatis等框架所需的依赖项:

      <dependencies>
    <!--    springmvc-->
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-webmvc</artifactId>
          <version>5.3.8</version>
        </dependency>
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-jdbc</artifactId>
          <version>5.3.8</version>
        </dependency>
    <!--    jackson,json相关(响应数据)-->
        <dependency>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-databind</artifactId>
          <version>2.9.0</version>
        </dependency>
    <!--   servlet(web.xml)   -->
        <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>javax.servlet-api</artifactId>
          <version>3.1.0</version>
          <scope>provided</scope>
        </dependency>
    <!--      数据库-->
        <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>8.0.33</version>
        </dependency>
    <!--   mybatis   -->
        <dependency>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis</artifactId>
          <version>3.4.6</version>
        </dependency>
        <dependency>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis-spring</artifactId>
          <version>1.3.0</version>
        </dependency>
    <!--      连接池-->
        <dependency>
          <groupId>com.alibaba</groupId>
          <artifactId>druid</artifactId>
          <version>1.2.4</version>
        </dependency>
    <!--      data-->
          <dependency>
              <groupId>org.projectlombok</groupId>
              <artifactId>lombok</artifactId>
              <version>1.18.20</version>
          </dependency>
      </dependencies>
    
  3. 加载Spring配置类: 配置DispatcherServlet和字符编码过滤器等内容:

    public class ServletConfig extends AbstractAnnotationConfigDispatcherServletInitializer {
    //加载Spring配置类
    protected Class<?>[] getRootConfigClasses() { return new Class[]{SpringConfig.class}; } //加载SpringMVC配置类 protected Class<?>[] getServletConfigClasses() {
    return new Class[]{SpringMvcConfig.class};
    }
    //设置SpringMVC请求地址拦截规则
    protected String[] getServletMappings() {
    return new String[]{“/”};
    }
    //设置post请求中文乱码过滤器
    @Override
    protected Filter[] getServletFilters() {
    CharacterEncodingFilter filter = new CharacterEncodingFilter();
    filter.setEncoding(“utf-8”);
    return new Filter[]{filter};
    }
    }
    4.创建SpringMVC配置类替换springmvc.xml

    ​ 作用:配置视图解析器、MVC注解扫描等内容

 java
   @Configuration
   @ComponentScan("com.cqgcxy.controller")
   @EnableWebMvc
   public class SpringMvcConfig {
   }

​ 5.创建SpringConfig配置类替换applicationContext.xml

​ 作用:配置数据源、事务管理器、扫描包路径等内容

@Configuration
@ComponentScan({"com.cqgcxy.service"})
@PropertySource("classpath:jdbc.properties")
@Import({JdbcConfig.class,MyBatisConfig.class})
@EnableTransactionManagement
public class SpringConfig {
}

​ 6.创建JdbcConfig配置类(设置数据源)

public class JdbcConfig {
    @Value("${jdbc.driver}")
    private String driver;
    @Value("${jdbc.url}")
    private String url;
    @Value("${jdbc.username}")
    private String username;
    @Value("${jdbc.password}")
    private String password;

@Bean
public DataSource dataSource(){
    DruidDataSource dataSource = new DruidDataSource();
    dataSource.setDriverClassName(driver);
    dataSource.setUrl(url);
    dataSource.setUsername(username);
    dataSource.setPassword(password);
    return dataSource;
}

@Bean
public PlatformTransactionManager transactionManager(DataSource dataSource){
    DataSourceTransactionManager ds = new DataSourceTransactionManager();
    ds.setDataSource(dataSource);
    return ds;
}}

7.创建MybatisConfig配置类(配置扫描包,数据源等)

public class MyBatisConfig {
     @Bean
    public SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource){
        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
//       设置数据源
        factoryBean.setDataSource(dataSource);
//        设置别名
        factoryBean.setTypeAliasesPackage("com.cqgcxy.entity");
//        开启驼峰命名
        Configuration configuration = new Configuration();
        configuration.setMapUnderscoreToCamelCase(true);
//        设置
        factoryBean.setConfiguration(configuration);
        return factoryBean;
    }
//MapperScannerConfigurer(mapper文件扫描)
    @Bean
    public MapperScannerConfigurer mapperScannerConfigurer(){
        MapperScannerConfigurer msc = new MapperScannerConfigurer();
//        设置扫描包
        msc.setBasePackage("com.cqgcxy.mapper");
        return msc;
    }
}

8.创建Controller、Service、Mapper等类: 创建相应的Controller、Service、Mapper接口和Mapper映射文件,并进行相应的注解配置。

9.编写业务逻辑和SQL语句: 在Service层编写业务逻辑处理,在Mapper接口对应的Mapper映射文件中编写SQL语句。

10.部署和测试: 部署项目到服务器,启动服务器并进行测试,确保项目能够正常运行。

  • 22
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
SSM(Spring + SpringMVC + MyBatis)框架中,有许多常用的注解,下面是它们的详细解释: 1. @Controller:用于标识控制层组件,相当于在 Spring 中的 @Component。 2. @Service:用于标识服务层组件,相当于在 Spring 中的 @Component。 3. @Repository:用于标识 DAO 层组件,相当于在 Spring 中的 @Component。 4. @Autowired:自动装配,用于自动注入其他组件的实例。 5. @Resource:自动装配,用于自动注入其他组件的实例,与 @Autowired 类似,但它是按照名称进行注入。 6. @RequestMapping:映射处理器,用于处理请求和响应的映射关系。 7. @RequestParam:用于获取请求参数的值。 8. @PathVariable:用于获取请求路径中的参数值。 9. @ResponseBody:用于将方法的返回值转换为 JSON 格式返回给客户端。 10. @Transactional:事务注解,用于开启事务管理。 11. @Aspect:切面注解,用于定义切面,实现面向切面编程。 12. @Before:前置通知注解,用于在目标方法执行前执行通知。 13. @AfterReturning:后置通知注解,用于在目标方法执行后执行通知。 14. @AfterThrowing:异常通知注解,用于在目标方法抛出异常时执行通知。 15. @Around:环绕通知注解,用于在目标方法执行前后执行通知。 16. @Pointcut:切点注解,用于定义切点,指定切面作用的方法。 以上是常用的 SSM 框架中的注解,掌握它们对于快速开发高效的项目是非常有帮助的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值