org.apache.ibatis.mapping.ResultFlag Java Examples
The following examples show how to use
org.apache.ibatis.mapping.ResultFlag.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: XMLMapperBuilder.java From mybatis with Apache License 2.0 | 6 votes |
private ResultMapping buildResultMappingFromContext(XNode context, Class<?> resultType, List<ResultFlag> flags) throws Exception { //<id property="id" column="author_id"/> //<result property="username" column="author_username"/> String property = context.getStringAttribute("property"); String column = context.getStringAttribute("column"); String javaType = context.getStringAttribute("javaType"); String jdbcType = context.getStringAttribute("jdbcType"); String nestedSelect = context.getStringAttribute("select"); //处理嵌套的result map String nestedResultMap = context.getStringAttribute("resultMap", processNestedResultMappings(context, Collections.<ResultMapping> emptyList())); String notNullColumn = context.getStringAttribute("notNullColumn"); String columnPrefix = context.getStringAttribute("columnPrefix"); String typeHandler = context.getStringAttribute("typeHandler"); String resulSet = context.getStringAttribute("resultSet"); String foreignColumn = context.getStringAttribute("foreignColumn"); boolean lazy = "lazy".equals(context.getStringAttribute("fetchType", configuration.isLazyLoadingEnabled() ? "lazy" : "eager")); Class<?> javaTypeClass = resolveClass(javaType); @SuppressWarnings("unchecked") Class<? extends TypeHandler<?>> typeHandlerClass = (Class<? extends TypeHandler<?>>) resolveClass(typeHandler); JdbcType jdbcTypeEnum = resolveJdbcType(jdbcType); //又去调builderAssistant.buildResultMapping return builderAssistant.buildResultMapping(resultType, property, column, javaTypeClass, jdbcTypeEnum, nestedSelect, nestedResultMap, notNullColumn, columnPrefix, typeHandlerClass, flags, resulSet, foreignColumn, lazy); }
Example #2
Source File: MapperBuilderAssistant.java From mybatis with Apache License 2.0 | 6 votes |
/** Backward compatibility signature */ //向后兼容方法 public ResultMapping buildResultMapping( Class<?> resultType, String property, String column, Class<?> javaType, JdbcType jdbcType, String nestedSelect, String nestedResultMap, String notNullColumn, String columnPrefix, Class<? extends TypeHandler<?>> typeHandler, List<ResultFlag> flags) { return buildResultMapping( resultType, property, column, javaType, jdbcType, nestedSelect, nestedResultMap, notNullColumn, columnPrefix, typeHandler, flags, null, null, configuration.isLazyLoadingEnabled()); }
Example #3
Source File: MapperAnnotationBuilder.java From mybaties with Apache License 2.0 | 6 votes |
private void applyResults(Result[] results, Class<?> resultType, List<ResultMapping> resultMappings) { for (Result result : results) { List<ResultFlag> flags = new ArrayList<ResultFlag>(); if (result.id()) { flags.add(ResultFlag.ID); } ResultMapping resultMapping = assistant.buildResultMapping( resultType, nullOrEmpty(result.property()), nullOrEmpty(result.column()), result.javaType() == void.class ? null : result.javaType(), result.jdbcType() == JdbcType.UNDEFINED ? null : result.jdbcType(), hasNestedSelect(result) ? nestedSelectId(result) : null, null, null, null, result.typeHandler() == UnknownTypeHandler.class ? null : result.typeHandler(), flags, null, null, isLazy(result)); resultMappings.add(resultMapping); } }
Example #4
Source File: MapperAnnotationBuilder.java From mybaties with Apache License 2.0 | 6 votes |
private void applyConstructorArgs(Arg[] args, Class<?> resultType, List<ResultMapping> resultMappings) { for (Arg arg : args) { List<ResultFlag> flags = new ArrayList<ResultFlag>(); flags.add(ResultFlag.CONSTRUCTOR); if (arg.id()) { flags.add(ResultFlag.ID); } ResultMapping resultMapping = assistant.buildResultMapping( resultType, null, nullOrEmpty(arg.column()), arg.javaType() == void.class ? null : arg.javaType(), arg.jdbcType() == JdbcType.UNDEFINED ? null : arg.jdbcType(), nullOrEmpty(arg.select()), nullOrEmpty(arg.resultMap()), null, null, arg.typeHandler() == UnknownTypeHandler.class ? null : arg.typeHandler(), flags, null, null, false); resultMappings.add(resultMapping); } }
Example #5
Source File: IdTest.java From Mapper with MIT License | 6 votes |
@Test public void testSingleId(){ EntityHelper.initEntityNameMap(UserSingleId.class, config); EntityTable entityTable = EntityHelper.getEntityTable(UserSingleId.class); Assert.assertNotNull(entityTable); Set<EntityColumn> columns = entityTable.getEntityClassColumns(); Assert.assertEquals(1, columns.size()); for (EntityColumn column : columns) { Assert.assertTrue(column.isId()); } ResultMap resultMap = entityTable.getResultMap(configuration); Assert.assertEquals(1, resultMap.getResultMappings().size()); Assert.assertTrue(resultMap.getResultMappings().get(0).getFlags().contains(ResultFlag.ID)); Assert.assertEquals("<where> AND name = #{name}</where>", SqlHelper.wherePKColumns(UserSingleId.class)); }
Example #6
Source File: MapperAnnotationBuilder.java From mybatis with Apache License 2.0 | 6 votes |
private void applyConstructorArgs(Arg[] args, Class<?> resultType, List<ResultMapping> resultMappings) { for (Arg arg : args) { List<ResultFlag> flags = new ArrayList<ResultFlag>(); flags.add(ResultFlag.CONSTRUCTOR); if (arg.id()) { flags.add(ResultFlag.ID); } ResultMapping resultMapping = assistant.buildResultMapping( resultType, null, nullOrEmpty(arg.column()), arg.javaType() == void.class ? null : arg.javaType(), arg.jdbcType() == JdbcType.UNDEFINED ? null : arg.jdbcType(), nullOrEmpty(arg.select()), nullOrEmpty(arg.resultMap()), null, null, arg.typeHandler() == UnknownTypeHandler.class ? null : arg.typeHandler(), flags, null, null, false); resultMappings.add(resultMapping); } }
Example #7
Source File: MapperBuilderAssistant.java From mybaties with Apache License 2.0 | 6 votes |
/** Backward compatibility signature */ //向后兼容方法 public ResultMapping buildResultMapping( Class<?> resultType, String property, String column, Class<?> javaType, JdbcType jdbcType, String nestedSelect, String nestedResultMap, String notNullColumn, String columnPrefix, Class<? extends TypeHandler<?>> typeHandler, List<ResultFlag> flags) { return buildResultMapping( resultType, property, column, javaType, jdbcType, nestedSelect, nestedResultMap, notNullColumn, columnPrefix, typeHandler, flags, null, null, configuration.isLazyLoadingEnabled()); }
Example #8
Source File: MapperAnnotationBuilder.java From mybatis with Apache License 2.0 | 6 votes |
private void applyResults(Result[] results, Class<?> resultType, List<ResultMapping> resultMappings) { for (Result result : results) { List<ResultFlag> flags = new ArrayList<ResultFlag>(); if (result.id()) { flags.add(ResultFlag.ID); } ResultMapping resultMapping = assistant.buildResultMapping( resultType, nullOrEmpty(result.property()), nullOrEmpty(result.column()), result.javaType() == void.class ? null : result.javaType(), result.jdbcType() == JdbcType.UNDEFINED ? null : result.jdbcType(), hasNestedSelect(result) ? nestedSelectId(result) : null, null, null, null, result.typeHandler() == UnknownTypeHandler.class ? null : result.typeHandler(), flags, null, null, isLazy(result)); resultMappings.add(resultMapping); } }
Example #9
Source File: IdTest.java From Mapper with MIT License | 6 votes |
@Test public void testCompositeKeys(){ EntityHelper.initEntityNameMap(UserCompositeKeys.class, config); EntityTable entityTable = EntityHelper.getEntityTable(UserCompositeKeys.class); Assert.assertNotNull(entityTable); Set<EntityColumn> columns = entityTable.getEntityClassColumns(); Assert.assertEquals(2, columns.size()); Assert.assertEquals(2, entityTable.getEntityClassPKColumns().size()); for (EntityColumn column : columns) { Assert.assertTrue(column.isId()); } ResultMap resultMap = entityTable.getResultMap(configuration); Assert.assertEquals(2, resultMap.getResultMappings().size()); Assert.assertTrue(resultMap.getResultMappings().get(0).getFlags().contains(ResultFlag.ID)); Assert.assertTrue(resultMap.getResultMappings().get(1).getFlags().contains(ResultFlag.ID)); Assert.assertEquals("<where> AND name = #{name} AND orgId = #{orgId}</where>", SqlHelper.wherePKColumns(UserCompositeKeys.class)); }
Example #10
Source File: XMLMapperBuilder.java From mybaties with Apache License 2.0 | 6 votes |
private ResultMapping buildResultMappingFromContext(XNode context, Class<?> resultType, List<ResultFlag> flags) throws Exception { //<id property="id" column="author_id"/> //<result property="username" column="author_username"/> String property = context.getStringAttribute("property"); String column = context.getStringAttribute("column"); String javaType = context.getStringAttribute("javaType"); String jdbcType = context.getStringAttribute("jdbcType"); String nestedSelect = context.getStringAttribute("select"); //处理嵌套的result map String nestedResultMap = context.getStringAttribute("resultMap", processNestedResultMappings(context, Collections.<ResultMapping> emptyList())); String notNullColumn = context.getStringAttribute("notNullColumn"); String columnPrefix = context.getStringAttribute("columnPrefix"); String typeHandler = context.getStringAttribute("typeHandler"); String resulSet = context.getStringAttribute("resultSet"); String foreignColumn = context.getStringAttribute("foreignColumn"); boolean lazy = "lazy".equals(context.getStringAttribute("fetchType", configuration.isLazyLoadingEnabled() ? "lazy" : "eager")); Class<?> javaTypeClass = resolveClass(javaType); @SuppressWarnings("unchecked") Class<? extends TypeHandler<?>> typeHandlerClass = (Class<? extends TypeHandler<?>>) resolveClass(typeHandler); JdbcType jdbcTypeEnum = resolveJdbcType(jdbcType); //又去调builderAssistant.buildResultMapping return builderAssistant.buildResultMapping(resultType, property, column, javaTypeClass, jdbcTypeEnum, nestedSelect, nestedResultMap, notNullColumn, columnPrefix, typeHandlerClass, flags, resulSet, foreignColumn, lazy); }
Example #11
Source File: ExecutorTestHelper.java From mybatis with Apache License 2.0 | 5 votes |
public static MappedStatement prepareSelectBlogByIdAndAuthor(final Configuration config) { final TypeHandlerRegistry registry = config.getTypeHandlerRegistry(); final SqlSource sqlSource = new StaticSqlSource(config,"SELECT b.id, b.author_id, b.title, a.username, a.password, a.email, a.bio" + " FROM blog b" + " INNER JOIN author a ON b.author_id = a.id" + " WHERE b.id = ? and a.id = ?"); final ParameterMap parameterMap = new ParameterMap.Builder(config, "defaultParameterMap", Map.class, new ArrayList<ParameterMapping>() { { add(new ParameterMapping.Builder(config, "blogId", registry.getTypeHandler(int.class)).build()); add(new ParameterMapping.Builder(config, "authorId", registry.getTypeHandler(int.class)).build()); } }).build(); final ResultMap resultMap = new ResultMap.Builder(config, "defaultResultMap", Blog.class, new ArrayList<ResultMapping>() { { add(new ResultMapping.Builder(config, "id", "id", registry.getTypeHandler(int.class)) .flags(new ArrayList<ResultFlag>() { { add(ResultFlag.ID); } }).build()); add(new ResultMapping.Builder(config, "title", "title", registry.getTypeHandler(String.class)).build()); add(new ResultMapping.Builder(config, "author.id", "author_id", registry.getTypeHandler(int.class)).build()); add(new ResultMapping.Builder(config, "author.username", "username", registry.getTypeHandler(String.class)).build()); add(new ResultMapping.Builder(config, "author.password", "password", registry.getTypeHandler(String.class)).build()); add(new ResultMapping.Builder(config, "author.email", "email", registry.getTypeHandler(String.class)).build()); add(new ResultMapping.Builder(config, "author.bio", "bio", registry.getTypeHandler(String.class)).build()); add(new ResultMapping.Builder(config, "posts", "id", registry.getTypeHandler(int.class)).javaType(List.class).nestedQueryId("selectPostsForBlog").build()); } }).build(); return new MappedStatement.Builder(config, "selectBlogByIdAndAuthor", sqlSource, SqlCommandType.SELECT) .parameterMap(parameterMap) .resultMaps(new ArrayList<ResultMap>() { { add(resultMap); } }).build(); }
Example #12
Source File: ExecutorTestHelper.java From mybaties with Apache License 2.0 | 5 votes |
public static MappedStatement prepareComplexSelectBlogMappedStatement(final Configuration config) { final TypeHandlerRegistry registry = config.getTypeHandlerRegistry(); final SqlSource sqlSource = new StaticSqlSource(config, "SELECT b.id, b.author_id, b.title, a.username, a.password, a.email, a.bio" + " FROM blog b" + " INNER JOIN author a ON b.author_id = a.id" + " WHERE b.id = ?"); final ParameterMap parameterMap = new ParameterMap.Builder(config, "defaultParameterMap", int.class, new ArrayList<ParameterMapping>() { { add(new ParameterMapping.Builder(config, "id", registry.getTypeHandler(int.class)).build()); } }).build(); final ResultMap resultMap = new ResultMap.Builder(config, "defaultResultMap", Blog.class, new ArrayList<ResultMapping>() { { add(new ResultMapping.Builder(config, "id", "id", registry.getTypeHandler(int.class)) .flags(new ArrayList<ResultFlag>() { { add(ResultFlag.ID); } }).build()); add(new ResultMapping.Builder(config, "title", "title", registry.getTypeHandler(String.class)).build()); add(new ResultMapping.Builder(config, "author.id", "author_id", registry.getTypeHandler(int.class)).build()); add(new ResultMapping.Builder(config, "author.username", "username", registry.getTypeHandler(String.class)).build()); add(new ResultMapping.Builder(config, "author.password", "password", registry.getTypeHandler(String.class)).build()); add(new ResultMapping.Builder(config, "author.email", "email", registry.getTypeHandler(String.class)).build()); add(new ResultMapping.Builder(config, "author.bio", "bio", registry.getTypeHandler(String.class)).build()); add(new ResultMapping.Builder(config, "posts", "id", registry.getTypeHandler(int.class)).javaType(List.class).nestedQueryId("selectPostsForBlog").build()); } }).build(); return new MappedStatement.Builder(config, "selectBlogById", sqlSource, SqlCommandType.SELECT) .parameterMap(parameterMap) .resultMaps(new ArrayList<ResultMap>() { { add(resultMap); } }).build(); }
Example #13
Source File: ExecutorTestHelper.java From mybatis with Apache License 2.0 | 5 votes |
public static MappedStatement prepareComplexSelectBlogMappedStatement(final Configuration config) { final TypeHandlerRegistry registry = config.getTypeHandlerRegistry(); final SqlSource sqlSource = new StaticSqlSource(config, "SELECT b.id, b.author_id, b.title, a.username, a.password, a.email, a.bio" + " FROM blog b" + " INNER JOIN author a ON b.author_id = a.id" + " WHERE b.id = ?"); final ParameterMap parameterMap = new ParameterMap.Builder(config, "defaultParameterMap", int.class, new ArrayList<ParameterMapping>() { { add(new ParameterMapping.Builder(config, "id", registry.getTypeHandler(int.class)).build()); } }).build(); final ResultMap resultMap = new ResultMap.Builder(config, "defaultResultMap", Blog.class, new ArrayList<ResultMapping>() { { add(new ResultMapping.Builder(config, "id", "id", registry.getTypeHandler(int.class)) .flags(new ArrayList<ResultFlag>() { { add(ResultFlag.ID); } }).build()); add(new ResultMapping.Builder(config, "title", "title", registry.getTypeHandler(String.class)).build()); add(new ResultMapping.Builder(config, "author.id", "author_id", registry.getTypeHandler(int.class)).build()); add(new ResultMapping.Builder(config, "author.username", "username", registry.getTypeHandler(String.class)).build()); add(new ResultMapping.Builder(config, "author.password", "password", registry.getTypeHandler(String.class)).build()); add(new ResultMapping.Builder(config, "author.email", "email", registry.getTypeHandler(String.class)).build()); add(new ResultMapping.Builder(config, "author.bio", "bio", registry.getTypeHandler(String.class)).build()); add(new ResultMapping.Builder(config, "posts", "id", registry.getTypeHandler(int.class)).javaType(List.class).nestedQueryId("selectPostsForBlog").build()); } }).build(); return new MappedStatement.Builder(config, "selectBlogById", sqlSource, SqlCommandType.SELECT) .parameterMap(parameterMap) .resultMaps(new ArrayList<ResultMap>() { { add(resultMap); } }).build(); }
Example #14
Source File: ExecutorTestHelper.java From mybatis with Apache License 2.0 | 5 votes |
public static MappedStatement prepareSelectOneAuthorMappedStatementWithConstructorResults(final Configuration config) { final TypeHandlerRegistry registry = config.getTypeHandlerRegistry(); MappedStatement ms = new MappedStatement.Builder(config, "selectAuthor", new StaticSqlSource(config,"SELECT * FROM author WHERE id = ?"), SqlCommandType.SELECT) .parameterMap(new ParameterMap.Builder(config, "defaultParameterMap", Author.class, new ArrayList<ParameterMapping>() { { add(new ParameterMapping.Builder(config, "id", registry.getTypeHandler(int.class)).build()); } }).build()) .resultMaps(new ArrayList<ResultMap>() { { add(new ResultMap.Builder(config, "defaultResultMap", Author.class, new ArrayList<ResultMapping>() { { add(new ResultMapping.Builder(config, null, "id", registry.getTypeHandler(Integer.class)).javaType(int.class).flags(new ArrayList<ResultFlag>() { { add(ResultFlag.CONSTRUCTOR); } }).build()); add(new ResultMapping.Builder(config, "username", "username", registry.getTypeHandler(String.class)).build()); add(new ResultMapping.Builder(config, "password", "password", registry.getTypeHandler(String.class)).build()); add(new ResultMapping.Builder(config, "email", "email", registry.getTypeHandler(String.class)).build()); add(new ResultMapping.Builder(config, "bio", "bio", registry.getTypeHandler(String.class)).build()); add(new ResultMapping.Builder(config, "favouriteSection", "favourite_section", registry.getTypeHandler(Section.class)).build()); } }).build()); } }) .cache(authorCache) .build(); return ms; }
Example #15
Source File: MapperBuilderAssistant.java From mybatis with Apache License 2.0 | 5 votes |
public Discriminator buildDiscriminator( Class<?> resultType, String column, Class<?> javaType, JdbcType jdbcType, Class<? extends TypeHandler<?>> typeHandler, Map<String, String> discriminatorMap) { ResultMapping resultMapping = buildResultMapping( resultType, null, column, javaType, jdbcType, null, null, null, null, typeHandler, new ArrayList<ResultFlag>(), null, null, false); Map<String, String> namespaceDiscriminatorMap = new HashMap<String, String>(); for (Map.Entry<String, String> e : discriminatorMap.entrySet()) { String resultMap = e.getValue(); resultMap = applyCurrentNamespace(resultMap, true); namespaceDiscriminatorMap.put(e.getKey(), resultMap); } Discriminator.Builder discriminatorBuilder = new Discriminator.Builder(configuration, resultMapping, namespaceDiscriminatorMap); return discriminatorBuilder.build(); }
Example #16
Source File: MapperBuilderAssistant.java From mybatis with Apache License 2.0 | 5 votes |
public ResultMapping buildResultMapping( Class<?> resultType, String property, String column, Class<?> javaType, JdbcType jdbcType, String nestedSelect, String nestedResultMap, String notNullColumn, String columnPrefix, Class<? extends TypeHandler<?>> typeHandler, List<ResultFlag> flags, String resultSet, String foreignColumn, boolean lazy) { Class<?> javaTypeClass = resolveResultJavaType(resultType, property, javaType); TypeHandler<?> typeHandlerInstance = resolveTypeHandler(javaTypeClass, typeHandler); //解析复合的列名,一般用不到,返回的是空 List<ResultMapping> composites = parseCompositeColumnName(column); if (composites.size() > 0) { column = null; } //构建result map ResultMapping.Builder builder = new ResultMapping.Builder(configuration, property, column, javaTypeClass); builder.jdbcType(jdbcType); builder.nestedQueryId(applyCurrentNamespace(nestedSelect, true)); builder.nestedResultMapId(applyCurrentNamespace(nestedResultMap, true)); builder.resultSet(resultSet); builder.typeHandler(typeHandlerInstance); builder.flags(flags == null ? new ArrayList<ResultFlag>() : flags); builder.composites(composites); builder.notNullColumns(parseMultipleColumnNames(notNullColumn)); builder.columnPrefix(columnPrefix); builder.foreignColumn(foreignColumn); builder.lazy(lazy); return builder.build(); }
Example #17
Source File: XMLMapperBuilder.java From mybatis with Apache License 2.0 | 5 votes |
private void processConstructorElement(XNode resultChild, Class<?> resultType, List<ResultMapping> resultMappings) throws Exception { List<XNode> argChildren = resultChild.getChildren(); for (XNode argChild : argChildren) { List<ResultFlag> flags = new ArrayList<ResultFlag>(); //结果标志加上ID和CONSTRUCTOR flags.add(ResultFlag.CONSTRUCTOR); if ("idArg".equals(argChild.getName())) { flags.add(ResultFlag.ID); } resultMappings.add(buildResultMappingFromContext(argChild, resultType, flags)); } }
Example #18
Source File: ExecutorTestHelper.java From mybaties with Apache License 2.0 | 5 votes |
public static MappedStatement prepareSelectBlogByIdAndAuthor(final Configuration config) { final TypeHandlerRegistry registry = config.getTypeHandlerRegistry(); final SqlSource sqlSource = new StaticSqlSource(config,"SELECT b.id, b.author_id, b.title, a.username, a.password, a.email, a.bio" + " FROM blog b" + " INNER JOIN author a ON b.author_id = a.id" + " WHERE b.id = ? and a.id = ?"); final ParameterMap parameterMap = new ParameterMap.Builder(config, "defaultParameterMap", Map.class, new ArrayList<ParameterMapping>() { { add(new ParameterMapping.Builder(config, "blogId", registry.getTypeHandler(int.class)).build()); add(new ParameterMapping.Builder(config, "authorId", registry.getTypeHandler(int.class)).build()); } }).build(); final ResultMap resultMap = new ResultMap.Builder(config, "defaultResultMap", Blog.class, new ArrayList<ResultMapping>() { { add(new ResultMapping.Builder(config, "id", "id", registry.getTypeHandler(int.class)) .flags(new ArrayList<ResultFlag>() { { add(ResultFlag.ID); } }).build()); add(new ResultMapping.Builder(config, "title", "title", registry.getTypeHandler(String.class)).build()); add(new ResultMapping.Builder(config, "author.id", "author_id", registry.getTypeHandler(int.class)).build()); add(new ResultMapping.Builder(config, "author.username", "username", registry.getTypeHandler(String.class)).build()); add(new ResultMapping.Builder(config, "author.password", "password", registry.getTypeHandler(String.class)).build()); add(new ResultMapping.Builder(config, "author.email", "email", registry.getTypeHandler(String.class)).build()); add(new ResultMapping.Builder(config, "author.bio", "bio", registry.getTypeHandler(String.class)).build()); add(new ResultMapping.Builder(config, "posts", "id", registry.getTypeHandler(int.class)).javaType(List.class).nestedQueryId("selectPostsForBlog").build()); } }).build(); return new MappedStatement.Builder(config, "selectBlogByIdAndAuthor", sqlSource, SqlCommandType.SELECT) .parameterMap(parameterMap) .resultMaps(new ArrayList<ResultMap>() { { add(resultMap); } }).build(); }
Example #19
Source File: ExecutorTestHelper.java From mybaties with Apache License 2.0 | 5 votes |
public static MappedStatement prepareSelectOneAuthorMappedStatementWithConstructorResults(final Configuration config) { final TypeHandlerRegistry registry = config.getTypeHandlerRegistry(); MappedStatement ms = new MappedStatement.Builder(config, "selectAuthor", new StaticSqlSource(config,"SELECT * FROM author WHERE id = ?"), SqlCommandType.SELECT) .parameterMap(new ParameterMap.Builder(config, "defaultParameterMap", Author.class, new ArrayList<ParameterMapping>() { { add(new ParameterMapping.Builder(config, "id", registry.getTypeHandler(int.class)).build()); } }).build()) .resultMaps(new ArrayList<ResultMap>() { { add(new ResultMap.Builder(config, "defaultResultMap", Author.class, new ArrayList<ResultMapping>() { { add(new ResultMapping.Builder(config, null, "id", registry.getTypeHandler(Integer.class)).javaType(int.class).flags(new ArrayList<ResultFlag>() { { add(ResultFlag.CONSTRUCTOR); } }).build()); add(new ResultMapping.Builder(config, "username", "username", registry.getTypeHandler(String.class)).build()); add(new ResultMapping.Builder(config, "password", "password", registry.getTypeHandler(String.class)).build()); add(new ResultMapping.Builder(config, "email", "email", registry.getTypeHandler(String.class)).build()); add(new ResultMapping.Builder(config, "bio", "bio", registry.getTypeHandler(String.class)).build()); add(new ResultMapping.Builder(config, "favouriteSection", "favourite_section", registry.getTypeHandler(Section.class)).build()); } }).build()); } }) .cache(authorCache) .build(); return ms; }
Example #20
Source File: XMLMapperBuilder.java From mybaties with Apache License 2.0 | 5 votes |
private void processConstructorElement(XNode resultChild, Class<?> resultType, List<ResultMapping> resultMappings) throws Exception { List<XNode> argChildren = resultChild.getChildren(); for (XNode argChild : argChildren) { List<ResultFlag> flags = new ArrayList<ResultFlag>(); //结果标志加上ID和CONSTRUCTOR flags.add(ResultFlag.CONSTRUCTOR); if ("idArg".equals(argChild.getName())) { flags.add(ResultFlag.ID); } resultMappings.add(buildResultMappingFromContext(argChild, resultType, flags)); } }
Example #21
Source File: MapperBuilderAssistant.java From mybaties with Apache License 2.0 | 5 votes |
public ResultMapping buildResultMapping( Class<?> resultType, String property, String column, Class<?> javaType, JdbcType jdbcType, String nestedSelect, String nestedResultMap, String notNullColumn, String columnPrefix, Class<? extends TypeHandler<?>> typeHandler, List<ResultFlag> flags, String resultSet, String foreignColumn, boolean lazy) { Class<?> javaTypeClass = resolveResultJavaType(resultType, property, javaType); TypeHandler<?> typeHandlerInstance = resolveTypeHandler(javaTypeClass, typeHandler); //解析复合的列名,一般用不到,返回的是空 List<ResultMapping> composites = parseCompositeColumnName(column); if (composites.size() > 0) { column = null; } //构建result map ResultMapping.Builder builder = new ResultMapping.Builder(configuration, property, column, javaTypeClass); builder.jdbcType(jdbcType); builder.nestedQueryId(applyCurrentNamespace(nestedSelect, true)); builder.nestedResultMapId(applyCurrentNamespace(nestedResultMap, true)); builder.resultSet(resultSet); builder.typeHandler(typeHandlerInstance); builder.flags(flags == null ? new ArrayList<ResultFlag>() : flags); builder.composites(composites); builder.notNullColumns(parseMultipleColumnNames(notNullColumn)); builder.columnPrefix(columnPrefix); builder.foreignColumn(foreignColumn); builder.lazy(lazy); return builder.build(); }
Example #22
Source File: MapperBuilderAssistant.java From mybaties with Apache License 2.0 | 5 votes |
public Discriminator buildDiscriminator( Class<?> resultType, String column, Class<?> javaType, JdbcType jdbcType, Class<? extends TypeHandler<?>> typeHandler, Map<String, String> discriminatorMap) { ResultMapping resultMapping = buildResultMapping( resultType, null, column, javaType, jdbcType, null, null, null, null, typeHandler, new ArrayList<ResultFlag>(), null, null, false); Map<String, String> namespaceDiscriminatorMap = new HashMap<String, String>(); for (Map.Entry<String, String> e : discriminatorMap.entrySet()) { String resultMap = e.getValue(); resultMap = applyCurrentNamespace(resultMap, true); namespaceDiscriminatorMap.put(e.getKey(), resultMap); } Discriminator.Builder discriminatorBuilder = new Discriminator.Builder(configuration, resultMapping, namespaceDiscriminatorMap); return discriminatorBuilder.build(); }
Example #23
Source File: MybatisBasicMapperBuilder.java From spring-data-mybatis with Apache License 2.0 | 5 votes |
private void addResultMap() { List<ResultMapping> resultMappings = new ArrayList<>(); entity.doWithProperties((PropertyHandler<MybatisPersistentProperty>) p -> { if (p.isAnnotationPresent(EmbeddedId.class) || p.isEmbeddable()) { ((MybatisPersistentEntityImpl) entity) .getRequiredPersistentEntity(p.getActualType()).doWithProperties( (PropertyHandler<MybatisPersistentProperty>) ep -> { resultMappings.add( assistant.buildResultMapping(ep.getType(), String.format("%s.%s", p.getName(), ep.getName()), ep.getColumnName(), ep.getType(), ep.getJdbcType(), null, null, null, null, ep.getSpecifiedTypeHandler(), p.isIdProperty() ? Collections.singletonList( ResultFlag.ID) : null)); }); return; } resultMappings.add(assistant.buildResultMapping(p.getType(), p.getName(), p.getColumnName(), p.getType(), p.getJdbcType(), null, null, null, null, p.getSpecifiedTypeHandler(), p.isIdProperty() ? Collections.singletonList(ResultFlag.ID) : null)); }); addResultMap(RESULT_MAP, entity.getType(), resultMappings); }
Example #24
Source File: XMLMapperBuilder.java From Shop-for-JavaWeb with MIT License | 5 votes |
private ResultMapping buildResultMappingFromContext(XNode context, Class<?> resultType, ArrayList<ResultFlag> flags) throws Exception { String property = context.getStringAttribute("property"); String column = context.getStringAttribute("column"); String javaType = context.getStringAttribute("javaType"); String jdbcType = context.getStringAttribute("jdbcType"); String nestedSelect = context.getStringAttribute("select"); String nestedResultMap = context.getStringAttribute( "resultMap", processNestedResultMappings(context, Collections.<ResultMapping> emptyList())); String notNullColumn = context.getStringAttribute("notNullColumn"); String columnPrefix = context.getStringAttribute("columnPrefix"); String typeHandler = context.getStringAttribute("typeHandler"); String resulSet = context.getStringAttribute("resultSet"); String foreignColumn = context.getStringAttribute("foreignColumn"); boolean lazy = "lazy".equals(context.getStringAttribute("fetchType", configuration.isLazyLoadingEnabled() ? "lazy" : "eager")); Class<?> javaTypeClass = resolveClass(javaType); @SuppressWarnings("unchecked") Class<? extends TypeHandler<?>> typeHandlerClass = (Class<? extends TypeHandler<?>>) resolveClass(typeHandler); JdbcType jdbcTypeEnum = resolveJdbcType(jdbcType); return builderAssistant.buildResultMapping(resultType, property, column, javaTypeClass, jdbcTypeEnum, nestedSelect, nestedResultMap, notNullColumn, columnPrefix, typeHandlerClass, flags, resulSet, foreignColumn, lazy); }
Example #25
Source File: XMLMapperBuilder.java From Shop-for-JavaWeb with MIT License | 5 votes |
private void processConstructorElement(XNode resultChild, Class<?> resultType, List<ResultMapping> resultMappings) throws Exception { List<XNode> argChildren = resultChild.getChildren(); for (XNode argChild : argChildren) { ArrayList<ResultFlag> flags = new ArrayList<ResultFlag>(); flags.add(ResultFlag.CONSTRUCTOR); if ("idArg".equals(argChild.getName())) { flags.add(ResultFlag.ID); } resultMappings.add(buildResultMappingFromContext(argChild, resultType, flags)); } }
Example #26
Source File: ExecutorTestHelper.java From mybatis with Apache License 2.0 | 4 votes |
public static MappedStatement prepareSelectPostsForBlogMappedStatement(final Configuration config) { final TypeHandlerRegistry registry = config.getTypeHandlerRegistry(); final SqlSource sqlSource = new StaticSqlSource(config,"SELECT p.id, p.created_on, p.blog_id, p.section, p.subject, p.body, pt.tag_id," + " t.name as tag_name, c.id as comment_id, c.name as comment_name, c.comment" + " FROM post p" + " INNER JOIN post_tag pt ON pt.post_id = p.id" + " INNER JOIN tag t ON pt.tag_id = t.id" + " LEFT OUTER JOIN comment c ON c.post_id = p.id" + " WHERE p.blog_id = ?"); final ParameterMap parameterMap = new ParameterMap.Builder(config, "defaultParameterMap", Author.class, new ArrayList<ParameterMapping>() { { add(new ParameterMapping.Builder(config, "id", registry.getTypeHandler(int.class)).build()); } }).build(); final ResultMap tagResultMap = new ResultMap.Builder(config, "tagResultMap", Tag.class, new ArrayList<ResultMapping>() { { add(new ResultMapping.Builder(config, "id", "tag_id", registry.getTypeHandler(int.class)) .flags(new ArrayList<ResultFlag>() { { add(ResultFlag.ID); } }).build()); add(new ResultMapping.Builder(config, "name", "tag_name", registry.getTypeHandler(String.class)).build()); } }).build(); final ResultMap commentResultMap = new ResultMap.Builder(config, "commentResultMap", Comment.class, new ArrayList<ResultMapping>() { { add(new ResultMapping.Builder(config, "id", "comment_id", registry.getTypeHandler(int.class)) .flags(new ArrayList<ResultFlag>() { { add(ResultFlag.ID); } }).build()); add(new ResultMapping.Builder(config, "name", "comment_name", registry.getTypeHandler(String.class)).build()); add(new ResultMapping.Builder(config, "comment", "comment", registry.getTypeHandler(String.class)).build()); } }).build(); config.addResultMap(tagResultMap); config.addResultMap(commentResultMap); final ResultMap postResultMap = new ResultMap.Builder(config, "defaultResultMap", Post.class, new ArrayList<ResultMapping>() { { add(new ResultMapping.Builder(config, "id", "id", registry.getTypeHandler(int.class)) .flags(new ArrayList<ResultFlag>() { { add(ResultFlag.ID); } }).build()); add(new ResultMapping.Builder(config, "blog", "blog_id", registry.getTypeHandler(int.class)).javaType(Blog.class).nestedQueryId("selectBlogById").build()); add(new ResultMapping.Builder(config, "createdOn", "created_on", registry.getTypeHandler(Date.class)).build()); add(new ResultMapping.Builder(config, "section", "section", registry.getTypeHandler(Section.class)).build()); add(new ResultMapping.Builder(config, "subject", "subject", registry.getTypeHandler(String.class)).build()); add(new ResultMapping.Builder(config, "body", "body", registry.getTypeHandler(String.class)).build()); add(new ResultMapping.Builder(config, "tags").nestedResultMapId(tagResultMap.getId()).build()); add(new ResultMapping.Builder(config, "comments").nestedResultMapId(commentResultMap.getId()).build()); } }).build(); return new MappedStatement.Builder(config, "selectPostsForBlog", sqlSource, SqlCommandType.SELECT) .parameterMap(parameterMap) .resultMaps(new ArrayList<ResultMap>() { { add(postResultMap); } }).build(); }
Example #27
Source File: ExecutorTestHelper.java From mybaties with Apache License 2.0 | 4 votes |
public static MappedStatement prepareSelectPostWithBlogByAuthorMappedStatement(final Configuration config) { final TypeHandlerRegistry registry = config.getTypeHandlerRegistry(); final SqlSource sqlSource = new StaticSqlSource(config,"SELECT p.id, p.created_on, p.blog_id, p.author_id, p.section, p.subject, p.body, pt.tag_id," + " t.name as tag_name, c.id as comment_id, c.name as comment_name, c.comment" + " FROM post p" + " LEFT OUTER JOIN post_tag pt ON pt.post_id = p.id" + " LEFT OUTER JOIN tag t ON pt.tag_id = t.id" + " LEFT OUTER JOIN comment c ON c.post_id = p.id" + " WHERE p.id = ?"); final ParameterMap parameterMap = new ParameterMap.Builder(config, "defaultParameterMap", Author.class, new ArrayList<ParameterMapping>() { { add(new ParameterMapping.Builder(config, "id", registry.getTypeHandler(int.class)).build()); } }).build(); final ResultMap tagResultMap = new ResultMap.Builder(config, "tagResultMap", Tag.class, new ArrayList<ResultMapping>() { { add(new ResultMapping.Builder(config, "id", "tag_id", registry.getTypeHandler(int.class)) .flags(new ArrayList<ResultFlag>() { { add(ResultFlag.ID); } }).build()); add(new ResultMapping.Builder(config, "name", "tag_name", registry.getTypeHandler(String.class)).build()); } }).build(); final ResultMap commentResultMap = new ResultMap.Builder(config, "commentResultMap", Comment.class, new ArrayList<ResultMapping>() { { add(new ResultMapping.Builder(config, "id", "comment_id", registry.getTypeHandler(int.class)) .flags(new ArrayList<ResultFlag>() { { add(ResultFlag.ID); } }).build()); add(new ResultMapping.Builder(config, "name", "comment_name", registry.getTypeHandler(String.class)).build()); add(new ResultMapping.Builder(config, "comment", "comment", registry.getTypeHandler(String.class)).build()); } }).build(); config.addResultMap(tagResultMap); config.addResultMap(commentResultMap); final ResultMap postResultMap = new ResultMap.Builder(config, "postResultMap", Post.class, new ArrayList<ResultMapping>() { { add(new ResultMapping.Builder(config, "id", "id", registry.getTypeHandler(int.class)) .flags(new ArrayList<ResultFlag>() { { add(ResultFlag.ID); } }).build()); add(new ResultMapping.Builder(config, "blog").nestedQueryId("selectBlogByIdAndAuthor").composites(new ArrayList<ResultMapping>() { { add(new ResultMapping.Builder(config, "authorId", "author_id", registry.getTypeHandler(int.class)).build()); add(new ResultMapping.Builder(config, "blogId", "blog_id", registry.getTypeHandler(int.class)).build()); } }).build()); add(new ResultMapping.Builder(config, "createdOn", "created_on", registry.getTypeHandler(Date.class)).build()); add(new ResultMapping.Builder(config, "section", "section", registry.getTypeHandler(Section.class)).build()); add(new ResultMapping.Builder(config, "subject", "subject", registry.getTypeHandler(String.class)).build()); add(new ResultMapping.Builder(config, "body", "body", registry.getTypeHandler(String.class)).build()); add(new ResultMapping.Builder(config, "tags").nestedResultMapId(tagResultMap.getId()).build()); add(new ResultMapping.Builder(config, "comments").nestedResultMapId(commentResultMap.getId()).build()); } }).build(); return new MappedStatement.Builder(config, "selectPostsForBlog", sqlSource, SqlCommandType.SELECT) .parameterMap(parameterMap) .resultMaps(new ArrayList<ResultMap>() { { add(postResultMap); } }).build(); }
Example #28
Source File: ExecutorTestHelper.java From mybatis with Apache License 2.0 | 4 votes |
public static MappedStatement prepareSelectPostMappedStatement(final Configuration config) { final TypeHandlerRegistry registry = config.getTypeHandlerRegistry(); final SqlSource sqlSource = new StaticSqlSource(config,"SELECT p.id, p.created_on, p.blog_id, p.section, p.subject, p.body, pt.tag_id," + " t.name as tag_name, c.id as comment_id, c.name as comment_name, c.comment" + " FROM post p" + " LEFT OUTER JOIN post_tag pt ON pt.post_id = p.id" + " LEFT OUTER JOIN tag t ON pt.tag_id = t.id" + " LEFT OUTER JOIN comment c ON c.post_id = p.id" + " WHERE p.id = ?"); final ParameterMap parameterMap = new ParameterMap.Builder(config, "defaultParameterMap", Author.class, new ArrayList<ParameterMapping>() { { add(new ParameterMapping.Builder(config, "id", registry.getTypeHandler(int.class)).build()); } }).build(); final ResultMap tagResultMap = new ResultMap.Builder(config, "tagResultMap", Tag.class, new ArrayList<ResultMapping>() { { add(new ResultMapping.Builder(config, "id", "tag_id", registry.getTypeHandler(int.class)) .flags(new ArrayList<ResultFlag>() { { add(ResultFlag.ID); } }).build()); add(new ResultMapping.Builder(config, "name", "tag_name", registry.getTypeHandler(String.class)).build()); } }).build(); final ResultMap commentResultMap = new ResultMap.Builder(config, "commentResultMap", Comment.class, new ArrayList<ResultMapping>() { { add(new ResultMapping.Builder(config, "id", "comment_id", registry.getTypeHandler(int.class)) .flags(new ArrayList<ResultFlag>() { { add(ResultFlag.ID); } }).build()); add(new ResultMapping.Builder(config, "name", "comment_name", registry.getTypeHandler(String.class)).build()); add(new ResultMapping.Builder(config, "comment", "comment", registry.getTypeHandler(String.class)).build()); } }).build(); config.addResultMap(tagResultMap); config.addResultMap(commentResultMap); final ResultMap postResultMap = new ResultMap.Builder(config, "", Post.class, new ArrayList<ResultMapping>() { { add(new ResultMapping.Builder(config, "id", "id", registry.getTypeHandler(int.class)) .flags(new ArrayList<ResultFlag>() { { add(ResultFlag.ID); } }).build()); add(new ResultMapping.Builder(config, "blog", "blog_id", registry.getTypeHandler(int.class)).javaType(Blog.class).nestedQueryId("selectBlogById").build()); add(new ResultMapping.Builder(config, "createdOn", "created_on", registry.getTypeHandler(Date.class)).build()); add(new ResultMapping.Builder(config, "section", "section", registry.getTypeHandler(Section.class)).build()); add(new ResultMapping.Builder(config, "subject", "subject", registry.getTypeHandler(String.class)).build()); add(new ResultMapping.Builder(config, "body", "body", registry.getTypeHandler(String.class)).build()); add(new ResultMapping.Builder(config, "tags").nestedResultMapId(tagResultMap.getId()).build()); add(new ResultMapping.Builder(config, "comments").nestedResultMapId(commentResultMap.getId()).build()); } }).build(); return new MappedStatement.Builder(config, "selectPostsForBlog", sqlSource, SqlCommandType.SELECT) .parameterMap(parameterMap) .resultMaps(new ArrayList<ResultMap>() { { add(postResultMap); } }).build(); }
Example #29
Source File: ExecutorTestHelper.java From mybatis with Apache License 2.0 | 4 votes |
public static MappedStatement prepareSelectPostWithBlogByAuthorMappedStatement(final Configuration config) { final TypeHandlerRegistry registry = config.getTypeHandlerRegistry(); final SqlSource sqlSource = new StaticSqlSource(config,"SELECT p.id, p.created_on, p.blog_id, p.author_id, p.section, p.subject, p.body, pt.tag_id," + " t.name as tag_name, c.id as comment_id, c.name as comment_name, c.comment" + " FROM post p" + " LEFT OUTER JOIN post_tag pt ON pt.post_id = p.id" + " LEFT OUTER JOIN tag t ON pt.tag_id = t.id" + " LEFT OUTER JOIN comment c ON c.post_id = p.id" + " WHERE p.id = ?"); final ParameterMap parameterMap = new ParameterMap.Builder(config, "defaultParameterMap", Author.class, new ArrayList<ParameterMapping>() { { add(new ParameterMapping.Builder(config, "id", registry.getTypeHandler(int.class)).build()); } }).build(); final ResultMap tagResultMap = new ResultMap.Builder(config, "tagResultMap", Tag.class, new ArrayList<ResultMapping>() { { add(new ResultMapping.Builder(config, "id", "tag_id", registry.getTypeHandler(int.class)) .flags(new ArrayList<ResultFlag>() { { add(ResultFlag.ID); } }).build()); add(new ResultMapping.Builder(config, "name", "tag_name", registry.getTypeHandler(String.class)).build()); } }).build(); final ResultMap commentResultMap = new ResultMap.Builder(config, "commentResultMap", Comment.class, new ArrayList<ResultMapping>() { { add(new ResultMapping.Builder(config, "id", "comment_id", registry.getTypeHandler(int.class)) .flags(new ArrayList<ResultFlag>() { { add(ResultFlag.ID); } }).build()); add(new ResultMapping.Builder(config, "name", "comment_name", registry.getTypeHandler(String.class)).build()); add(new ResultMapping.Builder(config, "comment", "comment", registry.getTypeHandler(String.class)).build()); } }).build(); config.addResultMap(tagResultMap); config.addResultMap(commentResultMap); final ResultMap postResultMap = new ResultMap.Builder(config, "postResultMap", Post.class, new ArrayList<ResultMapping>() { { add(new ResultMapping.Builder(config, "id", "id", registry.getTypeHandler(int.class)) .flags(new ArrayList<ResultFlag>() { { add(ResultFlag.ID); } }).build()); add(new ResultMapping.Builder(config, "blog").nestedQueryId("selectBlogByIdAndAuthor").composites(new ArrayList<ResultMapping>() { { add(new ResultMapping.Builder(config, "authorId", "author_id", registry.getTypeHandler(int.class)).build()); add(new ResultMapping.Builder(config, "blogId", "blog_id", registry.getTypeHandler(int.class)).build()); } }).build()); add(new ResultMapping.Builder(config, "createdOn", "created_on", registry.getTypeHandler(Date.class)).build()); add(new ResultMapping.Builder(config, "section", "section", registry.getTypeHandler(Section.class)).build()); add(new ResultMapping.Builder(config, "subject", "subject", registry.getTypeHandler(String.class)).build()); add(new ResultMapping.Builder(config, "body", "body", registry.getTypeHandler(String.class)).build()); add(new ResultMapping.Builder(config, "tags").nestedResultMapId(tagResultMap.getId()).build()); add(new ResultMapping.Builder(config, "comments").nestedResultMapId(commentResultMap.getId()).build()); } }).build(); return new MappedStatement.Builder(config, "selectPostsForBlog", sqlSource, SqlCommandType.SELECT) .parameterMap(parameterMap) .resultMaps(new ArrayList<ResultMap>() { { add(postResultMap); } }).build(); }
Example #30
Source File: XMLMapperBuilder.java From mybatis with Apache License 2.0 | 4 votes |
private ResultMap resultMapElement(XNode resultMapNode, List<ResultMapping> additionalResultMappings) throws Exception { //错误上下文 //取得标示符 ("resultMap[userResultMap]") // <resultMap id="userResultMap" type="User"> // <id property="id" column="user_id" /> // <result property="username" column="username"/> // <result property="password" column="password"/> // </resultMap> ErrorContext.instance().activity("processing " + resultMapNode.getValueBasedIdentifier()); String id = resultMapNode.getStringAttribute("id", resultMapNode.getValueBasedIdentifier()); //一般拿type就可以了,后面3个难道是兼容老的代码? String type = resultMapNode.getStringAttribute("type", resultMapNode.getStringAttribute("ofType", resultMapNode.getStringAttribute("resultType", resultMapNode.getStringAttribute("javaType")))); //高级功能,还支持继承? // <resultMap id="carResult" type="Car" extends="vehicleResult"> // <result property="doorCount" column="door_count" /> // </resultMap> String extend = resultMapNode.getStringAttribute("extends"); //autoMapping Boolean autoMapping = resultMapNode.getBooleanAttribute("autoMapping"); Class<?> typeClass = resolveClass(type); Discriminator discriminator = null; List<ResultMapping> resultMappings = new ArrayList<ResultMapping>(); resultMappings.addAll(additionalResultMappings); List<XNode> resultChildren = resultMapNode.getChildren(); for (XNode resultChild : resultChildren) { if ("constructor".equals(resultChild.getName())) { //解析result map的constructor processConstructorElement(resultChild, typeClass, resultMappings); } else if ("discriminator".equals(resultChild.getName())) { //解析result map的discriminator discriminator = processDiscriminatorElement(resultChild, typeClass, resultMappings); } else { List<ResultFlag> flags = new ArrayList<ResultFlag>(); if ("id".equals(resultChild.getName())) { flags.add(ResultFlag.ID); } //调5.1.1 buildResultMappingFromContext,得到ResultMapping resultMappings.add(buildResultMappingFromContext(resultChild, typeClass, flags)); } } //最后再调ResultMapResolver得到ResultMap ResultMapResolver resultMapResolver = new ResultMapResolver(builderAssistant, id, typeClass, extend, discriminator, resultMappings, autoMapping); try { return resultMapResolver.resolve(); } catch (IncompleteElementException e) { configuration.addIncompleteResultMap(resultMapResolver); throw e; } }