• ctrip 开源 DAL 框架相关问题总结


    ctrip 开源 DAL 框架 :https://github.com/ctripcorp/dal

    1、分库情况下的新增、查询

    如果配置分库、分表则新增、查询时必须满足以下条件之一,否则会抛出: DalException - Can not locate shard for testdb

    • 新增或查询的实体中包含用于分库或分表的字段
    • 使用 DalHints.setShardValue 来指定用于分库分表的值,使用这个值来计算 shardIndex

    demo 代码:

        @Test
        public void testQueryByPk1() throws Exception {
            TestTable testTable = new TestTable();
            // 查询条件包含用于分库的字段:title
            testTable.setTitle("testA");
            testTable.setAuthor("frank");
            // 或使用以下 DalHints 指定用于分库的 shardValue
            //DalHints dalHints = new DalHints().setShardValue("testA");
            //Collection<TestTable> list = dao.queryBy(testTable,dalHints);
            Collection<TestTable> list = dao.queryBy(testTable);
            assertTrue(list != null && !list.isEmpty());
        }

     2、dal.xml 说明

    <dal name="Dal.config">
        <databaseSets>
            <!--
                name - 逻辑数据库的名字
                provider - 逻辑数据库提供者是哪种类型的数据库,目前支持 mysql 和 sqlserver
                shardingStrategy - 指定分片的策略
             -->
            <databaseSet name="testdb" shardingStrategy="class=com.example.demo.dbshard.DbShardStrategy;columns=title;mod=2;" provider="mySqlProvider">
                <!--
                 name - 物理数据库的代号
                  databaseType - Master / Slave
                  sharding - 数据库分片 id
                  connectionString - 物理数据库的 id,用于在 datasource.xml 里面查找
                -->
                <add name="test_db_01" databaseType="Master" sharding="0" connectionString="test_db"/>
                <add name="test_db_02" databaseType="Master" sharding="1" connectionString="test_db_01"/>
            </databaseSet>
        </databaseSets>
    </dal>
  • 相关阅读:
    可实现B站 蒙版弹幕 效果的前端组件 —— Barrage UI
    C# 中的"yield"使用
    不遮挡人物弹幕是怎么实现的——图片蒙版效果-webkit-mask
    使用eslint检查代码质量
    vue 项目中assets 和static的区别
    快速生成html文本文档——typora
    VsCode中好用的git源代码管理插件GitLens
    C# 根据前台校验的值,决定是否执行后台方法
    C# 从字符串中取出英文字母
    C# 科学计数法转换成数字
  • 原文地址:https://www.cnblogs.com/frankyou/p/14527999.html
Copyright © 2020-2023  润新知