eclipse pom.xml 带有红叉
原因:JAR包导入不正确或MAVEN依赖下载不正确,工程-->右键--> Build Path --> Configure Build Path --> Library --> 有错误标记
解决:工程-->右键-->Maven --> Update Project --> 勾选 force update --> 确认
MyBatis 错误
描述:运行程序无结果输出,Log日志打印SQL,发现 qmsId in (List) and qmsId = xx 同时存在,程序如下:
and qms_id in
#{qmsId}
and qms_id = #{qmsId,jdbcType=INTEGER}
若单独的查询在 循环的后面,则会出现 两个条件同时起作用的效果, qms_id in () and qms_id = xx ,导致查询结果不正确
理论上,不应该出现,已有if 判断存在,猜测,是由于 上一个循环结束后 为qmsId 赋值,顺序执行下来了,故第二个条件起作用了。
注意:将单个的条件放在集合判断的上面,或集合的循环中不要使用与单个条件判断相同的名字
连接池异常
http://blog.csdn.net/wo8553456/article/details/40396401
完整的URL在浏览器中访问,正常,状态200;但通过HttpClient方式访问异常,返回400
httpClient 请求 400
参数用URLencoder 进行处理 URLencoeder.encode("","UTF-8");
解决:
1.使用URLencoder加密需要传递的参数
2.改成POST方式
CREATE TABLE `t_quota_statistics_month` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
`statistical_type` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '统计类别(1-渠道,2-活动,3-营销,4-终端,5-自然(非渠道))',
`statistical_code` varchar(200) NOT NULL DEFAULT '' COMMENT '统计编号(渠道编号或活动统计编号)',
`platform` tinyint(3) unsigned NOT NULL DEFAULT '5' COMMENT '平台编号(5表示不按平台统计)',
`quota_dimen_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '指标维度ID:t_quota_dimen表主键',
`segment_value` varchar(32) NOT NULL DEFAULT '' COMMENT '细分维度code或者名称',
`statistical_data` decimal(14,4) NOT NULL DEFAULT '0.0000' COMMENT '统计数据',
`start_timestamp` int(8) unsigned NOT NULL DEFAULT '0' COMMENT '月初日期,如20161201',
`end_timestamp` int(8) unsigned NOT NULL DEFAULT '0' COMMENT '月初日期,如20161231',
`create_time` datetime NOT NULL COMMENT '创建时间',
PRIMARY KEY (`id`),
KEY `idx_quotaDimenId_time` (`start_timestamp`,`end_timestamp`,`quota_dimen_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='数据统计表--月汇总';
索引改为组合索引
in 的索引放在后面
添加索引--组合索引,字段顺序,需要配合 in 的字段放在最后--DBA
PO -> DTO : 限制: 属性字段名称 相同
List
channelList = tChannelExMapper.selectByChannelName(channelName);
List channelDto = BeanUtil.copyList(channelList,TChannelDTO.class);
List poList= xxx ;
List dtoList = BeanUtil.copyList(poList,DTO.class);
数据库:涉及 byte int decimal 等数据类型,是否可能出现
若按照|组合数据;拆分时 \\| 按照此结果拆分
List list = new ArrayList();
list.add(1);
list.add(2);
list.add(3);
List temp = list;
list.set(2, 10);
for(Integer te : temp){
System.out.println(te);
}
list 的变更,会影响 tempList
// 指向统一对象空间;一个的修改,修改的是公共的对象空间
order by create_time ===》 order by id
通过static 方式初始化 定时任务
会引用不到 Mapper
原因:运行static 时 未初始化 Spring加载配置文件
解决:implements InitializingBean ; 将调用的方法放在 实现的方法中
@Service
public class ChannelUtmSourceService implements InitializingBean{
@Override
public void afterPropertiesSet() throws Exception {
init();
}
/**
* 5分钟执行一次
*/
public synchronized void init(){
event.scheduleWithFixedDelay(new Runnable() {
@Override
public void run() {
try {
action();
} catch (Exception e) {
log.errorChannelUtmSourceService reload error",e);
}
}
}, 60, 300, TimeUnit.SECONDS);
}
}
days in ("","") 若日期连续 改为 dayStart< day < dayEnd
比较date 类型,直接传参 字符串即可
SQL查询--Group by,不能对所有字段进行全查,容易丢失数据
查询SQL,没有对应数据结果,检查Mybatis 的映射结果,字段属性是否拼写错误或未对应上
Mybatis 字符串属性的字段 != null and != ''
count(1) 优于 count(*)
select 字段集合 而不是 select *
// 字符串 Sting 转化 List -- 避免集合遍历再SET
Collections.addAll(list, domain.split(","));
// 配置信息读取
static{
InputStream in = JDBCPropertiesUtil.class.getClassLoader().getResourceAsStream("conf.properties");
if(null == in){
log.error("can not load conf.properties system exit !!!");
System.exit(0);
}
properties = new Properties();
try {
properties.load(in);
} catch (IOException e) {
e.printStackTrace();
log.error("load conf.properties error system exit !!!");
}
}
explain mysql 查看SQL性能
list != null and list.size() > 0
CountDownLatch
http://blog.csdn.net/shihuacai/article/details/8856370
事务回滚--捕获同时抛出异常
在最上层进行异常处理
Mybatis 的SQL 返回值 设置为Map 或 List