| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> mybatis-plus入门CRUD/日志/自动填充/乐观锁 -> 正文阅读 |
|
[Java知识库]mybatis-plus入门CRUD/日志/自动填充/乐观锁 |
入门 pom.xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.2</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-common</artifactId> <version>2.9.2</version> </dependency> application.yml spring: datasource: username: root password: 123456 url: jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8 driver-class-name: com.mysql.cj.jdbc.Driver 实体类 User.java @Data @AllArgsConstructor @NoArgsConstructor @ToString public class User{ @TableId(type = IdType.AUTO)//自增,注意数据库也需要设置自增 private int id; @ApiModelProperty(value = "姓名",name = "name",dataType = "String",required = true)//解释,名字,类型,是否可为空 private String name; private String pwd; } dao层Mapper接口 UserMapper.java @Mapper @Repository public interface UserMapper extends BaseMapper<User> { } 启动类下添加扫描器 @SpringBootApplication @MapperScan("com.shuo.dao")
public class MybatisPlusApplication { public static void main(String[] args) { SpringApplication.run(MybatisPlusApplication.class, args); } } 测试类 @SpringBootTest class MybatisPlusApplicationTests { @Autowired UserMapper userMapper; ????????//查 @Test void contextLoads() { List<User> users = userMapper.selectList(null); for (User user : users) { System.out.println(user.toString()); } } ????????//增 @Test public void testInsert(){ /*User user = new User(12, "小胖", "123456");*/ User user=new User(); user.setName("冉冉"); user.setPwd("789456"); userMapper.insert(user); //contextLoads(); } //改 @Test public void updatetest(){ contextLoads(); User user = new User(); user.setId(8); user.setName("李明"); user.setPwd("789798"); userMapper.updateById(user); contextLoads(); } } 日志自带的 application.yml mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl 自动填充 添加插入的时间,改变的时间 实体类 @Data @AllArgsConstructor @NoArgsConstructor @ToString public class User{ @TableId(type = IdType.AUTO)//自增 private int id; @ApiModelProperty(value = "姓名",name = "name",dataType = "String",required = true)//解释,名字,类型,是否可为空 private String name; private String pwd; // @JSONField(format = "yyyy-MM-dd HH:mm:ss") @TableField(fill = FieldFill.INSERT) private Date createTime; @TableField(fill = FieldFill.INSERT_UPDATE) private Date updateTime; handler MyMetaObjectHandler.java @Slf4j @Component public class MyMetaObjectHandler implements MetaObjectHandler { //插入时的填充策略 @Override public void insertFill(MetaObject metaObject) { log.info("start insert fill....."); this.setFieldValByName("createTime",new Date(),metaObject); this.setFieldValByName("updateTime",new Date(),metaObject); } //更新时的填充策略 @Override public void updateFill(MetaObject metaObject) { log.info("start update fill....."); this.setFieldValByName("updateTime",new Date(),metaObject); } } 乐观锁 实体类新增字段version @Data @AllArgsConstructor @NoArgsConstructor @ToString public class User{ @TableId(type = IdType.AUTO)//自增 private int id; @ApiModelProperty(value = "姓名",name = "name",dataType = "String",required = true)//解释,名字,类型,是否可为空 private String name; private String pwd; // @JSONField(format = "yyyy-MM-dd HH:mm:ss") @TableField(fill = FieldFill.INSERT) private Date createTime; @TableField(fill = FieldFill.INSERT_UPDATE) private Date updateTime; @TableField(value="version") @Version private Integer version; } 编写config配置文件 MybatisPlusConfig.java @EnableTransactionManagement @Configuration @MapperScan("com.shuo.dao")将扫描器可转移到此 public class MybatisPlusConfig { @Bean public OptimisticLockerInterceptor OptimisticLockerInnerInterceptor() { return new OptimisticLockerInterceptor();//名字容易出错 } } 乐观锁的测试 //测试乐观锁 @Test public void testOptimisticLocker(){ User user=userMapper.selectById(1L); user.setName("小白菜"); user.setPwd("cike567"); System.out.println(user); userMapper.updateById(user); } //乐观锁失败 多线程下失败情况 @Test public void testOptimisticLocker2(){ User user=userMapper.selectById(1L); user.setName("小土豆"); user.setPwd("cike567"); System.out.println(user); User user1 = userMapper.selectById(1L); user1.setName("小豆芽"); userMapper.updateById(user1); userMapper.updateById(user); } |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 0:14:52- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |