Java项目(一些注解、依赖


创建项目

常用的几个注解

@Data

注在类上,提供类的get、set、equals、hashCode、canEqual、toString方法

@AllArgsConstructor

注在类上,提供类的全参构造

@NoArgsConstructor

注在类上,提供类的无参构造

@Setter

注在属性上,提供 set 方法

@Getter

注在属性上,提供 get 方法

@EqualsAndHashCode

注在类上,提供对应的 equals 和 hashCode 方法

@Log4j/@Slf4j

注在类上,提供对应的 Logger 对象,变量名为 log

MYBatis-Plus常用注解

参考

@TableName

value作用:value指定数据库中的表名

如果我们不设置这个注解,我们操作的数据库的表就由BaseMapper<Book> 泛型决定(Book)

@TableName(value = "t_book") //@TableName("t_book")
public class Book {}

另外的一种方法:

设置实体类所对应的表的统一前缀

我们如果不用注解也可以,比如下面的这个方式,给每个类都配置一个前缀,比如说表名是Book,但他其实已经默认是t_Book
图片1

@TableId

@TableField

作用:指定属性所对应的字段名

 
    @TableField(value = "bookName")
    private String bookName;
 
    @TableField(value="type")
    private  String type;

如果不加上面那个注解的话,就会默认两个单词中间加一个—,如下图所示
图片2

@TableLogic

后端代码中常用注解

参考

@Mapper

使用:在接口类上添加了@Mapper,在编译之后会生成相应的接口实现类。
添加位置:接口类上面,代码如下所示:

@Mapper
public interface StudentMapper {
}

@MapperScan

作用:指定要变成实现类的接口所在的包,包下面的所有接口在编译之后都会生成相应的实现类。添加位置:是在Springboot启动类上面添加

package com.tyut.pet;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;

@MapperScan({"com.pet.mapper"})
public class PetApplication {
    public static void main(String[] args) {
        SpringApplication.run(PetApplication.class, args);
    }
}

@Controller(@RequestMapping)

在SpringMVC中,控制器Controller负责处理又DIspatcherServlet分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model,然后再把该Model返回给对应的View进行展示。在SpringMVC 中提供了一个非常简便的定义Controller 的方法,你无需继承特定的类或实现特定的接口,只需使用@Controller 标记一个类是Controller ,然后使用@RequestMapping 和@RequestParam 等一些注解用以定义URL 请求和Controller 方法之间的映射,这样的Controller 就能被外界访问到。此外Controller 不会直接依赖于HttpServletRequest 和HttpServletResponse 等HttpServlet 对象,它们可以通过Controller 的方法参数灵活的获取到。

@Controller
public class MyController {

    @RequestMapping ( "/showView" )
    public ModelAndView showView() {
       ModelAndView modelAndView = new ModelAndView();
       modelAndView.setViewName( "viewName" );
       modelAndView.addObject( " 需要放到 model 中的属性名称 " , " 对应的属性值,它是一个对象 " );
       return modelAndView;
    }

}
<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-web</artifactId>
 </dependency>

在上面的示例中,@Controller 是标记在类MyController 上面的,所以类MyController 就是一个SpringMVC Controller 对象了,然后使用@RequestMapping(“/showView”) 标记在Controller 方法上,表示当请求/showView.do 的时候访问的是MyController 的showView 方法,该方法返回了一个包括Model 和View 的ModelAndView 对象。

@Autowired

使用 @Autowired 注解,可以省略手动编写代码来实例化和设置组件的属性的步骤。Spring 框架会自动扫描应用程序中所有使用了 @Component、@Service、@Repository 等注解的类

@Service
public class MyService {
    @Autowired
    private MyRepository repository;

    public List<MyEntity> getAllEntities() {
        return repository.findAll();
    }
}

@Repository
public class MyRepository {
    public List<MyEntity> findAll() {
    }
}

在这个示例中,MyService 组件使用 @Autowired 注解来自动装配 MyRepository 组件。当 MyService 实例化时,Spring 框架会自动创建 MyRepository 的实例,并将它注入到 MyService 中。然后,MyService 可以使用 repository 属性来访问 MyRepository 提供的方法,例如 findAll() 方法。

@ResponseBody

参考
作用:将java对象转为json格式的数据

将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据。
注意:在使用此注解之后不会再走视图处理器,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式的数据。

原理:@ResponseBody 表示该方法的返回结果直接写入 HTTP response body 中,一般在异步获取数据时使用(也就是AJAX)。
注意:在使用 @RequestMapping后,返回值通常解析为跳转路径,但是加上 @ResponseBody 后返回结果不会被解析为跳转路径,而是直接写入 HTTP response body 中。 比如异步获取 json 数据,加上 @ResponseBody 后,会直接返回 json 数据。@RequestBody 将 HTTP 请求正文插入方法中,使用适合的 HttpMessageConverter 将请求体写入某个对象。

@RequestMapping(value = "user/login")
@ResponseBody
// 将ajax(datas)发出的请求写入 User 对象中
public User login(@RequestBody User user) {   
// 这样就不会再被解析为跳转路径,而是直接将user对象写入 HTTP 响应正文中
    return user;    
}

@Transactional

@Transactional 是 Spring Framework 提供的注解,用于在 Spring 事务管理中标记一个方法应该作为一个事务处理。在使用 @Transactional 注解之前,需要先确保你的项目中已经添加了 Spring Framework 的依赖。

在 IntelliJ IDEA 中,使用 @Transactional 注解很简单,可以按照以下步骤进行:

  1. 首先,确保你的类已经添加了 @Service、@Repository 或 @Controller 注解,以便 Spring 能够扫描到该类并将其作为组件管理。

  2. 在需要添加事务的方法上面添加 @Transactional 注解。例如:

  3. 最后,确保你的 Spring 应用程序配置文件中已经启用了事务管理器。如果你使用的是 Spring Boot,则不需要进行额外配置,它已经包含了一个默认的事务管理器。如果你使用的是 Spring Framework

在你的 pom.xml 文件中添加以下依赖:

<dependencies>
    <!-- Spring Core -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>5.3.14</version>
    </dependency>
    
    <!-- Spring Context -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.3.14</version>
    </dependency>
    
    <!-- Spring AOP -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aop</artifactId>
        <version>5.3.14</version>
    </dependency>
    
    <!-- Spring Transaction -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-tx</artifactId>
        <version>5.3.14</version>
    </dependency>
    
    <!-- Your other dependencies -->
    ...
</dependencies>

@Param

@Param 是 MyBatis 框架中的注解,用于指定 Mapper 方法的参数名与 SQL 语句中占位符的对应关系。

当 Mapper 方法存在多个参数时,MyBatis 默认使用参数的顺序来与 SQL 语句中的占位符一一对应。但在实际开发中,由于多个参数的顺序可能会发生变化,因此建议使用 @Param 注解来明确指定参数名和占位符的对应关系。

public interface UserMapper {
    List<User> selectUsersByNameAndAge(@Param("name") String name, @Param("age") int age);
}

上面的代码中,@Param 注解指定了方法参数 name 对应 SQL 语句中的 #{name} 占位符,参数 age 对应 #{age} 占位符。这样,当 Mapper 方法被调用时,MyBatis 就会按照 @Param 注解指定的对应关系来设置 SQL 语句中的参数值。
需要注意的是,如果 Mapper 方法只有一个参数,且没有使用 @Param 注解,那么可以直接在 SQL 语句中使用 #{参数名} 占位符,MyBatis 会自动将方法参数与占位符对应起来。例如:

public interface UserMapper {
    List<User> selectUsersByName(String name);
}
<select id="selectUsersByName" resultType="User">
    SELECT * FROM user WHERE name = #{name}
</select>

在上面的代码中,Mapper 方法 selectUsersByName 只有一个参数 name,因此可以直接在 SQL 语句中使用 #{name} 占位符,MyBatis 会自动将方法参数与占位符对应起来。

pom依赖:

<!-- MyBatis 依赖 -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.7</version>
</dependency>

pom.xml中加入依赖

pom.xml中右键,选中generate,里面有Dependency,在里面查找想要的依赖。

IService接口

IService通常是一个接口,其作用是定义一个服务的功能和方法。IService接口它可以将一个复杂的服务分解成多个小的服务,每个小的服务都有一个对应的IService接口,这样可以降低服务之间的耦合性,提高代码的可读性和可维护性。
IService接口通常会定义服务的方法、输入参数、返回值等。IService接口可以被实现为不同的服务,例如一个数据库访问服务、一个文件访问服务、一个邮件服务等。通过使用IService接口,客户端可以方便地使用服务,并且可以轻松地切换不同的服务实现。源码

IService的使用

①mapper接口继承basemapper接口
②service接口继承Iservice
③service接口的实现类继承ServiceImpl<继承basemapper的mapper,实体类>,实现IUserService接口

Cookie

来源

作用:我们知道,平时上网时都是使用无状态的HTTP协议传输出数据,这意味着客户端与服务端在数据传送完成后就会中断连接。这时我们就需要一个一直保持会话连接的机制。在session出现前,cookie就完全充当了这种角色。也就是,cookie的小量信息能帮助我们跟踪会话。一般该信息记录用户身份。
原理:客户端请求服务器时,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。而客户端浏览器会把Cookie保存起来。当浏览器再请求服务器时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器通过检查该Cookie来获取用户状态。

Cookie cookie = new Cookie("username","joker");// 新建Cookie
cookie.setMaxAge(24*60*60);                    // 设置生命周期
response.addCookie(cookie);                    // 
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值