LWC属性变化时的一种处理方法

Posted 平静的寄居者

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LWC属性变化时的一种处理方法相关的知识,希望对你有一定的参考价值。

LWC(Lightning Web Component)的属性name, role发生变化,或者要删除某个属性时,Salesforce会自动检查是否有Flow引用这个lwc,如果有,则会提示,不能删除。手工操作,需要在Flow中先去掉这个lwc,然后发布修改后的lwc,再在Flow中加回去。问题是Flow往往有好几个版本(version),一个个地手工调整,非常麻烦,几乎不可能。所以以前碰到这种情况,只好弃用原来的属性,另外添加一个。

今天忽然想到可以利用sfdx,实现一定程度的简化操作。具体办法是:

1.用sfdx force:source:retieve -m “Flow:foo-1” -r c:\\bar将冲突的Flow版本下载到本地目录。这里的-1是Flow的版本号。也可以用最新的sf命令,格式差不多,sf force source retrieve -m “Flow:foo-1” -r c:\\bar。文档上说推荐用sf project retrieve start,但是下载的是zip文件,并不方便。注意最新版本即使指定了版本号,下载后也会自动去掉版本号,需要手工补上。

2.手工删除冲突的Flow版本。这个本来也能用命令实现,但是如果Flow已经激活或者有interview在运行则不可以,所以还是手工删除比较方便,编程自动操作需要考虑很多情况,比较麻烦。如果Flow的所有版本都有冲突,可以直接删除Flow本身。

3.上传修改后的lwc。

4.用sf project deploy start -d c:\\bar一次性上传所有的Flow版本,如果整个Flow已被删除,会自动重建,并保留原来的版本号。注意最新的版本一定要手工补上版本号。

当然,在此基础上,可以进一步用VBScript, PowerShell等编程,提高自动化程度。

4.mybatis属性和表的列名不相同时的处理方法

/**
* 属性和表的列名不相同时的处理方法
* 1.sql中给列重新命名:
*    select tid id, tname name from teacher t where tid=#{id}
* 2.在teacherMapper.xml中使用resultMap标签
*    <select id="getTeacher2" parameterType="int" resultMap="getTeacherMap">
*     select * from teacher where tid=#{id}
*    </select>
*    <resultMap type="Teacher" id="getTeacherMap">
*      <id property="id" column="tid"/>
*      <result property="name" column="tname"/>
*    </resultMap>
* @author 魅力_小生
*
*/

 

mysql表:Teacher[tid, tname], Java 实体类:Teacher[id, name]

建表语句:

create table
CREATE TABLE `teacher` (
   `tid` int(11) NOT NULL auto_increment,
   `tname` varchar(20) default NULL,
   PRIMARY KEY  (`tid`)
 ) 

添加2条数据:
1 老师A
2 老师B

Teacher实体类:

public class Teacher {
    private int id;
    private String name;
    
    
    public Teacher() {
        super();
    }
    public Teacher(int id, String name) {
        super();
        this.id = id;
        this.name = name;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Override
    public String toString() {
        return "Teacher [id=" + id + ", name=" + name + "]";
    }
    
}

一、第一种处理方法:sql中给列重新命名

select tid id, tname name from teacher t where tid=#{id}

1.1 写实体类关联的MapperXML:

<mapper namespace="com.mlxs.mybatis.test3.teacherMapper">
    <!-- 
     * 属性和表的列名不相同时的处理方法
      *         1.sql中给列重新命名:
      *             select tid id, tname name from teacher t where tid=#{id}
     -->
    <select id="getTeacher" parameterType="int" resultType="Teacher">
        select tid id, tname name from teacher t where tid=#{id}
    </select>
</mapper>

1.2 写java测试类

/**
     * 属性和表的列名不相同时的2种处理方法
     *         1.sql中给列重新命名:
     *             select tid id, tname name from teacher t where tid=#{id}
     * @author 魅力_小生
     *
     */
    @Test
    public void getTeacher(){
        //创建session,设置事务为true
        SqlSession session = MyBatisUtil.getSessionFactory().openSession(true);
        String statement = "com.mlxs.mybatis.test3.teacherMapper.getTeacher";
        Teacher teacher = session.selectOne(statement, "1");
        System.out.println("teacher--->"+teacher);
        session.close();
    }

1.3 结果

teacher--->Teacher [id=1, name=老师A]

 

二、第二种处理方法:使用resultMap标签

2.1 写实体类关联的MapperXML:

<mapper namespace="com.mlxs.mybatis.test3.teacherMapper">
    
    <!-- 
        属性和表的列名不相同时的处理方法:
        2.在teacherMapper.xml中使用resultMap标签 
    -->
    <select id="getTeacher2" parameterType="int" resultMap="getTeacherMap">
        select * from teacher where tid=#{id}
    </select>
    <resultMap type="Teacher" id="getTeacherMap">
        <id property="id" column="tid"/>
        <result property="name" column="tname"/>
    </resultMap>
</mapper>

2.2 Java测试类

/**
     * 属性和表的列名不相同时的2种处理方法
     *         2.在teacherMapper.xml中使用resultMap标签
     *         <select id="getTeacher2" parameterType="int" resultMap="getTeacherMap">
     *            select * from teacher where tid=#{id}
     *        </select>
     *        <resultMap type="Teacher" id="getTeacherMap">
     *            <id property="id" column="tid"/>
     *            <result property="name" column="tname"/>
     *        </resultMap>
     * @author 魅力_小生
     *
     */
    @Test
    public void getTeacher2(){
        //创建session,设置事务为true
        SqlSession session = MyBatisUtil.getSessionFactory().openSession(true);
        String statement = "com.mlxs.mybatis.test3.teacherMapper.getTeacher2";
        Teacher teacher = session.selectOne(statement, "1");
        System.out.println("teacher--->"+teacher);
        session.close();
    }

2.3 结果

teacher--->Teacher [id=1, name=老师A]

 

以上是关于LWC属性变化时的一种处理方法的主要内容,如果未能解决你的问题,请参考以下文章

组合框中的默认选择列表值 - LWC

Salesforce: lwc处理Flow的Navigation事件

4.mybatis属性和表的列名不相同时的处理方法

侦听对象 watch

MySql 死锁时的一种解决办法

Unity 代码设置UI尺寸的一种方法