Java后台开发中一些工具和笔记以及解决办法(不断更记录笔记)

获取时间

SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date(System.currentTimeMillis());
String formatTime = formatter.format(date);

Mybatis中类型转换(一般针对null值传入,而Oracle数据库不让插入null值情况)

第一种解决方式:在MyBatis全局配置文件中,在其Configuration->Settings中添加<setting name="jdbcTypeForNull" value="NULL" />即可。

第二种解决方式,在resultMap中需要的字段后面添加jdbcType = xxx类型。

Oracle Sqlldr的环境变量加载不出来的问题

一般来说,cannot run program “sqlldr” (in xxx/xxx/xxx) error = 2 No such file or directory这个问题,都是因为在Java程序中Linux环境变量没有加载进来的原因。因此,我们应该在Java程序中让其加载进来。

CommandLine cmdLine = CommandLine.parse(line);//line为要执行的命令
DefaultExecutor executor = new DefaultExecutor();
ExecuteWatchdog dog = new ExecuteWatchdog(ExecuteWatchdog.INFINITE_TIMEOUT);
executor.setWatchdog(dog);
executor.setWorkingDirectory(new File(workPath));//需要处理的文件所在路径
Map<String, String> runtimeEnvironment = new HashMap<>();
runtimeEnvironment.put("ORACLE_HOME", sqlldrWorkPath); //sqlldrWorkPath为传进来的String类型的workpath。
runtimeEnvironment.put("LD_LIBRARY_PATH", "/xxx/xxx/xxx/xxx/xxx"); //这里为你的Linux环境变量文件夹路径。
exitValue = executor.execute(cmdLine, runtimeEnvironment);

CLOB字段为空在Java程序里面引用为null问题

这种情况可以在mybatis的resultMap中,设置javaType="String"来解决。

Oracle数据库更新表中字段时需要连接外表查数据的解决办法

需求

update table_a a, table_b b 
set a.first = b.first, 
a.second = b.second, 
a.third = b.third 
...
where a.fourteenth = b.fourteenth
...

这种更新方式在Oracle中是不允许的,因为Oracle不允许在update后面加入两张以上的表。会出现缺失set关键字问题。因此我们应该换一种更新方式…

update table_a a
set (a.first, b.first, a.third ...)
=(select b.first, b.second, b.third ... from table_b b
where a.fourteenth = b.fourteenth
...)

Spring 注入指定实现类

这种时候@Autowired就不起作用了。
因此,我们需要用另外一两个注解:@Resource@Qualifier
例子:
@Resource(name = "xxx")这是根据在配置@Component、@Service、@Repository注解时给注解中添加的注解名来寻找所对应的那个实现类。

@Qualifier(“xxx”)这个是根据实现类的完整类名来注解的。xxx代表的是完整的实现类的类名。

Oracle 对象 = 比较和 like比较

DBMS_LOB.COMPARE(var1, var2)可以让clob对象轻松的比较其它的字符串。

dbms_lob.instr(sourceString,destString,start,appearPosition)模糊查询

使其函数大于0即可,比如dbms_lob.instr() > 0

Oracle clob字段替换指定字符以及正则替换

update xxx set xxx = REPLACE('原始字符串', '被替换的字符串', '替换的字符串')
update xxx set xxx = REGEXP_REPLACE('原始字符串', '被替换的字符串', '替换的字符串',1,N) //N 表示第几个匹配的字符串

SSM项目中,关于多模块打包,配置文件加载的事情

首先,在多模块项目中,主模块打包到tomcat下面,则主模块下的resource目录以及src/main/java目录为classpath。因此如果我们想要在辅助模块里面添加我们的属性文件,这是一般不允许的。因为可能整个项目会读不到你的配置文件。

因此,我们应该将自定义配置文件写在主模块下面。并且在主模块的applicationContext.xml文件中引入你自定义的配置文件。这样才能保证你的工具类能利用@PropertySource和属性注解上添加@Value(${xxx.xxx})正确读取到自定义配置文件中所有的属性。工具类可以写在你的辅助模块里面,而且你的辅助模块照样能用上述两种注解得到你的所有属性值。

实际项目中增量包的问题

部署在tomcat服务器上的项目,打增量包是为了覆盖掉原有文件和新增加文件。因此,我们不需要打jar包覆盖原有的包。我们只需要复刻一模一样的WEB-INF文件夹,去添加到原有文件夹里面。

tomcat项目的导入包存在在哪的问题:

在WEB-INF目录下的lib文件夹下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值