diff --git a/pom.xml b/pom.xml index aa7e810f9..9d30b500d 100644 --- a/pom.xml +++ b/pom.xml @@ -30,6 +30,8 @@ 4.1.2 2.3 0.9.1 + 3.5.10.1 + 5.8.36 9.0.98 1.2.13 @@ -107,6 +109,13 @@ ${druid.version} + + + com.baomidou + mybatis-plus-boot-starter + ${mybatisplus.version} + + eu.bitwalker @@ -218,6 +227,12 @@ ${ruoyi.version} + + cn.hutool + hutool-all + ${hutool.version} + + diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index 4c16b9fd7..e7e88aa74 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -101,13 +101,27 @@ token: expireTime: 30 # MyBatis配置 -mybatis: - # 搜索指定包别名 - typeAliasesPackage: com.ruoyi.**.domain - # 配置mapper的扫描,找到所有的mapper.xml映射文件 - mapperLocations: classpath*:mapper/**/*Mapper.xml - # 加载全局的配置文件 - configLocation: classpath:mybatis/mybatis-config.xml +#mybatis: +# # 搜索指定包别名 +# typeAliasesPackage: com.ruoyi.**.domain +# # 配置mapper的扫描,找到所有的mapper.xml映射文件 +# mapperLocations: classpath*:mapper/**/*Mapper.xml +# # 加载全局的配置文件 +# configLocation: classpath:mybatis/mybatis-config.xml + +# mybatis-plus配置 +mybatis-plus: + # MyBatis 配置 + type-aliases-package: com.ruoyi.**.domain + mapper-locations: classpath*:mapper/**/*Mapper.xml + config-location: classpath:mybatis/mybatis-config.xml + map-underscore-to-camel-case: true + # 全局配置 + global-config: + db-config: + # 数据库配置 + id-type: auto + # PageHelper分页插件 pagehelper: diff --git a/ruoyi-common/pom.xml b/ruoyi-common/pom.xml index b0dddd963..65cc54adc 100644 --- a/ruoyi-common/pom.xml +++ b/ruoyi-common/pom.xml @@ -16,6 +16,22 @@ + + org.projectlombok + lombok + provided + + + + cn.hutool + hutool-all + + + + + com.baomidou + mybatis-plus-boot-starter + diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/MyBatisConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/MyBatisConfig.java index e30fe74fe..ce2a5f2e6 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/MyBatisConfig.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/MyBatisConfig.java @@ -113,20 +113,20 @@ public class MyBatisConfig return resources.toArray(new Resource[resources.size()]); } - @Bean - public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception - { - String typeAliasesPackage = env.getProperty("mybatis.typeAliasesPackage"); - String mapperLocations = env.getProperty("mybatis.mapperLocations"); - String configLocation = env.getProperty("mybatis.configLocation"); - typeAliasesPackage = setTypeAliasesPackage(typeAliasesPackage); - VFS.addImplClass(SpringBootVFS.class); - - final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); - sessionFactory.setDataSource(dataSource); - sessionFactory.setTypeAliasesPackage(typeAliasesPackage); - sessionFactory.setMapperLocations(resolveMapperLocations(StringUtils.split(mapperLocations, ","))); - sessionFactory.setConfigLocation(new DefaultResourceLoader().getResource(configLocation)); - return sessionFactory.getObject(); - } +// @Bean +// public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception +// { +// String typeAliasesPackage = env.getProperty("mybatis.typeAliasesPackage"); +// String mapperLocations = env.getProperty("mybatis.mapperLocations"); +// String configLocation = env.getProperty("mybatis.configLocation"); +// typeAliasesPackage = setTypeAliasesPackage(typeAliasesPackage); +// VFS.addImplClass(SpringBootVFS.class); +// +// final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); +// sessionFactory.setDataSource(dataSource); +// sessionFactory.setTypeAliasesPackage(typeAliasesPackage); +// sessionFactory.setMapperLocations(resolveMapperLocations(StringUtils.split(mapperLocations, ","))); +// sessionFactory.setConfigLocation(new DefaultResourceLoader().getResource(configLocation)); +// return sessionFactory.getObject(); +// } } \ No newline at end of file diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/MybatisPlusConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/MybatisPlusConfig.java new file mode 100644 index 000000000..8695fbf99 --- /dev/null +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/MybatisPlusConfig.java @@ -0,0 +1,28 @@ +package com.ruoyi.framework.config; + +import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; +import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * @author liangyq + * @date 2025-03-18 15:16 + */ +@Configuration +public class MybatisPlusConfig { + + /** + * 乐观锁{@link com.baomidou.mybatisplus.annotation.Version} + * + * @return + */ + @Bean + public MybatisPlusInterceptor mybatisPlusInterceptor() { + MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); + interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor()); + return interceptor; + } + + +} diff --git a/ruoyi-system/pom.xml b/ruoyi-system/pom.xml index 196529397..35a851822 100644 --- a/ruoyi-system/pom.xml +++ b/ruoyi-system/pom.xml @@ -17,6 +17,12 @@ + + org.projectlombok + lombok + provided + + com.ruoyi diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/TestDO.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TestDO.java new file mode 100644 index 000000000..b193234b0 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TestDO.java @@ -0,0 +1,24 @@ +package com.ruoyi.system.domain; + + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.Version; +import lombok.Data; + +/** + * @author liangyq + * @date 2025-03-18 15:26 + */ +@Data +@TableName("test") +public class TestDO { + + @TableId + private Long id; + + private String description; + + @Version + private Long version; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TestMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TestMapper.java new file mode 100644 index 000000000..67a1b6e09 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TestMapper.java @@ -0,0 +1,13 @@ +package com.ruoyi.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.system.domain.TestDO; +import org.springframework.stereotype.Repository; + +/** + * @author liangyq + * @date 2025-03-18 16:05 + */ +@Repository +public interface TestMapper extends BaseMapper { +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ITestService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ITestService.java new file mode 100644 index 000000000..634d7e3ff --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ITestService.java @@ -0,0 +1,14 @@ +package com.ruoyi.system.service; + +/** + * @author liangyq + * @date 2025-03-18 16:07 + */ +public interface ITestService { + + void insertTest(); + + void updateTest(); + + void listTest(); +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TestService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TestService.java new file mode 100644 index 000000000..377e65f38 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TestService.java @@ -0,0 +1,50 @@ +package com.ruoyi.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.ruoyi.system.domain.TestDO; +import com.ruoyi.system.mapper.TestMapper; +import com.ruoyi.system.service.ITestService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * @author liangyq + * @date 2025-03-18 16:08 + */ +@Slf4j +@Service +public class TestService implements ITestService { + @Autowired + private TestMapper testMapper; + + @Transactional + @Override + public void insertTest() { + TestDO testDO = new TestDO(); + testDO.setDescription("测试插入" + DateUtil.now()); + testDO.setVersion(0L); + testMapper.insert(testDO); + log.info("插入:{}", testDO); + } + + @Transactional + @Override + public void updateTest() { + TestDO testDO = new TestDO(); + testDO.setId(1L); + testDO.setDescription("测试修改" + DateUtil.now()); + testDO.setVersion(1L); + log.info("修改:{}", testMapper.updateById(testDO)); + } + + @Override + public void listTest() { + List testDOList = testMapper.selectList(Wrappers.lambdaQuery(TestDO.class).eq(TestDO::getId, 1)); + log.info("查询:{}", testDOList); + } +}