在Java系统里面经常面对状态常量,今天突然很纠结如何做到最佳最优雅的处理状态常量;我总结了之前遇到的方案,感觉都挺不理想的。欢迎您留下你认为的最佳方案。
生鲜电商
我一直有一个创业梦,今天实现了尽管不尽人意。这次创业谈不上创新,只是简单地复制别人的商业模式。搞笑的时复制失败了,《精益创业》一书讲到“没有创新的创业关键在于执行力”,好吧😂😂😂我的执行力是有问题的。
MyBatis配置
属性(properties)
可以通过三个地方进行属性配置,优先级逐减,向下覆盖。
1、Java代码配置
1 | SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader, props); |
2、resource、url读取配置
1 | <properties resource="org/mybatis/example/config.properties"> |
3、property配置
1 | <properties > |
启用默认值语法
1、开启默认值语法支持
1 | <properties resource="org/mybatis/example/config.properties"> |
2、默认值语法使用
1 | <dataSource type="POOLED"> |
设置(settings)
这是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。 这里不做介绍,可以移步官网查看** 设置中各项设置的含义、默认值等**
类型别名(typeAliases)
类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余的全限定类名书写。
两种设置方式
1、xml中配置
1 | <typeAliases> |
2、注解
1 | @Alias("author") |
3、常见别名
请移步 官网类型别名介绍
类型处理器
MyBatis 在设置预处理语句(PreparedStatement)中的参数或从结果集中取出一个值时, 都会用类型处理器将获取到的值以合适的方式转换成 Java 类型。下表描述了一些默认的类型处理器。
提示 从 3.4.5 开始,MyBatis 默认支持 JSR-310(日期和时间 API)
1、内置处理器
请移步 官网类型处理器介绍
2、自定义类型处理器
实现 org.apache.ibatis.type.TypeHandler 接口,
或继承 org.apache.ibatis.type.BaseTypeHandler,
1 | @MappedJdbcTypes(JdbcType.VARCHAR) |
添加xml配置
1 | <typeHandlers> |
绑定jdbc类型方式
- 实现类上增加 MappedJdbcTYpes 注解
- typehandler xml配置中增加 jdbcType属性,优先级高于注解
绑定Java类型方式
- 实现类上增加 MappedTypes 注解
- typehandler xml配置中增加 javaType属性,优先级高于注解
3、处理枚举
可以处理Enum类型的有
- EnumTypeHandler
Enum值转化成对应的名字,可以处理任何Enum的子类。默认用的这个 - EnumOrdinalTypeHandler
将Enum转换成对应的ordinal进行存储,ordinal的值取决于枚举的顺序,从0开始。改变枚举顺序会影响ordinal的值;
如果要使用可以通过反射重写ordinal的值。
4、插件
MyBatis 允许你在映射语句执行过程中的某一点进行拦截调用。默认情况下,MyBatis 允许使用插件来拦截的方法调用包括:
- Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)
- ParameterHandler (getParameterObject, setParameters)
- ResultSetHandler (handleResultSets, handleOutputParameters)
- StatementHandler (prepare, parameterize, batch, update, query)
1 | // ExamplePlugin.java |
4、环境配置(environments)
包含环境、事务、数据源几部分的配置。
请移步 官方环境配置介绍
5、数据库厂商标识(databaseIdProvider)
请移步 官方数据厂商标识介绍
影响力
作者:【美】罗伯特·西奥迪尼(Robert B.Cialdini)
在复杂的社会环境中,人类习惯了使用捷径(由局部特征得出结论)做决定,文明的进步也在于此。这个习惯就像固定的机器行为一旦被触发就会自动执行,即便违背你的意愿。作者将能够激活固定行为的方式方法称作“影响力武器”。
collection的mistake
最近阅读集合源码发现一个问题,collection 下面的对象总有父类实现某接口子类再次实现次接口。
Java面试题
初级,语言特点、数据类型、数据结构、字符串对象、异常处理、lang包
中级,内存模型、内存结构、加载机制、语法糖、虚拟机性能监控工具、多线程
String类型
boolean类型
boolean类型 占多大空间