mybatis-plus防止全表更新与删除
宁要好梨一个,不要烂梨一筐。积极肯干和忠心耿耿的人即使只有两三个,也比十个朝气沉沉的人强。——列宁
我们可以如下配置
@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {    MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();    PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(DbType.MYSQL);    // 阻止全表更新与删除    BlockAttackInnerInterceptor blockAttackInnerInterceptor = new BlockAttackInnerInterceptor();    // 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求  默认false    paginationInnerInterceptor.se ...
手动回滚、提交事务
再小的个子,也能给沙漠留下长长的身影;再小的人物,也能让历史吐出重重的叹息。——余秋雨《文化苦旅》
我们可以手动管理事务
首先需要引用两个Bean
@Resourceprivate TransactionDefinition transactionDefinition;@Resourceprivate IArticleEnclosureService articleEnclosureService;
然后是使用
      PlatformTransactionManager transactionManager = Objects.requireNonNull(transactionTemplate.getTransactionManager());      TransactionStatus transactionStatus = transactionManager.getTransaction(transactionDefinition);if (逻辑执行正确) {	//提交事务	transactionManager.commit(transactionSta ...
自用模板sql
真正的伟人,能在愚昧和喧嚣的物质世界中,静心倾听荒漠的声音。——深泉学院(美国)
自用sql,我建站时每张表必备如下字段:
DROP TABLE IF EXISTS `common_template`;CREATE TABLE `common_template`  (  `id` bigint(0) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键',  `is_deleted` tinyint(0) UNSIGNED NOT NULL DEFAULT 0 COMMENT '逻辑删除字段 0未删除 1已删除',  `gmt_create` datetime(0) NOT NULL COMMENT '现在时表示主动式创建',  `gmt_modified` datetime(0) NOT NULL COMMENT '过去分词表示被动式更新',  PRIMARY KEY (`id`) USING BTREE) ENGINE = InnoDB CHARACTER SET ...
thymeleaf调用springBean
没有经过战斗的舍弃,是虚伪的;没有经过苦难的超脱,是轻佻的。——傅雷
昨天写了一篇关于前端精度丢失的博客
今天发现还有个问题,如果我们需要使用thymeleaf在js中使用获取的数据是一个对象
并且里面的属性还是超出16位的Long类型的话,仍然会导致精度丢失
这里我们可以直接写一个JsonManager
/** * Json转换管理层 * * @author <achao1441470436@gmail.com> * @since 2021/7/7 11:12 */public interface JsonManager {    /**     * 序列化处理精度丢失     *     * @param serializeObj 将要序列化的对象     * @return java.lang.Object     * @author <achao1441470436@gmail.com>     * @since 2021/7/7 11:16     */    Object browserCompatible(Object seriali ...
js精度丢失坑
飞蛾扑火时一定是极快乐幸福的。——三毛
我们在进行开发时可能会遇到这样一个坑,那就是js代码的精度丢失
可以看到16位以后就会出现精度丢失的问题
我们定义一个简单接口,这里用com.baomidou.mybatisplus.core.toolkit.IdWorker.getId()生成19位为Long类型的id
@GetMapping("json")@ResponseBodypublic Ruben json() {    return new Ruben(IdWorker.getId());}
返回的Ruben对象
/** * @author <achao1441470436@gmail.com> * @since 2021/7/6 0006 21:37 */public class Ruben {    private Long id;    public Ruben(Long id) {        this.id = id;    }    public Long getId()  ...
在js中获取thymeleaf变量(二)
所谓天才,只不过是把别人喝咖啡的功夫都用在工作上了。——鲁迅
上回写过在js中获取thymeleaf变量
但比较繁琐
这次用简单的写法
<script>    var id = [[${id}]]    console.log(id)</script>
非常简单~
不过要注意一点,如果是对象格式的数据,需要在script标签上加th:inline="javascript"
<script th:inline="javascript">    var id = [[${id}]]    console.log(id)</script>
在页面中也可以直接使用,可以代替th:text
<div>    [[${id}]]</div>
效果如下
如果是字符串也支持的
<div>    [[${id}]]    [['id']]</div>
qq推广
在自己身上,克服这个时代。——尼采
我们接入QQ客服,可以让用户在网页上直接打开QQ窗口与号主交谈
进入网址
登录后刷新一下页面
选择想要的样式,复制下面的代码
然后我们复制到我们的网站上,点击打开,然后到“QQ在线状态”官网开启服务。
然后就可以使用QQ客服啦~
markdown转html插件
人不能象走兽那样活着,应该追求知识和美德。——但丁
商店页
使用方式很简单
直接右键选择markdown转换即可
然后就好了
redisson实现分布式锁
性格左右命运,气度影响格局。——余世雅博士
代码如下
   public static int EXPIRE_SECONDS = 5 * 60;   @Resource   private RedissonClient redissonClient; /**    * 加redisson分布式锁    *    * @param lockName 锁名    * @param supplier 调用方法    * @return T    * @author <achao1441470436@gmail.com>    * @since 2021/7/2 17:42    */   @Override   @Transactional(rollbackFor = Throwable.class, isolation = Isolation.READ_UNCOMMITTED, propagation = Propagation.REQUIRED)   public <T> T lockByName(String lockName, Supplier<T& ...
新标签页打开
人民不仅有权爱国,而且爱国是个义务,是一种光荣。——徐特立
<a href="https://vampireachao.gitee.io/" target="_self">默认当前页面打开</a><a href="https://vampireachao.gitee.io/" target="_blank">新页面打开</a><a href="" target="ruben">在frame中打开</a><iframe src="" name="ruben"></iframe><a href="https://vampireachao.gitee.io/" target="_parent">如果是在iframe里,无视iframe直接当前外层页面打开</a><a  ...






