-
mybatis拦截器实现分页查看全部
-
mybatis接口式编程原理查看全部
-
。。。。查看全部
-
/*动态代理,接口没有实现类.Mybatis为接口提供实现类,即用Proxy.newProxyInstance()创建代理实例,返回类型为Object,利用泛型强制转换*/ IMessage imessage = sqlSession.getMapper(IMessage.class); /*代理实例调用接口方法时,并不会执行,而是触发 MapperProxy.invoke(),其中包含sqlSession.selectList(namespace.id,parameter)*/ /*至于为什么会包含,因为接口方法与(加载Mybatis的)配置信息对应得上,即 接口名.方法=namespace.id*/ messageList = imessage.queryMessageList(message);查看全部
-
JDBC批量新增: statement.addBatch(); statement.excuteBatch();查看全部
-
mapperscannerconfigurer 另外两个属性。可以缩小 扫描的范围 annotationclass 指定一个注解标记 只扫描该注解的接口。那么如果没有该注解。就是自定义的注解喽 markerinterface 只扫描继承该接口的mapper查看全部
-
sqlsessionfactorybean。提供sqlsession对象资源 mapperfactorybean 根据指定mapper接口生成 bean实例 mapperscanconfigurer 根据指定包。批量扫描mapper接口并生成实例查看全部
-
特点。。查看全部
-
特点,,查看全部
-
interceptor拦截器查看全部
-
interceptorlanjieqi查看全部
-
interceptor 拦截器 在mybatis中也有拦截器 在spring的框架中也有拦截器查看全部
-
动态代理在mybatis是什么东西查看全部
-
mybatis的拦截器实现分页(动态代理) 拦截sql语句来实现分页 1.拦截什么样的对象(以page作为参数传入;page对象) 2.拦截对象什么行为 3.什么时候拦截 (在prepareStatement的时候拦截) (源码) 1.RoutingStatementHandler 2.通过RoutingStatementHandler对象的属性delegate找到statement实现类BaseStatementHandler 3.通过BaseStatementHandler类的反射得到对象的MappedStatement对象 4.通过MappedStatement的属性getID得到配置文件sql语句的ID 5.通过BaseStatementHandler属性的到原始sql语句 6.拼接分页sql( 1.需要查询总数的sql 2.通过拦截Connection对象得到PrepareStatement对象 3.得到对应的参数 4.把参数设到prepareStatement对象里的?(该?号在配置文件以#{}形式存在,mybatis会把它转为?号) 5.执行噶sql语句 6.得到总数 ) 7.把属性值为新的sql查看全部
-
关键代码: -->Intercepts.class @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) public @interface Intercepts { Signature[] value(); } -->Signature.class @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) public @interface Signature { Class<?> type();//拦截主文件(接口).class String method();//拦截主文件中的方法 Class<?>[] args();//拦截主文件中该方法的参数类型.class } Ps1: Java泛型中的标记符含义: E - Element (在集合中使用,因为集合中存放的是元素) T - Type(Java 类) K - Key(键) V - Value(值) N - Number(数值类型) ? - 表示不确定的java类型 S、U、V - 2nd、3rd、4th types Object跟这些标记符代表的java类型有啥区别呢? Object是所有类的根类,任何类的对象都可以设置给该Object引用变量,使用的时候可能需要类型强制转换,但是用使用了泛型T、E等这些标识符后,在实际用之前类型就已经确定了,不需要再进行类型强制转换。 Ps2:若通过执行plugin()方法,返回本身(不需要代理的对象),则不会执行intercept()方法(因为没有获取代理权);若返回代理对象,则会执行intercept()方法。 Ps3:如果不清楚导入哪个包,可以查看返回类型并点击该类型就可知道是哪个包。查看全部
举报
0/150
提交
取消