SqlSessionFactory factory=builder.build(resourceAsStream);//这里 Resources 使用的包是 ibatis 包//3. 通过会话工厂构造器对象和配置文件流构建一个会话构造工厂//4. 通过 SQL 会话工厂//true 设置 mybatis 事务自动提交sqlSession = factory.openSession(true); productCategoryMapper= sqlSession.getMapper(ProductCa...
strategyConfig(builder -> { builder.addInclude("powershop_user") // 设置需要生成的表名 .addTablePrefix("powershop"); // 设置过滤表前缀 }) .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板 .execute(); } } 执行,查看生成效果 3. 执行SQL分析打印 ...
publicclassMybatisMapperAnnotationBuilderextendsMapperAnnotationBuilder{@Overridepublicvoidparse(){//... 省略若干行for(Method method:type.getMethods()){/** for循环代码, MP判断method方法是否是@Select @Insert等mybatis注解方法**/parseStatement(method);InterceptorIgnoreHelper.initSqlParserInfoCache(cache,mappe...
在MybatisMapperAnnotationBuilder中,MP真正将框架自定义的动态SQL语句注册到Mybatis引擎中。而AbstractMethod则履行了具体方法的SQL语句构造。 具体的AbstractMethod实例类,构造具体的方法SQL语句 以SelectById 这个类为例说明下 public class SelectById extends AbstractMethod { @Override public MappedStatement injectMappedStat...
在MybatisMapperAnnotationBuilder中,MP真正将框架自定义的动态SQL语句注册到Mybatis引擎中。而AbstractMethod则履行了具体方法的SQL语句构造。 具体的AbstractMethod实例类,构造具体的方法SQL语句 以SelectById 这个类为例说明下 /** * 根据ID 查询一条数据
sql.jdbc.shadow.com.amazonaws.util.StringInputStream; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.eye.channelflow.core.vo.MsgException; import org.apache.ibatis.builder.MapperBuilderAssistant; import org.apache....
在SqlSourceBuilder.java的 ParameterMappingTokenHandler handler处下断点,可以看到原始语句首先被解析为为模板+数据,其中模板为: `INSERT INTO sys_user ( id, name, age, email ) VALUES ( #{id}, #{name}, #{age}, #{email} )` 熟悉mybatis的同学都知道,相较于${value}不参与预编译的形式,#{value}...
XMLMapperBuilder解析sql文件 org.apache.ibatis.builder.MapperBuilderAssistant.addMappedStatement 构建以 namespace+”.”+sqlId 为key、MappedStatement为value的map。存储在Configuration对象的mappedStatements中。 创建dao代理工厂 MapperRegistry.addMapper将代理工厂存入configuration.mapperRegistry.knownMappers中(以class对象...
这个方法是先从全局缓存类中获取自定义的sql注入器,如果在GlobalConfiguration中没有找到自定义sql注入器,就会设置一个mp默认的sql注入器AutoSqlInjector。 sql注入器接口: // SQL 自动注入器接口public interface ISqlInjector { // 根据mapperClass注入SQL void inject(MapperBuilderAssistant builderAssistant, Class<?