Loading... # mybatis常用注解 ## 增删改查注解 ### @Insert和@Options ```java public interface UserDAO{ @Options(useGeneratedKeys = true,keyColumn = "uid", keyProperty = "id") @Insert("insert into t_user(username,password,gender,birth) values(#{username},#{password},#{gender},#{birth})") public void insertUser(User user); } ``` 设置@Options属性userGeneratedKeys的值为true,并指定实例对象中主键的属性名keyProperty=“id”,以及在数据库中的字段名keyColumn=“uid”。这样在user插入数据后,userId属性会被自动赋值 ### @Delete ```java public interface UserDAO{ @Delete("delete from t_user where id = #{id}") public void deleteUserById(@Param("id") int id); } ``` ### @Update ```java public interface UserDAO{ @Update("update t_user set username=#{usernmae},password=#{password}") public void updateUser(User user); } ``` ### @ Select ```java public interface UserDAO{ @Select("select * from t_user where id = #{id} and username = {#username}") public User queryUserbyId(@Param("id") int id,@Param("username") String username); } ``` ## 映射注解 ### @Mapper ```java @Mapper public interface UserDAO { } ``` 作用:在接口类上添加了@Mapper,在编译之后会生成相应的接口实现类 添加位置:**接口类上面** ### @MapperScan 如果想要每个接口都要变成实现类,那么需要在每个接口类上加上@Mapper注解,比较麻烦,解决这个问题用@MapperScan 作用:包下面的所有接口在编译之后都会生成相应的实现类 添加位置:是在**Springboot启动类上面添加** ```java @SpringBootApplication @MapperScan("com.winter.dao") public class SpringbootMybatisDemoApplication { public static void main(String[] args) { SpringApplication.run(SpringbootMybatisDemoApplication.class, args); } ``` # mybatisplus常用注解 ### @TableName 用于与数据库表名统一 ```java @Data @AllArgsConstructor @NoArgsConstructor @TableName("t_users") public class User { private Long id; private String name; private Integer age; private String email; } ``` ### @TableId #### value属性 MyBatisPlus在实现CRUD默认会将Id作为主键,在插入数据时,使用雪花算法生成Id,如果主键不叫Id则添加功能会失败 ```java @Data @AllArgsConstructor @NoArgsConstructor @TableName("t_users") public class User { @TableId(value = "uid") //value指定当前作为主键的字段 private Long id; private String name; private Integer age; private String email; } ``` #### type属性 主键生成策略(默认的主键生成策略为雪花算法),设置当前主键生成为自增策略 ```java @Data @AllArgsConstructor @NoArgsConstructor @TableName("t_users") public class User { @TableId(value = "id",type = IdType.AUTO) //将当前属性所对应的字段作为主键 private Long id; private String name; private Integer age; private String email; } ``` ### @TableField 如果实体类的普通属性名,和数据库非主键的字段名不一致,向数据库字段名统一 ```java @Data @AllArgsConstructor @NoArgsConstructor @TableName("t_users") public class User { @TableId(value = "id",type = IdType.AUTO) private Long id; @TableField("user_name") private String name; @TableField("user_age") private Integer age; @TableField("user_email") private String email; } ``` ### @TableLogic **逻辑删除:** 表中设置字段为删除状态 比如删除为1 未删除为0 则查询时,只会查到状态为0的数据(可以进行数据恢复)。 **物理删除:** 从表中删除。 ```java @TableLogic //逻辑删除字段 @TableField("is_deleted") private Integer Deleted; ``` 最后修改:2022 年 08 月 02 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 1 如果文章有用,请随意打赏。
1 条评论
感谢分享,赞一个