java程序及数据库常见问题

一 常见数据库语法

Mysql

1日期转换

date_format函数:
定义和用法
DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据。
语法
DATE_FORMAT(date,format)
date 参数是合法的日期。format 规定日期/时间的输出格式。
STR_TO_DARE(date,format)将字符串转日期类型
可以使用的格式有:
格式 	描述
%a	缩写星期名
%b	缩写月名
%c	月,数值
%D	带有英文前缀的月中的天
%d	月的天,数值(00-31)
%e	月的天,数值(0-31)
%f	微秒
%H	小时 (00-23)
%h	小时 (01-12)
%I	小时 (01-12)
%i	分钟,数值(00-59)
%j	年的天 (001-366)
%k	小时 (0-23)
%l	小时 (1-12)
%M	月名
%m	月,数值(00-12)
%p	AM 或 PM
%r	时间,12-小时(hh:mm:ss AM 或 PM)
%S(00-59)
%s	秒(00-59)
%T	时间, 24-小时 (hh:mm:ss)
%U(00-53) 星期日是一周的第一天
%u	周 (00-53) 星期一是一周的第一天
%V(01-53) 星期日是一周的第一天,与 %X 使用
%v	周 (01-53) 星期一是一周的第一天,与 %x 使用
%W	星期名
%w	周的天 (0=星期日, 6=星期六)
%X	年,其中的星期日是周的第一天,4 位,与 %V 使用
%x	年,其中的星期一是周的第一天,4 位,与 %v 使用
%Y	年,4%y	年,2 位

实例

下面的脚本使用 DATE_FORMAT() 函数来显示不同的格式。我们使用 NOW() 来获得当前的日期/时间:
DATE_FORMAT(NOW(),'%b %d %Y %h:%i %p')
DATE_FORMAT(NOW(),'%m-%d-%Y')
DATE_FORMAT(NOW(),'%d %b %y')
DATE_FORMAT(NOW(),'%d %b %Y %T:%f')

结果类似:
Dec 29 2008 11:45 PM
12-29-2008
29 Dec 08
29 Dec 2008 16:25:46.635

2为null判断

SELECT ISNULL('i like yanggb'); // 0

oracle

1日期转换

to_date函数:
//注意:java中MM代表月份,mm代表分钟,但sql不区分大小写,MM和mm被认为是相同的格式代码,所以Oracle中用mi代替分钟。
select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss') from dual;
to_char函数:
select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual;//mi是分钟

/*******日期格式参数 含义说明 ********/
    D 一周中的星期几 
    DAY 天的名字,使用空格填充到9个字符 
    DD 月中的第几天 
    DDD 年中的第几天 
    DY 天的简写名 
    IW ISO标准的年中的第几周 
    IYYY ISO标准的四位年份 
    YYYY 四位年份 
    YYY,YY,Y 年份的最后三位,两位,一位 
    HH 小时,按12小时计 
    HH24 小时,按24小时计 
    MI 分 
    SS 秒 
    MM 月 
    Mon 月份的简写 
    Month 月份的全名 
    W 该月的第几个星期 
    WW 年中的第几个星期  1.日期时间间隔操作
    当前时间减去7分钟的时间
    select sysdate,sysdate - interval ’7’ MINUTE from dual
    当前时间减去7小时的时间
    select sysdate - interval ’7’ hour from dual
    当前时间减去7天的时间
    select sysdate - interval ’7’ day from dual
    当前时间减去7月的时间
    select sysdate,sysdate - interval ’7’ month from dual
    当前时间减去7年的时间
    select sysdate,sysdate - interval ’7’ year from dual
    时间间隔乘以一个数字
    select sysdate,sysdate - 8 *interval ’2’ hour from dual

2为null判断

NVL函数是将NULL值的字段转换成默认字段输出。
NVL(expr1,expr2)
expr1,需要转换的字段名或者表达式。

PLSQL

1日期转换

to_char(bslm.sb_report_time,'yyyy-MM-dd hh24:mi:ss')
to_timestamp(to_char(info.callback_time,' yyyy-MM-dd'), 'yyyy-MM-dd') >= to_timestamp(#{beginTime},'yyyy-MM-dd')

2为null判断

COALESCE(t.mill_number,'')
IsNull
如果是Null,就返回指定的值,否则返回原值。
select userName,IsNULL(address,'无') from [user]...

sqlserver

1日期转换

使用 CAST:
CAST ( expression AS data_type )//将字符串转换成特定的各式 
定义和用法
CONVERT() 函数是把日期转换为新数据类型的通用函数。
CONVERT() 函数可以用不同的格式显示日期/时间数据。
语法
CONVERT(data_type(length),data_to_be_converted,style)
data_type(length) 规定目标数据类型(带有可选的长度)。
data_to_be_converted 含有需要转换的值。style 规定日期/时间的输出格式。
可以使用的 style 值:
Style ID 	Style 格式
100 或者 0 	mon dd yyyy hh:miAM (或者 PM)
101 		mm/dd/yy
102 		yy.mm.dd
103 		dd/mm/yy
104 		dd.mm.yy
105 		dd-mm-yy
106 		dd mon yy
107 		Mon dd, yy
108 		hh:mm:ss
109 或者 9 	mon dd yyyy hh:mi:ss:mmmAM(或者 PM)
110 		mm-dd-yy
111 		yy/mm/dd
112 		yymmdd
113 或者 13 	dd mon yyyy hh:mm:ss:mmm(24h)
114 		hh:mi:ss:mmm(24h)
120 或者 20 	yyyy-mm-dd hh:mi:ss(24h)
121 或者 21 	yyyy-mm-dd hh:mi:ss.mmm(24h)
126 		yyyy-mm-ddThh:mm:ss.mmm(没有空格)
130		dd mon yyyy hh:mi:ss:mmmAM
131 		dd/mm/yy hh:mi:ss:mmmAM

实例
下面的脚本使用 CONVERT() 函数来显示不同的格式。
我们将使用 GETDATE() 函数来获得当前的日期/时间:

CONVERT(VARCHAR(19),GETDATE())
CONVERT(VARCHAR(10),GETDATE(),110) 
CONVERT(VARCHAR(11),GETDATE(),106)
CONVERT(VARCHAR(24),GETDATE(),113)

结果类似:

Dec 29 2008 11:45 PM
12-29-2008
29 Dec 08
29 Dec 2008 16:25:46.635

2为null判断

navicat常用设置

1navicat设置默认值

在设置默认值上字符串数字直接’0’ 或 0
在这里插入图片描述

2navicat设置输入时间

timestamp : CURRENT_TIMESTAMP
datetime: now()
在这里插入图片描述

二 java程序

springboot项目注解配置问题

1springboot项目启动类注解继承SpringBootServletInitializer 类目的

作用: 继承SpringBootServletInitializer可以使用外部tomcat,自己可以设置端口号,项目名。不需要用外部tomcat的话继承不继承都可以。
如将项目打成war包 解压通过外部tomcat访问就需要继承这个类重写configure

@SpringBootApplication(exclude={DataSourceAutoConfiguration.class})
@MapperScan(basePackages = {"com.zlxd.dao","com.zlxd.modules.*.dao"})
@EnableScheduling
public class ApiApplication extends SpringBootServletInitializer {

	public static void main(String[] args) {
		SpringApplication.run(ApiApplication.class, args);
	}

	@Override
	protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
		return application.sources(ApiApplication.class);
	}
}

当我们把项目打成jar直接运行访问的时候不需要继承这个类

2springboot项目@MapperScan注解

作用:指定要变成实现类的接口所在的包,然后包下面的所有接口在编译之后都会生成相应的实现类
添加位置:是在Springboot启动类上面添加,

@SpringBootApplication(exclude={DataSourceAutoConfiguration.class})
@MapperScan(basePackages = {"com.zlxd.dao","com.zlxd.modules.*.dao"})
@EnableScheduling
public class ApiApplication extends SpringBootServletInitializer {

	public static void main(String[] args) {
		SpringApplication.run(ApiApplication.class, args);
	}

	@Override
	protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
		return application.sources(ApiApplication.class);
	}
}

3springboot项目@Mapper

作用:在接口类上添加了@Mapper,在编译之后会生成相应的接口实现类
添加位置:接口类上面

@Mapper
public interface UserDAO {
   //代码
}

4Mybatis映射文件路径classpath*与classpath区别

需要加载路径为com/thomas/base/mapper和com/thomas/bu/mapper/business下的所有mapper文件

<!-- 配置mybatis的sqlSessionFactory -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <!-- 自动扫描mappers.xml -->
        <property name="mapperLocations" value="classpath:com/thomas/*/mappers/*Mapper.xml" ></property>
        <!-- mybatis配置文件 -->
        <property name="configLocation" value="classpath:mybatis-config.xml"></property>
    </bean>
结果一直报com/thomas/base/mappers下的mapper文件的某个方法找不到.



<!-- 配置mybatis的sqlSessionFactory -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <!-- 自动扫描mappers.xml -->
        <property name="mapperLocations" value="classpath*:com/thomas/*/mappers/*Mapper.xml" ></property>
        <!-- mybatis配置文件 -->
        <property name="configLocation" value="classpath:mybatis-config.xml"></property>
    </bean>

注意:
原因是classpath:和classpath*:在spring加载资源的时候是不同的.
classpath:只能加载找到的第一个资源文件.(上面只匹配了com/thomas/bu/mappers/business下的mapper文件,而com/thomas/base/mappers就被忽略了)
classpath*:能加载多个路径下的资源文件.(com/thomas/bu/mappers/business和com/thomas/base/mappers都被加载进来了.)
在多个classpath中存在同名资源,都需要加载时,那么用classpath:只会加载第一个,这种情况下也需要用classpath*:前缀
用classpath*:需要遍历所有的classpath,所以加载速度是很慢的;因此,在规划的时候,应该尽可能规划好资源文件所在的路径,尽量避免使用classpath*。

5Mybatis映射文件.xml 中判断注解

1 字符类型判断需要判断空字符和null

	<if test="id != null and id != ''">
	   id = #{id}
	</if>

2 日期类型和数字类型判断null

	<if test="update_time != null">
         update_time = #{update_time},
    </if>

3 字符串判断想等或不等
mybatis 映射文件中,if标签判断字符串相等,两种方式:
因为mybatis映射文件,是使用的ognl表达式,所以在判断字符串sex变量是否是字符串Y的时候

	<if test="sex=='Y'.toString()"></if>
	<if test = 'sex== "Y"'></if>
	注意:
	不能使用
	<if test="sex=='Y'">
		and 1=1
	</if>
因为mybatis会把'Y'解析为字符,所以不能这样写 会报NumberFormatException
MyBatis是使用的OGNL表达式来进行解析的,这个地方有一个坑需要注意下,单引号内有一个字符的情况下,OGNL会将其以 java 中的 char 类型进行解析,那么此时 char 类型与参数 String 类型用等号进行比较的时候结果都是false。解决方案也很简单,就是讲 test 中的单个字符用双引号括起来。
      <where>
        /*不行*/
            <if test="qryStr=='Y'">
                and counts=1
            </if>
             /*可以*/
            <if test="qryStr=='Y'.toString()">
                and counts=1
            </if>
                /*可以*/
            <if test='qryStr=="Y"'>
                and counts=2
            </if>
        </where>

4 多重判断用and

<if test=" state != null and state != '' and isRelease =='1'.toString() ">
                and processcurrent.is_release = #{isRelease}
</if>

6Mybatis映射文件返回实体类映射或者返回实体类列表映射

dao层:
WeatherDeviceVo getDeviceByCode(String deviceCode);
List<WeatherDeviceVo> getDeviceByCode(String deviceCode);
xml层: 用resultType对应返回实体类包名确定单条数据用WeatherDeviceVo接收 非确定条数需要用List<WeatherDeviceVo>接收
<select id="getDeviceByCode" parameterType="String" resultType="com.data.styz.entity.WeatherDeviceVo">
        SELECT
            d.ID,
            d.device_code AS "deviceCode",
            d.device_name AS "deviceName",
            d.device_type AS "deviceType",
            d.device_ip AS "deviceIp",
            d.device_user AS "deviceUser",
            d.device_pwd AS "devicePwd",
            d.longitude,
            d.latitude,
            d.altitude,
            d.detail,
            d.station_code AS "stationCode",
            d.change_time AS "changeTime",
            d.last_collect_time AS "lastCollectTime",
            d.create_user AS "createUserId",
            to_char(d.create_time,'yyyy-MM-dd hh24:mi:ss') AS "createTime",
            d.update_user AS "updateUserId",
            d.update_time AS "updateTime",
            d.remarks ,
            o.name
        FROM
          t_st_base_device d
        left join ptlorganization o on d.station_code = o.code and d.del_flag = '0'
        <where>
            <if test = "deviceCode != null and deviceCode!='' ">
                and device_code = #{deviceCode}
            </if>
            and del_flag = '0' limit 1 //单条数据
        </where>
    </select>

7Mybatis映射文件返回Map映射或者返回List列表映射

dao层:
Map<String, Object> getList(String device);
List<Map<String, Object>>  getList(String device);
xml层: 用resultType对应返回实体类包名确定单条数据用WeatherDeviceVo接收 非确定条数需要用List<WeatherDeviceVo>接收
<select id="getList" parameterType="String" resultType="java.util.Map">
        SELECT
            d.ID,
            d.device_code AS "deviceCode",
            d.device_name AS "deviceName",
            d.device_type AS "deviceType",
            COALESCE(d.device_ip,'') AS "deviceIp",
            d.device_port AS "devicePort",
            d.device_status   AS "deviceStatus"
        FROM
            t_de d
        <where>
            d.del_flag = '0'
            <if test = "deviceName != null and deviceName!='' ">
                and device_name like concat ('%',#{deviceName},'%')
            </if>
            ORDER  BY  d.create_time desc
        </where>
    </select>

8Mybatis映射文件接收map参数(查询)

HashMap<String, Object> params = new HashMap<>();
params.put("beginTime",beginTime);		
params.put("endTime",endTime);	
params.put("device",device);				
List<Map<String, Object>> list = millManagementDao.getStd(params);
<select id="getStd" parameterType="map" resultType="map">
        select
        to_number(avg(info.${columname })||'','99999.99') as "num",
        to_char(info.callback_time,${sim }) as "timeInterval"
        from t_st_data_weather_station_info info
        <where>
            <if test = "beginTime != null and beginTime != ''">
                and info.n_date &gt;= #{beginTime}
            </if>
            <if test = "endTime != null and endTime != ''">
                and info.n_date &lt;= #{endTime}
            </if>
            <if test = "device != null and device != ''">
                and info.device_id = #{device}
            </if>
        </where>
    </select>

9Mybatis映射文件接收实体类参数(添加修改)

int millManagementDao.addApply(Entity entity);
<insert id="addApply" parameterType="com.entity.Entity ">
		insert into t_os_pest_mill_apply
		("id", "mill_number","head_person", "head_person_phone",
		"create_person_id","update_person_id","unit_id","start_time","end_time")
		values
		(#{id}, #{millNumber}, #{headPerson},#{headPersonPhone},
		#{createPersonId}, #{updatePersonId},#{organCode},#{startTime},#{endTime});
	</insert>

10Mybatis映射文件返回实体类映射resultMap

<!-- 可根据自己的需求,是否要使用 -->
    <resultMap type="com.zlxd.entity.DiscEntity" id="id">
        <result property="id" column="id"/>
        <result property="xianId" column="xianId"/>
        <result property="linChang" column="linchang"/>
        <result property="linBan" column="linban"/>
        <result property="xiaoBan" column="xiao_ban"/>
        <result property="linLing" column="linling"/>
    </resultMap>
property:为实体类属性
column: 为sql返回字段

<select id="getList" parameterType="map" resultMap="id">
    	select 
    		bslm.id as "id",
    		bslm.xian_id as "xianId",
    		bslm.lin_chang as "linchang",
    		bslm.lin_ban as "linban"
    	from t_report bslm
		
    </select>
List<DiscEntity> list = millDao.getList(params);

11Mybatis映射文件新增判断参数

<insert id="setWeatherDevice" parameterType="com.zlxd.modules.data.styz.entity.Weather">
        insert into device
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="id != null and id != ''">
                id,
            </if>
            <if test="deviceCode != null and deviceCode != ''">
                device_code,
            </if>
            <if test="deviceName != null and deviceName != ''">
                device_name,
            </if>
            <if test="deviceType != null and deviceType != ''">
                device_type,
            </if>
        </trim>

        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="id != null and id != ''">
                #{id},
            </if>
            <if test="deviceCode != null and deviceCode != ''">
                #{deviceCode},
            </if>
            <if test="deviceName != null and deviceName != ''">
                #{deviceName},
            </if>
            <if test="deviceType != null and deviceType != ''">
                #{deviceType},
            </if>
        </trim>
    </insert>

springboot项目打包方式

1打成war包外部tomcat访问

springboot需要做的准备

1 启动类实现SpringBootServletInitializer

@SpringBootApplication(exclude={DataSourceAutoConfiguration.class})
@MapperScan(basePackages = {"com.zlxd.dao","com.zlxd.modules.*.dao"})
public class ApiApplication extends SpringBootServletInitializer {

	public static void main(String[] args) {
		SpringApplication.run(ApiApplication.class, args);
	}

	@Override
	protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
		return application.sources(ApiApplication.class);
	}
}

2pom.xml配置

将打包方式修改为war
<packaging>war</packaging>

移除tomcat依赖或者将tomcat依赖scope改为provide
移除tomcat依赖

<dependency>

  <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-web</artifactId>

    <!-- 移除嵌入式tomcat插件 -->

    <exclusions>

      <exclusion>

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-starter-tomcat</artifactId>

      </exclusion>

    </exclusions>

</dependency>

3linux部署步骤
1本地IDEA打成war包 --> 在linux服务器上创建一个项目文件夹–> jar -xvf xxx.war 解压文件到该文件夹下面–>tomcat配置文件指向这个目录

4tomcat配置文件配置

<?xml version="1.0" encoding="UTF-8"?>

<Server port="8041" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  <!-- Security listener. Documentation at /docs/config/listeners.html
  <Listener className="org.apache.catalina.security.SecurityListener" />
  -->
  <!--APR library loader. Documentation at /docs/apr.html -->
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <!-- Prevent memory leaks due to use of particular java/javax APIs-->
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />


  <GlobalNamingResources>
    <!-- Editable user database that can also be used by
         UserDatabaseRealm to authenticate users
    -->
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>

  <Service name="Catalina">


    <Connector port="8042" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"
		compression="on"
		compressionMinSize="2048"
		noCompressionUserAgents="gozilla, traviata"
		compressableMimeType="text/html,application/xml,application/javascript,text/css,application/json,image/png,image/gif,image/jpg" />
  
    <!-- Define an AJP 1.3 Connector on port 8009 -->
    <Connector port="8043" protocol="AJP/1.3" redirectPort="8443" />



    <Engine name="Catalina" defaultHost="localhost">

 
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <!-- This Realm uses the UserDatabase configured in the global JNDI
             resources under the key "UserDatabase".  Any edits
             that are performed against this UserDatabase are immediately
             available for use by the Realm.  -->
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>

      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

      
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
		<Context docBase="/home/deploy/ecology/项目文件夹名称" path="/项目名" reloadable="true"></Context>

      </Host>
    </Engine>
  </Service>
</Server>

在这里插入图片描述

2打成jar包 使用内置tomcat

打成jar方便多了直接用IDEA打包pom配置文件不需要去除内部tomcat
在linux服务器上创建一个项目文件夹把jar导入进去直接启动

启动jar包方式

在这里只说两种:
一种是手动命令启动
一种是创建脚本启动

手动命令启动

java -jar 运行时是前台启动,并非后台运行退出之后项目关闭
这个解决的方法是,使用nohub命令

nohup 是 no hang up 的缩写,就是不挂断的意思

nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。

nohup 命令
用途:不挂断地运行命令。
语法:nohup Command [ Arg … ][ & ]
描述:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 &到命令的尾部

然后我们需要设置对应的日志输出目录

#设置输出目录
nohup java -jar xxx.jar > catalina.out 2>&1 &
# 使用tail命令打印日志
tail -f ./catalina.out

因为使用java -jar的时候,不指定java内存大小的话,会导致启动非常缓慢,所以需要设置堆栈大小

java -jar -XX:MetaspaceSize=1024m -XX:MaxMetaspaceSize=1024m -Xms1024m -Xmx1024m -Xmn256m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC
-XX:MetaspaceSize:最小元空间
-XX:MaxMetaspaceSize:最大元空间
-Xms:最小堆内存
-Xmx:最大堆内存
-Xmn:新生代大小
-Xss:栈大小
-XX:SurvivorRatio:新生代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:为3,表示Eden:Survivor=3:2,一个Survivor区占整个新生代的1/5
-XX:+UseConcMarkSweepGC:设置并发收集器

对于上面的,我只设置了最小堆内存和最大堆内存
启动
nohup java -Xms1024m -Xmx1024m -jar mogu_sms-0.0.1-SNAPSHOT.jar > catalina.out 2>&1 &
关闭
ps -ef|grep xxx.jar
kill -9 pid

创建脚本启动

设置两个启动脚本,以后方便直接启动和关闭
首先是启动脚本 startup.sh

#!/bin/bash     
nohup java -Xms256m -Xmx512m -jar youApplication.jar  > catalina.out  2>&1 &
tail -f ./catalina.out

然后是关闭脚本 shutdown.sh

#!/bin/bash
PID=$(ps -ef | grep youApplication.jar  | grep -v grep | awk '{ print $2 }')
if [ -z "$PID" ]
then
    echo Application is already stopped
else
    echo kill $PID
    kill $PID
fi

三 IDEA与SVN

利用本地安装的svn把不需要的文件加入忽略之后提交

本文适用于已安装TortoiseSVN客户端的同学
应用场景:

在IEDA中从svn服务拷贝项目,有时候线上服务会存在一些不需要上传更新的文件存在如.idea target文件,更到本地之后这些文件经常自动和线上比对是否做过更改,当文件多的时候会造成IDEA卡顿

由于项目中的IDE Jdeveloper在某些指定目录下面会生成server.xml以及common文件夹,且包含一个名为bc4j.xcfg的文件,每次当IDE设置发生变化,或者新建某些目录,这些文件都会被修改或者新增,而我不愿意将这些变化体现在SVN提交列表中.
在这里插入图片描述
解决途径: 找到项目工作目录用本地svn把不需要更改的文件加入忽略 切记是SVN操作而不是IDEA添加忽略文件夹
IDEA添加忽略文件夹只是在我们提交代码的时候可以选择性的不提交忽略文件夹里面的文件并不能更改线上服务项目的文件,那些没用的垃圾文件仍然存在线上服务中

在工作目录中选中不需要上传的文件如.idea target 等文件 SVN 取消版本控制并添加至忽略列表
步骤:

1、右键点击要忽略的文件夹或文件,鼠标移到“TortoiseSVN”,找到“Unversion and add to ignore list”,选择文件夹,弹出提示框确认忽略。
2、设置完忽略文件后,还需要做commit操作,告诉服务器这个文件移除版本控制。
3、这样在IDEA显示项目的时候svn被取消版本控制的文件会显示特殊标记,并且Version Control 下Default 在与服务器同步的情况下不会有垃圾文件存在
4、我们也可以把利用IDEA创建忽略文件夹,把不想提交的文件放在文件夹中当然这些文件是可以删除的在Version Control里
在这里插入图片描述
在这里插入图片描述

总结:

1IDEA中Version Control 下文件会经常自动与线上服务做对比,当文件多的时候会造成卡顿非常难受,所以需要我们下载SVN本都客户端把不需要的文件取消版本控制并添加至忽略列表从根本上消除文件的个数
2web项目忽略文件.iml,/target目录 *.idea
3vue项目,svn提交代码时忽略node_modules文件夹提交

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值