MyBatis-配置文件 分手后的思念是犯贱 2021-12-10 22:55 1062阅读 0赞 ### 文章目录 ### * * 介绍 * * 1.properties 属性 * 2.settings 设置 * 3.typeAlias 类型别名 * 4.typeHandlers 类型处理器 ## 介绍 ## MyBatis的配置文件包含了会深深影响MyBatis行为的设置(settings)和属性(properties)信息。 文档的顶层结构如下: configuration 配置 properties 属性 settings 设置 typeAliases 类型别名 typeHandlers 类型处理器 objectFactory 对象工厂 plugins 插件 environments 环境 environment 环境变量 transactionManager 事务管理器 dataSource 数据源 databaseIdProvider 数据库厂商标识 mappers 映射器 ### 1.properties 属性 ### 配置一些常见变量,类似于spring中placeholder的作用。一般可以用来引入数据库配置 ![在这里插入图片描述][20190711210017877.png] 文件内容: driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/user username=root password=tang123 再到配置文件中引入: ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDUwMjgwNA_size_16_color_FFFFFF_t_70] ### 2.settings 设置 ### 是MyBatis中极为重要的调整设置,它们会改变MyBatis的运行时行为。 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDUwMjgwNA_size_16_color_FFFFFF_t_70 1] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDUwMjgwNA_size_16_color_FFFFFF_t_70 2] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDUwMjgwNA_size_16_color_FFFFFF_t_70 3] 完整的配置: <settings> <setting name="cacheEnabled" value="true"/> <setting name="lazyLoadingEnabled" value="true"/> <setting name="multipleResultSetsEnabled" value="true"/> <setting name="useColumnLabel" value="true"/> <setting name="useGeneratedKeys" value="false"/> <setting name="autoMappingBehavior" value="PARTIAL"/> <setting name="autoMappingUnknownColumnBehavior" value="WARNING"/> <setting name="defaultExecutorType" value="SIMPLE"/> <setting name="defaultStatementTimeout" value="25"/> <setting name="defaultFetchSize" value="100"/> <setting name="safeRowBoundsEnabled" value="false"/> <setting name="mapUnderscoreToCamelCase" value="false"/> <setting name="localCacheScope" value="SESSION"/> <setting name="jdbcTypeForNull" value="OTHER"/> <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/> </settings> ### 3.typeAlias 类型别名 ### **类型别名是为 Java 类型设置一个短的名字。它只和 XML 配置有关,存在的意义仅在于用来减少类完全限定名的冗余** MaBatis中提供的别名: ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDUwMjgwNA_size_16_color_FFFFFF_t_70 4] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDUwMjgwNA_size_16_color_FFFFFF_t_70 5] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDUwMjgwNA_size_16_color_FFFFFF_t_70 6] 上面这些是由MyBatis提供的别名映射,开发者也可以自定义别名,定义方式如下: <typeAliases> <typeAlias type="com.sxt.bean.User" alias="user"/> </typeAliases> ![在这里插入图片描述][2019071121082240.png] ### 4.typeHandlers 类型处理器 ### typeHandlers称做类型处理器。就是实现Java类型和数据库类型之间转换的。 除了系统提供的类型转换器之外,开发者也可以自定义类型转换,如下: 例如List<—>VARCHAR之间的类型转换: **①新建处理器** @MappedJdbcTypes(JdbcType.VARCHAR) @MappedTypes(List.class) public class ListStringTypeHandler extends BaseTypeHandler<List<String>>{ /** * 设置非空参数 * 执行SQL语句时对占位符进行设置 * 比如:sql = "insert into t_sysuser(name,age,favorites)values(?,?,?) " */ @Override public void setNonNullParameter(PreparedStatement ps, int i, List<String> parameter, JdbcType jdbcType) throws SQLException { System.out.println("------------"); StringBuilder sb = new StringBuilder(); for (String s : parameter) { sb.append(s).append(";"); } // 给占位符设值 ps.setString(i, sb.toString()); } /** * 获取非空的返回结果 * 获取数据库一条记录的某个字段的结果,转换为对应的java类型数据 */ @Override public List<String> getNullableResult(ResultSet rs, String columnName) throws SQLException { // TODO Auto-generated method stub return Arrays.asList(rs.getString(columnName).split(";")); } @Override public List<String> getNullableResult(ResultSet rs, int columnIndex) throws SQLException { // TODO Auto-generated method stub return Arrays.asList(rs.getString(columnIndex).split(";")); } @Override public List<String> getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { // TODO Auto-generated method stub return Arrays.asList(cs.getString(columnIndex).split(";")); } } **②修改配置文件** 在配置文件中增加 <typeHandlers> <typeHandler handler="com.sxt.handler.ListStringTypeHandler" /> </typeHandlers> [20190711210017877.png]: /images/20211210/1119200c888e4644b324e46109d2bd4d.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDUwMjgwNA_size_16_color_FFFFFF_t_70]: /images/20211210/7cd766b29d0d431889b67708cffe9f52.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDUwMjgwNA_size_16_color_FFFFFF_t_70 1]: /images/20211210/860dfbcb21e24bbe82114822db9d9e35.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDUwMjgwNA_size_16_color_FFFFFF_t_70 2]: /images/20211210/eb7c03e499b54b5eb5ec67e5f98bdfc2.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDUwMjgwNA_size_16_color_FFFFFF_t_70 3]: /images/20211210/f6f926aad9f84d6784936a9cd3820650.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDUwMjgwNA_size_16_color_FFFFFF_t_70 4]: /images/20211210/c23c3c2d63af4a4292ea95f9dac57bc7.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDUwMjgwNA_size_16_color_FFFFFF_t_70 5]: /images/20211210/6f2bff9260d044488d155f3c31b0f069.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDUwMjgwNA_size_16_color_FFFFFF_t_70 6]: /images/20211210/a715e031292c45188e8a31585daff1b5.png [2019071121082240.png]: /images/20211210/269bf54ac86441fe91e026342d680fbf.png
还没有评论,来说两句吧...