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属性变化时的一种处理方法的主要内容,如果未能解决你的问题,请参考以下文章