提交 df8ec6ad authored 作者: 陈世营's avatar 陈世营

update mybatis

上级 003df6d1
...@@ -28,8 +28,8 @@ ...@@ -28,8 +28,8 @@
<spring-tuple.version>1.0.0.RELEASE</spring-tuple.version> <spring-tuple.version>1.0.0.RELEASE</spring-tuple.version>
<druid.version>1.1.12</druid.version> <druid.version>1.1.12</druid.version>
<mybatis-spring.version>1.3.2</mybatis-spring.version> <!-- <mybatis-spring.version>1.3.2</mybatis-spring.version>-->
<mybatis-plus.version>3.0.4</mybatis-plus.version> <!-- <mybatis-plus.version>3.0.4</mybatis-plus.version>-->
<mybatis.version>3.4.6</mybatis.version> <mybatis.version>3.4.6</mybatis.version>
<loit-build-spi-common.version>1.0-SNAPSHOT</loit-build-spi-common.version> <loit-build-spi-common.version>1.0-SNAPSHOT</loit-build-spi-common.version>
...@@ -44,12 +44,12 @@ ...@@ -44,12 +44,12 @@
<!--Own dependencies --> <!--Own dependencies -->
<dependency> <dependency>
<groupId>com.timeloit.project</groupId> <groupId>com.loit.project</groupId>
<artifactId>loit-build-spi-common</artifactId> <artifactId>loit-build-spi-common</artifactId>
<version>${loit-build-spi-common.version}</version> <version>${loit-build-spi-common.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.timeloit.project</groupId> <groupId>com.loit.project</groupId>
<artifactId>loit-build-web-common</artifactId> <artifactId>loit-build-web-common</artifactId>
<version>${loit-build-web-common.version}</version> <version>${loit-build-web-common.version}</version>
</dependency> </dependency>
...@@ -64,16 +64,22 @@ ...@@ -64,16 +64,22 @@
<artifactId>druid</artifactId> <artifactId>druid</artifactId>
<version>${druid.version}</version> <version>${druid.version}</version>
</dependency> </dependency>
<dependency> <!-- <dependency>-->
<groupId>org.mybatis.spring.boot</groupId> <!-- <groupId>org.mybatis.spring.boot</groupId>-->
<artifactId>mybatis-spring-boot-starter</artifactId> <!-- <artifactId>mybatis-spring-boot-starter</artifactId>-->
<version>${mybatis-spring.version}</version> <!-- <version>${mybatis-spring.version}</version>-->
</dependency> <!-- </dependency>-->
<!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus --> <!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus -->
<!-- <dependency>-->
<!-- <groupId>com.baomidou</groupId>-->
<!-- <artifactId>mybatis-plus</artifactId>-->
<!-- <version>${mybatis-plus.version}</version>-->
<!-- </dependency>-->
<dependency> <dependency>
<groupId>com.baomidou</groupId> <groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId> <artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis-plus.version}</version> <version>3.0.4</version>
</dependency> </dependency>
<dependency> <dependency>
...@@ -125,6 +131,12 @@ ...@@ -125,6 +131,12 @@
<version>${swagger-models.version}</version> <version>${swagger-models.version}</version>
</dependency> </dependency>
<dependency>
<groupId>com.timeloit.project</groupId>
<artifactId>loit-component-jetcache-client</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies> </dependencies>
</dependencyManagement> </dependencyManagement>
...@@ -154,12 +166,12 @@ ...@@ -154,12 +166,12 @@
<repository> <repository>
<id>nexus-releases</id> <id>nexus-releases</id>
<name>Nexus Release Repository</name> <name>Nexus Release Repository</name>
<url>http://39.100.254.140:12010/repository/maven-releases/</url> <url>http://113.208.119.11:9101/repository/maven-releases/</url>
</repository> </repository>
<snapshotRepository> <snapshotRepository>
<id>nexus-snapshots</id> <id>nexus-snapshots</id>
<name>Nexus Snapshot Repository</name> <name>Nexus Snapshot Repository</name>
<url>http://39.100.254.140:12010/repository/maven-snapshots/</url> <url>http://113.208.119.11:9101/repository/maven-snapshots/</url>
</snapshotRepository> </snapshotRepository>
</distributionManagement> </distributionManagement>
...@@ -167,7 +179,7 @@ ...@@ -167,7 +179,7 @@
<repository> <repository>
<id>nexus-loit-dev</id> <id>nexus-loit-dev</id>
<name>Nexus Repository</name> <name>Nexus Repository</name>
<url>http://39.100.254.140:12010/repository/maven-public/</url> <url>http://113.208.119.11:9101/repository/maven-public/</url>
<snapshots> <snapshots>
<enabled>true</enabled> <enabled>true</enabled>
</snapshots> </snapshots>
...@@ -180,7 +192,7 @@ ...@@ -180,7 +192,7 @@
<pluginRepository> <pluginRepository>
<id>nexus-loit-dev</id> <id>nexus-loit-dev</id>
<name>Nexus Plugin Repository</name> <name>Nexus Plugin Repository</name>
<url>http://39.100.254.140:12010/repository/maven-public/</url> <url>http://113.208.119.11:9101/repository/maven-public/</url>
<snapshots> <snapshots>
<enabled>true</enabled> <enabled>true</enabled>
</snapshots> </snapshots>
...@@ -189,4 +201,5 @@ ...@@ -189,4 +201,5 @@
</releases> </releases>
</pluginRepository> </pluginRepository>
</pluginRepositories> </pluginRepositories>
</project> </project>
\ No newline at end of file
...@@ -16,14 +16,18 @@ ...@@ -16,14 +16,18 @@
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>com.timeloit.project</groupId> <groupId>com.loit.project</groupId>
<artifactId>loit-build-spi-common</artifactId> <artifactId>loit-build-spi-common</artifactId>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.timeloit.project</groupId> <groupId>com.loit.project</groupId>
<artifactId>loit-build-web-common</artifactId> <artifactId>loit-build-web-common</artifactId>
</dependency> </dependency>
<dependency>
<groupId>com.timeloit.project</groupId>
<artifactId>loit-component-jetcache-client</artifactId>
</dependency>
<!--common--> <!--common-->
<dependency> <dependency>
...@@ -114,14 +118,19 @@ ...@@ -114,14 +118,19 @@
<artifactId>druid</artifactId> <artifactId>druid</artifactId>
</dependency> </dependency>
<dependency> <!-- <dependency>-->
<groupId>org.mybatis.spring.boot</groupId> <!-- <groupId>org.mybatis.spring.boot</groupId>-->
<artifactId>mybatis-spring-boot-starter</artifactId> <!-- <artifactId>mybatis-spring-boot-starter</artifactId>-->
</dependency> <!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>com.baomidou</groupId>-->
<!-- <artifactId>mybatis-plus</artifactId>-->
<!-- </dependency>-->
<dependency> <dependency>
<groupId>com.baomidou</groupId> <groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId> <artifactId>mybatis-plus-boot-starter</artifactId>
</dependency> </dependency>
<dependency> <dependency>
...@@ -149,6 +158,8 @@ ...@@ -149,6 +158,8 @@
<artifactId>swagger-models</artifactId> <artifactId>swagger-models</artifactId>
</dependency> </dependency>
</dependencies> </dependencies>
<build> <build>
......
...@@ -13,6 +13,7 @@ import org.springframework.cloud.openfeign.EnableFeignClients; ...@@ -13,6 +13,7 @@ import org.springframework.cloud.openfeign.EnableFeignClients;
@EnableFeignClients @EnableFeignClients
@MapperScan({"com.loit.mybatis.example"}) @MapperScan({"com.loit.mybatis.example"})
//@SpringBootApplication(scanBasePackages = {"com.loit"}, exclude = DataSourceAutoConfiguration.class) //@SpringBootApplication(scanBasePackages = {"com.loit"}, exclude = DataSourceAutoConfiguration.class)
//@SpringBootApplication
@SpringBootApplication(scanBasePackages = {"com.loit.mybatis.example"}) @SpringBootApplication(scanBasePackages = {"com.loit.mybatis.example"})
@Slf4j @Slf4j
public class LoitMybatisExampleApplication { public class LoitMybatisExampleApplication {
......
...@@ -2,13 +2,14 @@ package com.loit.mybatis.example.controller; ...@@ -2,13 +2,14 @@ package com.loit.mybatis.example.controller;
import com.loit.mybatis.example.dto.CommodityDTO; import com.loit.mybatis.example.dto.CommodityDTO;
import com.loit.mybatis.example.entity.TStorage;
import com.loit.mybatis.example.response.ObjectResponse; import com.loit.mybatis.example.response.ObjectResponse;
import com.loit.mybatis.example.service.ITStorageCacheService;
import com.loit.mybatis.example.service.ITStorageService; import com.loit.mybatis.example.service.ITStorageService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
/** /**
* 前端控制器 * 前端控制器
*/ */
...@@ -18,8 +19,12 @@ import javax.annotation.Resource; ...@@ -18,8 +19,12 @@ import javax.annotation.Resource;
public class TStorageController { public class TStorageController {
@Resource(name = "tStorageServiceImpl") @Autowired
private ITStorageService storageService; private ITStorageService iTStorageService;
@Autowired
private ITStorageCacheService iTStorageCacheService;
/** /**
* 扣减库存 * 扣减库存
...@@ -27,7 +32,7 @@ public class TStorageController { ...@@ -27,7 +32,7 @@ public class TStorageController {
@PostMapping("dec_storage") @PostMapping("dec_storage")
ObjectResponse decreaseStorage(@RequestBody CommodityDTO commodityDTO) { ObjectResponse decreaseStorage(@RequestBody CommodityDTO commodityDTO) {
log.info("请求库存微服务:{}", commodityDTO.toString()); log.info("请求库存微服务:{}", commodityDTO.toString());
return storageService.decreaseStorage(commodityDTO); return iTStorageService.decreaseStorage(commodityDTO);
} }
...@@ -40,7 +45,22 @@ public class TStorageController { ...@@ -40,7 +45,22 @@ public class TStorageController {
commodityDTO.setName("水杯"); commodityDTO.setName("水杯");
log.info("请求库存微服务:{}", commodityDTO.toString()); log.info("请求库存微服务:{}", commodityDTO.toString());
return storageService.decreaseStorage(commodityDTO); return iTStorageService.decreaseStorage(commodityDTO);
} }
@GetMapping("testCache")
void testCache(Integer storageId) {
TStorage storageCache = iTStorageCacheService.getStorageCache(storageId);
log.info(storageCache.toString());
}
@GetMapping("testCacheRemove")
void testCacheRemove(Integer storageId) {
iTStorageCacheService.removeCache(storageId);
}
} }
package com.loit.mybatis.example.entity; package com.loit.mybatis.example.entity;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model; import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable; import java.io.Serializable;
@Data @Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
//默认映射表明t_storage 也可以指定 tablename
@TableName("t_storage")
public class TStorage extends Model<TStorage> { public class TStorage extends Model<TStorage> {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
//默认 ID 雪花算法Long
//如果 字段默认叫ID 且雪花算法 可不加注解
@TableId(value = "id", type = IdType.AUTO) @TableId(value = "id", type = IdType.AUTO)
private Integer id; private Integer id;
//默认数据库中字段是下划线commodity_code
// condition 配合查询参数是实体类型
@TableField(condition = SqlCondition.LIKE)
private String commodityCode; private String commodityCode;
//如果数据库字段和表字段不一致需要使用注解 @TableField
@TableField("name")
private String name; private String name;
private Integer count; private Integer count;
//
//
//
//
/**
* 排除非表字段
* private static String remark;
* <p>
* 加 transient 后不参与序列号
* private transient String remark;
*/
@TableField(exist = false)
private String remark;
@Override @Override
protected Serializable pkVal() { protected Serializable pkVal() {
return this.id; return this.id;
} }
@Override
public String toString() {
return "TStorage{" +
", id=" + id +
", commodityCode=" + commodityCode +
", name=" + name +
", count=" + count +
"}";
}
} }
...@@ -15,4 +15,8 @@ public interface TStorageMapper extends BaseMapper<TStorage> { ...@@ -15,4 +15,8 @@ public interface TStorageMapper extends BaseMapper<TStorage> {
* @Return: * @Return:
*/ */
int decreaseStorage(@Param("commodityCode") String commodityCode, @Param("count") Integer count); int decreaseStorage(@Param("commodityCode") String commodityCode, @Param("count") Integer count);
// @Select("select * from t_storage ${ew.customSqlSegment}")
// List<TStorage> selectAll(@Param(Constants.WRAPPER) Wrapper<TStorage> wrapper);
} }
package com.loit.mybatis.example.service;
import com.loit.mybatis.example.entity.TStorage;
/**
* 仓库Cache服务
*/
public interface ITStorageCacheService {
TStorage getStorageCache(Integer storageId);
void removeCache(Integer storageId);
}
...@@ -6,6 +6,8 @@ import com.loit.mybatis.example.dto.CommodityDTO; ...@@ -6,6 +6,8 @@ import com.loit.mybatis.example.dto.CommodityDTO;
import com.loit.mybatis.example.entity.TStorage; import com.loit.mybatis.example.entity.TStorage;
import com.loit.mybatis.example.response.ObjectResponse; import com.loit.mybatis.example.response.ObjectResponse;
import java.util.List;
/** /**
* 仓库服务 * 仓库服务
*/ */
...@@ -15,4 +17,18 @@ public interface ITStorageService extends IService<TStorage> { ...@@ -15,4 +17,18 @@ public interface ITStorageService extends IService<TStorage> {
* 扣减库存 * 扣减库存
*/ */
ObjectResponse decreaseStorage(CommodityDTO commodityDTO); ObjectResponse decreaseStorage(CommodityDTO commodityDTO);
/**
* 查询全部库存
*/
List<TStorage> findAll();
/**
* 分页查询库存信息
*
* @PageNum 当前页
* @PageSize 每页显示数量
*/
List<TStorage> findPage(Long pageNum, Long pageSize);
} }
package com.loit.mybatis.example.service.impl;
import com.alicp.jetcache.Cache;
import com.alicp.jetcache.RefreshPolicy;
import com.alicp.jetcache.anno.CacheType;
import com.alicp.jetcache.anno.CreateCache;
import com.loit.mybatis.example.entity.TStorage;
import com.loit.mybatis.example.service.ITStorageCacheService;
import com.loit.mybatis.example.service.ITStorageService;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.util.concurrent.TimeUnit;
@Service("iTStorageCacheService")
public class ITStorageCacheServiceImpl implements ITStorageCacheService {
@Resource(name = "iTStorageService")
private ITStorageService itStorageService;
@CreateCache(expire = 100, cacheType = CacheType.REMOTE)
private Cache<Integer, TStorage> storageCache;
@Override
public TStorage getStorageCache(Integer storageId) {
return storageCache.get(storageId);
}
@Override
public void removeCache(Integer id) {
storageCache.remove(id);
}
@PostConstruct
public void init() {
// 自动刷新
RefreshPolicy policy = RefreshPolicy.newPolicy(5, TimeUnit.MINUTES).stopRefreshAfterLastAccess(30, TimeUnit.MINUTES);
storageCache.config().setLoader(this::loadMenuByUserFromDatabase);
storageCache.config().setRefreshPolicy(policy);
}
private TStorage loadMenuByUserFromDatabase(Integer id) {
return itStorageService.getById(id);
}
}
package com.loit.mybatis.example.service.impl; package com.loit.mybatis.example.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.loit.mybatis.example.dto.CommodityDTO; import com.loit.mybatis.example.dto.CommodityDTO;
import com.loit.mybatis.example.entity.TStorage; import com.loit.mybatis.example.entity.TStorage;
...@@ -7,16 +10,20 @@ import com.loit.mybatis.example.enums.RspStatusEnum; ...@@ -7,16 +10,20 @@ import com.loit.mybatis.example.enums.RspStatusEnum;
import com.loit.mybatis.example.mapper.TStorageMapper; import com.loit.mybatis.example.mapper.TStorageMapper;
import com.loit.mybatis.example.response.ObjectResponse; import com.loit.mybatis.example.response.ObjectResponse;
import com.loit.mybatis.example.service.ITStorageService; import com.loit.mybatis.example.service.ITStorageService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/** /**
* <p> * <p>
* 库存服务实现类 * 库存服务实现类
* </p> * </p>
*/ */
@Service(value = "tStorageServiceImpl") @Service(value = "iTStorageService")
@Transactional(readOnly = true) @Transactional(readOnly = true)
@Slf4j
public class TStorageServiceImpl extends ServiceImpl<TStorageMapper, TStorage> implements ITStorageService { public class TStorageServiceImpl extends ServiceImpl<TStorageMapper, TStorage> implements ITStorageService {
@Override @Override
...@@ -33,6 +40,37 @@ public class TStorageServiceImpl extends ServiceImpl<TStorageMapper, TStorage> i ...@@ -33,6 +40,37 @@ public class TStorageServiceImpl extends ServiceImpl<TStorageMapper, TStorage> i
response.setStatus(RspStatusEnum.FAIL.getCode()); response.setStatus(RspStatusEnum.FAIL.getCode());
response.setMessage(RspStatusEnum.FAIL.getMessage()); response.setMessage(RspStatusEnum.FAIL.getMessage());
return response; return response;
} }
@Override
public List<TStorage> findAll() {
// 方式一:
// List<TStorage> allStorage = this.list(null);
// 方式二:
QueryWrapper<TStorage> queryWrapper = new QueryWrapper<>();
List<TStorage> allStorage = this.list(queryWrapper);
// 方式三:
// TStorage storage = new TStorage();
// List<TStorage> allStorage = storage.selectAll();
return allStorage;
}
@Override
public List<TStorage> findPage(Long pageNum, Long pageSize) {
QueryWrapper<TStorage> queryWrapper = new QueryWrapper<>();
Page<TStorage> page = new Page<>(pageNum, pageSize);
//分页数据
IPage<TStorage> pageInfo = this.page(page, queryWrapper);
return pageInfo.getRecords();
}
} }
...@@ -49,5 +49,45 @@ spring: ...@@ -49,5 +49,45 @@ spring:
username: root username: root
validation-query: SELECT 1 validation-query: SELECT 1
mybatis: #mybatis:
mapper-locations: classpath*:/mapper/*.xml # mapper-locations: classpath*:/mapper/*.xml
\ No newline at end of file # # 实体扫描,多个package用逗号或者分号分隔
# type-aliases-package: com.loit.mybatis.example
# configuration:
# # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用
# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
mybatis-plus:
mapper-locations: classpath*:/mapper/*.xml
# jetcache使用
jetcache:
areaInCacheName: false
# 控制台输出统计数据,统计间隔,0表示不统计
statIntervalMinutes: 1
local:
default:
limit: 300
expireAfterWriteInMillis: 100000
# 缓存类型。tair、redis为当前支持的远程缓存;linkedhashmap、caffeine为当前支持的本地缓存类型
type: linkedhashmap
keyConvertor: fastjson
remote:
default:
keyConvertor: fastjson
valueEncoder: java
valueDecoder: java
poolConfig:
minIdle: 5
maxIdle: 20
maxTotal: 50
type: redis.lettuce
uri: redis://portal2019@39.100.254.140:6379/
#redis://password@127.0.0.1:6379/0
logging:
level:
root: warn
com.loit.mybatis: trace
pattern:
console: '%p%m%n'
...@@ -22,4 +22,5 @@ ...@@ -22,4 +22,5 @@
update t_storage set count = count-${count} where commodity_code = #{commodityCode} update t_storage set count = count-${count} where commodity_code = #{commodityCode}
</update> </update>
</mapper> </mapper>
package com.loit.mybatis.example;
\ No newline at end of file
package com.loit.mybatis.example.service;
import com.loit.mybatis.example.entity.TStorage;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import javax.annotation.Resource;
import java.util.List;
@RunWith(SpringRunner.class)
@SpringBootTest
@Slf4j
public class ITStorageServiceTest {
@Resource(name = "iTStorageService")
private ITStorageService itStorageService;
@Test
public void testFindAll() {
List<TStorage> allDate = itStorageService.findAll();
log.info(allDate.toString());
}
@Test
public void testFindPage() {
List<TStorage> allDate = itStorageService.findPage(0L, 20L);
log.info(allDate.toString());
}
@Test
public void testGetById() {
TStorage storage = itStorageService.getById(1);
log.info(storage.toString());
}
}
/*
Navicat MySQL Data Transfer
Source Server : 39.98.202.173seata
Source Server Version : 50725
Source Host : 39.98.202.173:3306
Source Database : loit-example-seata
Target Server Type : MYSQL
Target Server Version : 50725
File Encoding : 65001
Date: 2020-02-10 09:21:32
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for t_storage
-- ----------------------------
DROP TABLE IF EXISTS `t_storage`;
CREATE TABLE "t_storage" (
"id" int(11) NOT NULL AUTO_INCREMENT,
"commodity_code" varchar(255) DEFAULT NULL,
"name" varchar(255) DEFAULT NULL,
"count" int(11) DEFAULT '0',
"create_time" datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY ("id"),
UNIQUE KEY "commodity_code" ("commodity_code")
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论