zoukankan      html  css  js  c++  java
  • springboot 学习(一) 配置mybatis ,全局日期处理

    试着写一写一系列博客,主要是记录从搭建框架,到集成一些相关的demo,以便以后在项目中用到的时候可以快速拷贝代码。

    计划是一步一步的集成一些技术,比如,拦截器的使用,easypoi 的使用demo,Redis 的使用demo ,利用Redis做缓存,限流处理。rabbitmq 的使用demo

    文件上传demo ,集成shiro 的demo,一些工具类的收集。等等想到什么写什么

    项目结构:

    MybatisConfigurer 

    @Configuration
    public class MybatisConfigurer {
    	
    	private final static String ENTITY_PACKAGE ="com.zh.demo.entity";
    	private final static String MAPPER_PACKAGE ="com.zh.demo.dao";
    	//Mapper插件基础接口的完全限定名
    	private final static String MAPPER_INTERFACE_REFERENCE ="com.zh.demo.core.Mapper";
    	@Bean
    	public SqlSessionFactory sqlSessionFactoryBean(DataSource dataSource) throws Exception {
    		SqlSessionFactoryBean factory = new SqlSessionFactoryBean();
    		factory.setDataSource(dataSource);
    		factory.setTypeAliasesPackage(ENTITY_PACKAGE);
    		// 配置分页插件,详情请查阅官方文档
    		PageHelper pageHelper = new PageHelper();
    		Properties properties = new Properties();
    		properties.setProperty("pageSizeZero", "true");// 分页尺寸为0时查询所有纪录不再执行分页
    		properties.setProperty("reasonable", "true");// 页码<=0 查询第一页,页码>=总页数查询最后一页
    		properties.setProperty("supportMethodsArguments", "true");// 支持通过 Mapper 接口参数来传递分页参数
    		pageHelper.setProperties(properties);
    		// 添加插件
    		factory.setPlugins(new Interceptor[] { pageHelper });
    		// 添加XML目录
    		ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
    		// https://blog.csdn.net/kkdelta/article/details/5507799
    		factory.setMapperLocations(resolver.getResources("classpath*:mapper/*.xml"));
    		return factory.getObject();
    	}
    	@Bean
    	public MapperScannerConfigurer mapperScannerConfigurer() {
    		MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
    		mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactoryBean");
    		mapperScannerConfigurer.setBasePackage(MAPPER_PACKAGE);
    		// 配置通用Mapper,详情请查阅官方文档
    		Properties properties = new Properties();
    		properties.setProperty("mappers", MAPPER_INTERFACE_REFERENCE);
    		properties.setProperty("notEmpty", "false");// insert、update是否判断字符串类型!='' 即 test="str !=
    													// null"表达式内是否追加 and str != ''
    		properties.setProperty("IDENTITY", "MYSQL");
    		mapperScannerConfigurer.setProperties(properties);
    		return mapperScannerConfigurer;
    	}
    }
    

      DateConverterConfig:全局handler前日期统一处理(特别是查询的时候,日期控件传回来的日期,需要转换)

    @Component
    public class DateConverterConfig implements Converter<String, Date> {
    	private static final List<String> formarts = new ArrayList<>(4);
    	static {
    		formarts.add("yyyy-MM");
    		formarts.add("yyyy-MM-dd");
    		formarts.add("yyyy-MM-dd HH:mm");
    		formarts.add("yyyy-MM-dd HH:mm:ss");
    	}
    
    	@Override
    	public Date convert(String source) {
    		String value = source.trim();
    		if ("".equals(value)) {
    			return null;
    		}
    		if (source.matches("^\d{4}-\d{1,2}$")) {
    			return parseDate(source, formarts.get(0));
    		} else if (source.matches("^\d{4}-\d{1,2}-\d{1,2}$")) {
    			return parseDate(source, formarts.get(1));
    		} else if (source.matches("^\d{4}-\d{1,2}-\d{1,2} {1}\d{1,2}:\d{1,2}$")) {
    			return parseDate(source, formarts.get(2));
    		} else if (source.matches("^\d{4}-\d{1,2}-\d{1,2} {1}\d{1,2}:\d{1,2}:\d{1,2}$")) {
    			return parseDate(source, formarts.get(3));
    		} else {
    			throw new IllegalArgumentException("Invalid boolean value '" + source + "'");
    		}
    	}
    	/**
    	 * 格式化日期
    	 * @param dateStr String 字符型日期
    	 * @param format String 格式
    	 * @return Date 日期
    	 */
    	public Date parseDate(String dateStr, String format) {
    		Date date = null;
    		try {
    			DateFormat dateFormat = new SimpleDateFormat(format);
    			date = dateFormat.parse(dateStr);
    		} catch (Exception e) {
    		}
    		return date;
    	}
    }
    

      

      

  • 相关阅读:
    HotSpot 虚拟机垃圾回收算法实现
    多线程死锁的产生原因以及如何避免
    Java异常实战——OutOfMemoryError
    MySQL数据库中的四种隔离级别
    Java运行时数据区概述
    MySQL 字符集和校对
    debezium关于cdc的使用(下)
    debezium关于cdc的使用(上)
    对xxl-job进行simpleTrigger并动态创建任务扩展
    折腾Java设计模式之单例模式
  • 原文地址:https://www.cnblogs.com/zzllx/p/9972495.html
Copyright © 2011-2022 走看看