MyBatis Generator系列(二)----自定義CommentGenerator實現中文註釋
一、簡介
由於MyBatis Generator自帶了生成註釋的功能,但是,是英文的而且生成的根本無法理解,所以可以通過,修改他的原始碼來實現生成中文的註釋,具體方式有以下幾種:
1) 自定義CommentGenerator
2) 修改原始碼
3) PluginAdapter外掛的形式
二、自定義CommentGenerator實現中文註釋
2.1、先建立Maven專案
然後右鍵專案->new->source folder,輸入src/main/resources,建好resources目錄
然後在POM.XML中加入以下依賴:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.fendo</groupId> <artifactId>mybatis-generator-plus</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>mybatis-generator-plus</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.3.5</version> </dependency> <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc6</artifactId> <version>6.0</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.9</version> </dependency> </dependencies> <build> <finalName>mybatis-generator-plus</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build> </project>
引入了mybatis-generator-core1.3.5和mysql,oracle。
注意:
ojdbc6需要自己手動進行安裝,下載ojdbc6之後,通過以下命令進行安裝:
mvn install:install-file -Dfile=C:/Users/fendo/Downloads/ojdbc6.jar -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=6.0 -Dpackaging=jar -DgeneratePom=true
2.2、建立MyCommentGenerator類實現CommentGenerator介面
package org.mybatis.generator; import static org.mybatis.generator.internal.util.StringUtility.isTrue; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Properties; import org.mybatis.generator.api.CommentGenerator; import org.mybatis.generator.api.IntrospectedColumn; import org.mybatis.generator.api.IntrospectedTable; import org.mybatis.generator.api.dom.java.CompilationUnit; import org.mybatis.generator.api.dom.java.Field; import org.mybatis.generator.api.dom.java.InnerClass; import org.mybatis.generator.api.dom.java.InnerEnum; import org.mybatis.generator.api.dom.java.JavaElement; import org.mybatis.generator.api.dom.java.Method; import org.mybatis.generator.api.dom.java.TopLevelClass; import org.mybatis.generator.api.dom.xml.TextElement; import org.mybatis.generator.api.dom.xml.XmlElement; import org.mybatis.generator.api.dom.java.Parameter; import org.mybatis.generator.config.MergeConstants; import org.mybatis.generator.config.PropertyRegistry; /** * @Title: MyCommentGenerator.java * @Package com.fendo.mybatis_generator_plus * @Description: mybatis generator 自定義comment生成器. * 基於MBG 1.3.5 * @author fendo * @date 2017年10月5日 下午3:07:26 * @version V1.0 */ public class MyCommentGenerator implements CommentGenerator{ /** * properties配置檔案 */ private Properties properties; /** * properties配置檔案 */ private Properties systemPro; /* * 父類時間 */ private boolean suppressDate; /** * 父類所有註釋 */ private boolean suppressAllComments; /** * 當前時間 */ private String currentDateStr; public MyCommentGenerator() { super(); properties = new Properties(); systemPro = System.getProperties(); suppressDate = false; suppressAllComments = false; currentDateStr = (new SimpleDateFormat("yyyy-MM-dd")).format(new Date()); } /** * Java類的類註釋 */ @Override public void addClassComment(InnerClass innerClass, IntrospectedTable introspectedTable) { if (suppressAllComments) { return; } StringBuilder sb = new StringBuilder(); innerClass.addJavaDocLine("/**"); sb.append(" * "); sb.append(introspectedTable.getFullyQualifiedTable()); sb.append(" "); sb.append(getDateString()); innerClass.addJavaDocLine(sb.toString().replace("\n", " ")); innerClass.addJavaDocLine(" */"); } /** * 為類添加註釋 */ @Override public void addClassComment(InnerClass innerClass, IntrospectedTable introspectedTable, boolean markAsDoNotDelete) { if (suppressAllComments) { return; } StringBuilder sb = new StringBuilder(); innerClass.addJavaDocLine("/**"); sb.append(" * "); sb.append(" * "); sb.append(introspectedTable.getFullyQualifiedTable()); innerClass.addJavaDocLine(sb.toString().replace("\n", " ")); sb.setLength(0); sb.append(" * @author "); sb.append(systemPro.getProperty("user.name")); sb.append(" "); sb.append(currentDateStr); innerClass.addJavaDocLine(" */"); } /** * Mybatis的Mapper.xml檔案裡面的註釋 */ @Override public void addComment(XmlElement xmlElement) { } /** * *@Title addConfigurationProperties *@Description: 從該配置中的任何屬性新增此例項的屬性CommentGenerator配置。 * 這個方法將在任何其他方法之前被呼叫。 *@Author fendo *@Date 2017年10月5日 下午3:45:58 *@return *@throws */ @Override public void addConfigurationProperties(Properties properties) { this.properties.putAll(properties); suppressDate = isTrue(properties.getProperty(PropertyRegistry.COMMENT_GENERATOR_SUPPRESS_DATE)); suppressAllComments = isTrue(properties.getProperty(PropertyRegistry.COMMENT_GENERATOR_SUPPRESS_ALL_COMMENTS)); } /** * *@Title getDateString *@Description: 此方法返回格式化的日期字串以包含在Javadoc標記中和XML註釋。 如果您不想要日期,則可以返回null在這些文件元素中。 *@Author fendo *@Date 2017年10月5日 下午3:45:58 *@return *@throws */ protected String getDateString() { String result = null; if (!suppressDate) { result = currentDateStr; } return result; } /** * *@Title addJavadocTag *@Description: 此方法為其添加了自定義javadoc標籤。 *@Author fendo *@Date 2017年10月5日 下午3:49:05 *@param javaElement *@param markAsDoNotDelete *@throws */ protected void addJavadocTag(JavaElement javaElement, boolean markAsDoNotDelete) { javaElement.addJavaDocLine(" *"); StringBuilder sb = new StringBuilder(); sb.append(" * "); sb.append(MergeConstants.NEW_ELEMENT_TAG); if (markAsDoNotDelete) { sb.append(" do_not_delete_during_merge"); } String s = getDateString(); if (s != null) { sb.append(' '); sb.append(s); } javaElement.addJavaDocLine(sb.toString()); } /** * 為列舉添加註釋 */ @Override public void addEnumComment(InnerEnum innerEnum, IntrospectedTable introspectedTable) { if (suppressAllComments) { return; } StringBuilder sb = new StringBuilder(); innerEnum.addJavaDocLine("/**"); sb.append(" * "); sb.append(introspectedTable.getFullyQualifiedTable()); innerEnum.addJavaDocLine(sb.toString().replace("\n", " ")); innerEnum.addJavaDocLine(" */"); } /** * Java屬性註釋 */ @Override public void addFieldComment(Field field, IntrospectedTable introspectedTable) { if (suppressAllComments) { return; } StringBuilder sb = new StringBuilder(); field.addJavaDocLine("/**"); sb.append(" * "); sb.append(introspectedTable.getFullyQualifiedTable()); field.addJavaDocLine(sb.toString().replace("\n", " ")); field.addJavaDocLine(" */"); } /** * 為欄位添加註釋 */ @Override public void addFieldComment(Field field, IntrospectedTable introspectedTable,IntrospectedColumn introspectedColumn) { if (suppressAllComments) { return; } StringBuilder sb = new StringBuilder(); field.addJavaDocLine("/**"); sb.append(" * "); sb.append(introspectedColumn.getRemarks()); field.addJavaDocLine(sb.toString().replace("\n", " ")); field.addJavaDocLine(" */"); } /** * 普通方法的註釋,這裡主要是XXXMapper.java裡面的介面方法的註釋 */ @Override public void addGeneralMethodComment(Method method, IntrospectedTable introspectedTable) { if (suppressAllComments) { return; } method.addJavaDocLine("/**"); addJavadocTag(method, false); method.addJavaDocLine(" */"); } /** * 給getter方法加註釋 */ @Override public void addGetterComment(Method method, IntrospectedTable introspectedTable,IntrospectedColumn introspectedColumn) { if (suppressAllComments) { return; } method.addJavaDocLine("/**"); StringBuilder sb = new StringBuilder(); sb.append(" * "); sb.append(introspectedColumn.getRemarks()); method.addJavaDocLine(sb.toString().replace("\n", " ")); sb.setLength(0); sb.append(" * @return "); sb.append(introspectedColumn.getActualColumnName()); sb.append(" "); sb.append(introspectedColumn.getRemarks()); method.addJavaDocLine(sb.toString().replace("\n", " ")); method.addJavaDocLine(" */"); } /** * 給Java檔案加註釋,這個註釋是在檔案的頂部,也就是package上面。 */ @Override public void addJavaFileComment(CompilationUnit compilationUnit) { SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); compilationUnit.addFileCommentLine("/*"); compilationUnit.addFileCommentLine("*"); compilationUnit.addFileCommentLine("* "+compilationUnit.getType().getShortName()+".java"); compilationUnit.addFileCommentLine("* Copyright(C) 2017-2020 fendo公司"); compilationUnit.addFileCommentLine("* @date "+sdf.format(new Date())+""); compilationUnit.addFileCommentLine("*/"); } /** * 為模型類添加註釋 */ @Override public void addModelClassComment(TopLevelClass arg0, IntrospectedTable arg1) { } /** * 為呼叫此方法作為根元素的第一個子節點添加註釋。 */ @Override public void addRootComment(XmlElement arg0) { } /** * 給setter方法加註釋 */ @Override public void addSetterComment(Method method, IntrospectedTable introspectedTable,IntrospectedColumn introspectedColumn) { if (suppressAllComments) { return; } method.addJavaDocLine("/**"); StringBuilder sb = new StringBuilder(); sb.append(" * "); sb.append(introspectedColumn.getRemarks()); method.addJavaDocLine(sb.toString().replace("\n", " ")); Parameter parm = method.getParameters().get(0); sb.setLength(0); sb.append(" * @param "); sb.append(parm.getName()); sb.append(" "); sb.append(introspectedColumn.getRemarks()); method.addJavaDocLine(sb.toString().replace("\n", " ")); method.addJavaDocLine(" */"); } }
配置generator.xml,修改其中的<commentGenerator>為如下形式:
<commentGenerator type="package org.mybatis.generator.MyCommentGenerator">
</commentGenerator>
注意type的值為MyCommentGenerator類的全路徑,完整檔案如下:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> <generatorConfiguration> <!-- 資料庫驅動--> <classPathEntry location="D:\MavenRepository\mysql\mysql-connector-java\5.1.38\mysql-connector-java-5.1.38.jar"/> <context id="DB2Tables" targetRuntime="MyBatis3"> <!-- 指定生成的java檔案的編碼,沒有直接生成到專案時中文可能會亂碼 --> <property name="javaFileEncoding" value="UTF-8"/> <!-- 這裡的type裡寫的是你的實現類的類全路徑 --> <commentGenerator type="com.fendo.generatorplus.MyCommentGenerator"> </commentGenerator> <!--資料庫連結URL,使用者名稱、密碼 --> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/test" userId="root" password="root"> </jdbcConnection> <javaTypeResolver> <property name="forceBigDecimals" value="false"/> </javaTypeResolver> <!-- 生成模型的包名和位置--> <javaModelGenerator targetPackage="com.fendo.generatorplus.entity" targetProject="src/main/java"> <property name="enableSubPackages" value="true"/> <property name="trimStrings" value="true"/> </javaModelGenerator> <!-- 生成對映檔案的包名和位置--> <sqlMapGenerator targetPackage="com.fendo.generatorplus.dao" targetProject="src/main/java"> <property name="enableSubPackages" value="true"/> </sqlMapGenerator> <!-- 生成DAO的包名和位置--> <javaClientGenerator type="XMLMAPPER" targetPackage="com.fendo.generatorplus.dao" targetProject="src/main/java"> <property name="enableSubPackages" value="true"/> </javaClientGenerator> <!-- 要生成的表 tableName是資料庫中的表名或檢視名 domainObjectName是實體類名--> <table tableName="test" domainObjectName="Test" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table> </context> </generatorConfiguration>
2.3、測試程式碼生成
新建StartUp測試類
package org.mybatis.generator;
import java.io.IOException;
import java.io.InputStream;
import java.net.URISyntaxException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.exception.InvalidConfigurationException;
import org.mybatis.generator.exception.XMLParserException;
import org.mybatis.generator.internal.DefaultShellCallback;
/**
* @Title: StartUp.java
* @Package com.fendo.mybatis_generator_plus
* @Description: TODO
* @author fendo
* @date 2017年10月5日 下午3:53:17
* @version V1.0
*/
public class StartUp {
public static void main(String[] args) throws URISyntaxException {
try {
System.out.println("--------------------start generator-------------------");
List<String> warnings = new ArrayList<String>();
boolean overwrite = true;
ClassLoader classloader = Thread.currentThread().getContextClassLoader();
InputStream is = classloader.getResourceAsStream("generatorConfig.xml");
ConfigurationParser cp = new ConfigurationParser(warnings);
Configuration config = cp.parseConfiguration(is);
DefaultShellCallback callback = new DefaultShellCallback(overwrite);
MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
myBatisGenerator.generate(null);
System.out.println("--------------------end generator-------------------");
} catch (SQLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (InvalidConfigurationException e) {
e.printStackTrace();
} catch (XMLParserException e) {
e.printStackTrace();
}
}
}
然後執行StartUp檔案,就會自動生成程式碼了,生成的bean程式碼如下:
生成的Mapper如下
能生成中文註釋了,但是好像類的註釋並沒有生成,而且mapper中的註釋生成的有點無視。。。這些問題,在修改原始碼實現中文註釋中,得以解決,下一步,就是,把這個專案,打包成JAR,這樣才好使用,要使依賴包被打包到最後的jar包中,要在pom.xml中進行相應的配置:
<plugin>
<!-- 因為專案中使用了依賴包,所以要使用maven-assembly-plugin來構建,會把依賴包同時打進jar包中 -->
<artifactId>maven-assembly-plugin</artifactId>
<version>2.6</version>
<configuration>
<!-- 這裡不指定為false打包會生成兩個jar包,我們要用的那個jar包命名很亂,後面加了
jar-with-dependencies,不喜歡,直接禁用掉 -->
<appendAssemblyId>false</appendAssemblyId>
<archive>
<manifest>
<!-- 指定類的全路徑 否則執行會報找不到main class的錯誤-->
<mainClass>org.mybatis.generator.api.ShellRunner</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
由於使用了Generator的ShellRunner,所以在打包JAR的時候,可以刪了StartUp和generatorConfig.xml檔案,然後在專案根路徑使用打包命令
mvn clean package
來打包成jar檔案,生成如下的jar包
然後把mybatis-generator-plus.jar複製到一個目錄下,同時新建一個generatorConfig.xml配置檔案,以及一個cmd檔案
generatorConfig.xml配置檔案內容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<!-- 資料庫驅動-->
<classPathEntry location="D:\MavenRepository\mysql\mysql-connector-java\5.1.38\mysql-connector-java-5.1.38.jar"/>
<context id="DB2Tables" targetRuntime="MyBatis3">
<!-- 指定生成的java檔案的編碼,沒有直接生成到專案時中文可能會亂碼 -->
<property name="javaFileEncoding" value="UTF-8"/>
<!-- 這裡的type裡寫的是你的實現類的類全路徑 -->
<commentGenerator type="org.mybatis.generator.MyCommentGenerator">
</commentGenerator>
<!--資料庫連結URL,使用者名稱、密碼 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/test" userId="root" password="root">
</jdbcConnection>
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!-- 生成模型的包名和位置-->
<javaModelGenerator targetPackage="com.fendo.generatorplus.entity" targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!-- 生成對映檔案的包名和位置-->
<sqlMapGenerator targetPackage="com.fendo.generatorplus.dao" targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<!-- 生成DAO的包名和位置-->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.fendo.generatorplus.dao" targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!-- 要生成的表 tableName是資料庫中的表名或檢視名 domainObjectName是實體類名-->
<table tableName="test" domainObjectName="Test" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>
</context>
</generatorConfiguration>
cmd內容如下:
echo off
set JAVA_HOME=C:\work\java\jdk1.8.0_102
set M2_HOME=C:\work\Java\apache-maven-3.0.3
set PATHP=%PATH%
set PATH=%PATH%;%M2_HOME%\bin;%ANT_HOME%\bin
Java -jar mybatis-generator-plus.jar -configfile generatorConfig.xml -overwrite
set PATHP=%PATH%
然後一執行就cmd檔案就會自動生成程式碼了。
相關推薦
MyBatis Generator系列(二)----自定義CommentGenerator實現中文註釋
一、簡介 由於MyBatis Generator自帶了生成註釋的功能,但是,是英文的而且生成的根本無法理解,所以可以通過,修改他的原始碼來實現生成中文的註釋,具體方式有以下幾種: 1) 自定義CommentGenerator 2) 修改原始碼 3) PluginAdap
整合maven+mybatis+generator生成java自定義model實體類,dao介面和mapper對映檔案
通過繼承PluginAdapter類,開發自定義外掛,生成自定義的中文註解的java實體類,dao介面和mapper對映檔案. 1.pom.xml新增依賴的jar包: <dependencies> <!--mysql-->
Android繪圖系列(二)——自定義View繪製基本圖形
這個系列主要是介紹下Android自定義View和Android繪圖機制,自己能力有限,如果在介紹過程中有什麼錯誤,歡迎指正 前言 在上一篇Android繪圖系列(一)——自定義View基礎中我們瞭解自定義View相關的基本知識,不過,這些東西依舊還
MyBatis Generator系列(八)----MyBatis Generator自定義外掛實現自定義Mapper
一、建立基類 有時候會通過建立實體的基類,用來複用一些程式碼,然後讓其他的實體類整合這個類: package com.fendo.bean; /** * @Title: BaseModel.java * @Package com.fendo.bean *
Spring Boot入門系列(十七)整合Mybatis,建立自定義mapper 實現多表關聯查詢!
之前講了Springboot整合Mybatis,介紹瞭如何自動生成pojo實體類、mapper類和對應的mapper.xml 檔案,並實現最基本的增刪改查功能。mybatis 外掛自動生成的mapper 實現了大部分基本、通用的方法,如:insert、update、delete、select 等大概20個左右
Mybatis自定義註解實現DAO層--實現DAO層介面
Java新增自定義註解:https://www.cnblogs.com/0xcafedaddy/p/6095187.html 1、自定義一個註解@MybatisRepository用作dao掃描 /** * @author cao * @description 前沿my
Spark 二次排序自定義key 實現(Java)
楔子 spark java版本的二次排序 實現 資料如下 2::4 2::10 3::6 1::5 按照 第一列 和第二列 倒敘排列 實現如下的結果 3::6 2::10 2::4 1::5 demo GitHub 位置 的 Second
ios多執行緒操作(十二)—— 自定義NSOperation實現網路下載後回撥
- (void)main { @autoreleasepool { // 下載圖片的耗時操作 NSURL *url = [NSURL URLWithString:self.urlString]; NSData *data = [NSDa
Mybatis呼叫Postgres自定義函式實現批量更新的解決方案
前言 如題,提供批量更新的一種解決方案,不一定最優,僅僅是一種解決問題的思路,廢話不多說下面具體看一下應用場景和詳細的解決步驟~ 應用場景 如下圖所示,是一個資訊編輯頁面: 可以這是
Android實現自定義相機系列(1)—自定義view裁剪控制元件
目標 本系列文章主要記錄自定義相機拍照系列,專案原始碼還在編寫中,後續會傳到github,內容包括: 1、使用Android的Camera API自定義拍照模式,例如人臉拍照,OCR拍照等; 2、對拍完的照片進行裁剪; 3、自定義圖片伸縮view,使用手勢對圖
J2EE專案使用自定義註解實現基於SpringMVC + Mybatis + Mysql的讀寫分離
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/
MyBatis Generator系列(三)----修改原始碼實現中文註釋
1)匯入原始碼 再新建一個Maven專案,然後把mybatis-generator-core-1.3.5解壓,複製org目錄到eclipse中去,完整的專案如下: 此時,專案有可能會報錯,因為有依賴包沒有引入,缺少log4j和ant包,在pom.xml中新增上依賴,順
android自定義View,實現折線圖(二)
效果圖: LineChartView類: public class LineChartView extends View { private int width; private int height; private float maxVal
Spring+SpringMVC+Mybatis 利用AOP自定義註解實現可配置日
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 5
Hadoop系列-MapReduce自定義資料型別(序列化、反序列化機制)(十二)
Github程式碼下載地址: 大家都知道,Hadoop中為Key的資料型別必須實現WritableComparable介面,而Value的資料型別只需要實現Writable介面即可;能做Key的一定可以做Value,能做Value的未必能做Key。但是具體應該怎麼應
vue2入坑隨記(二) -- 自定義動態組件
blank -1 reat files 但是 name define 構建 prototype 學習了Vue全家桶和一些UI基本夠用了,但是用元素的方式使用組件還是不夠靈活,比如我們需要通過js代碼直接調用組件,而不是每次在頁面上通過屬性去控制組件的表現。下面講一下如何定
Android -- 自定義view實現keep歡迎頁倒計時效果
super onfinish -m use new getc awt ttr alt 1,最近打開keep的app的時候,發現它的歡迎頁面的倒計時效果還不錯,所以打算自己來寫寫,然後就有了這篇文章。 2,還是老規矩,先看一下我們今天實現的效果 相較於我們常見的倒計時
Android自定義View——實現水波紋效果類似剩余流量球
string 三個點 pre ber block span 初始化 move 理解 最近突然手癢就想搞個貝塞爾曲線做個水波紋效果玩玩,終於功夫不負有心人最後實現了想要的效果,一起來看下吧: 效果圖鎮樓 一:先一步一步來分解一下實現的過程 需要繪制一個正弦曲線(sin
Android自定義processor實現bindView功能
lis dds 定義 java代碼 cli 註冊 文章 type() mage 一、簡介 在現階段的Android開發中,註解越來越流行起來,比如ButterKnife,Retrofit,Dragger,EventBus等等都選擇使用註解來配置。按照處理時期,註解又分為兩
自定義toast實現
web javascript html5 toast ys_toast.css.ys-toast{ position:fixed; left:0; right:0; top:0; bottom:0; z-index: 999999; } .ys-toast>em{ pos