Maybe 发表于 2024-6-20 11:55:04

JAVA面试框架部分<二>之Mybatis,Spring

3.3 Mybatis
1、什么是Mybatis?
答:(1)Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。程序员直接编写原生态sql,可以严格控制sql执行性能,灵活度高。
(2)MyBatis 可以使用 XML 或注解来配置和映射原生信息,将 POJO映射成数据库中的记录,避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。
(3)通过xml 文件或注解的方式将要执行的各种 statement 配置起来,并通过java对象和 statement中sql的动态参数进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射为java对象并返回。(从执行sql到返回result的过程)。
2、Mybaits有什么优点:
答:(1)基于SQL语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响,SQL写在XML里,解除sql与程序代码的耦合,便于统一管理;提供XML标签,支持编写动态SQL语句,并可重用。
(2)与JDBC相比,减少了50%以上的代码量,消除了JDBC大量冗余的代码,不需要手动开关连接;
(3)很好的与各种数据库兼容(因为MyBatis使用JDBC来连接数据库,所以只要JDBC支持的数据库MyBatis都支持)。
(4)能够与Spring很好的集成;
(5)提供映射标签,支持对象与数据库的ORM字段关系映射;提供对象关系映射标签,支持对象关系组件维护。
3、MyBatis框架的缺点:
答:(1)SQL语句的编写工作量较大,尤其当字段多、关联表多时,对开发人员编写SQL语句的功底有一定要求。
(2)SQL语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。
4、MyBatis框架适用场合:
答:①MyBatis专注于SQL本身,是一个足够灵活的DAO层解决方案。
②对性能的要求很高,或者需求变化较多的项目,如互联网项目,MyBatis将是不错的选择。
5、MyBatis与Hibernate有哪些不同?
答:(1)Mybatis和hibernate不同,它不完全是一个ORM框架,因为MyBatis需要程序员自己编写Sql语句。
(2)Mybatis直接编写原生态sql,可以严格控制sql执行性能,灵活度高,非常适合对关系数据模型要求不高的软件开发,因为这类软件需求变化频繁,一但需求变化要求迅速输出成果。但是灵活的前提是mybatis无法做到数据库无关性,如果需要实现支持多种数据库的软件,则需要自定义多套sql映射文件,工作量大。
(3)Hibernate对象/关系映射能力强,数据库无关性好,对于关系模型要求高的软件,如果用hibernate开发可以节省很多代码,提高效率。
6、#{}和${}的区别是什么?
答:#{}是预编译处理,${}是字符串替换。
Mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值;
Mybatis在处理${}时,就是把${}替换成变量的值。使用#{}可以有效的防止SQL注入,提高系统安全性。
7、当实体类中的属性名和表中的字段名不一样 ,怎么办 ?
答:第1种: 通过在查询的sql语句中定义字段名的别名,让字段名的别名和实体类的属性名一致。第2种: 通过<resultMap>来映射字段名和实体类属性名的一一对应的关系。
8.请你描述一下 myBatis 的缓存
答:MyBatis 的缓存分为一级缓存和二级缓存, 一级缓存放在 session 里面,默认就有,二级缓存放在它的命名空间里,默认是打开的,二级缓存属性类需要实现 Serializable 序列化接口(可用来保存对象的状态),可在它的映射文 件中配置Mybatis中有一级缓存和二级缓存,默认情况下一级缓存是开启的,而且是不能关闭的。
一级缓存是指SqlSession级别的缓存,当在同一个SqlSession中进行相同的SQL语句查询时,第二次以后的查询不会从数据库查询,而是直接从缓存中获取,一级缓存最多缓存1024条SQL。二级缓存是指可以跨SqlSession的缓存。Mybatis中进行SQL查询是通过org.apache.ibatis.executor.Executor接口进行的,总体来讲,它一共有两类实现,一类是BaseExecutor,一类是CachingExecutor。前者是非启用二级缓存时使用的,而后者是采用的装饰器模式,在启用了二级缓存时使用,当二级缓存没有命中时,底层还是通过BaseExecutor来实现的。
一级缓存
一级缓存是默认启用的,在BaseExecutor的query()方法中实现,底层默认使用的是PerpetualCache实现,PerpetualCache采用HashMap存储数据。一级缓存会在进行增、删、改操作时进行清除。
二级缓存
二级缓存是默认启用的,如想取消,则可以通过Mybatis配置文件中的元素下的子元素来指定cacheEnabled为false。我们要想使用二级缓存,是需要在对应的Mapper.xml文件中定义其中的查询语句需要使用哪个cache来缓存数据的。这有两种方式可以定义,一种是通过cache元素定义,一种是通过cache-ref元素来定义。但是需要注意的是对于同一个Mapper来讲,它只能使用一个Cache,当同时使用了和时使用定义的优先级更高。Mapper使用的Cache是与我们的Mapper对应的namespace绑定的,一个namespace最多只会有一个Cache与其绑定
9.myBatis 实现一对一和一对多分别有几种方式,又都是怎么操作的呢
答:(1)一对一有联合查询和嵌套查询 联合查询是几个表联合查询,只查询一次,通过在resultMap里面配置collection节点配置一对 多的类就可以完成;嵌套查询是先查一个表,根据这个表里面的结果的外键id,去再另外一个表里面查询数据,也是 通过配置collection,但另外一个表的查询通过 select 节点配置
(2)一对多有联合查询和嵌套查询 联合查询是几个表联合查询,只查询一次,通过在resultMap里面配置collection节点配置一对 多的类就可以完成;嵌套查询是先查一个表,根据这个表里面的结果的外键id,去再另外一个表里面查询数据,也是 通过配置collection,但另外一个表的查询通过 select 节点配置;
10.myBatis 里面的动态 Sql 是怎么设定的?用什么语法?
答:MyBatis 里面的动态 Sql 一般是通过 if 节点来实现,通过 OGNL 语法来实现,但是如果要写的 完整,必须配合where,trim 节点,where 节点是判断包含节点有内容就插入 where,
否则不插 入,trim 节点是用来判断如果动态语句是以 and 或 or 开始,那么会自动把这个 and 或者 or 取 掉;
11.myBatis(IBatis)的好处是什么
答:ibatis 把 sql 语句从 Java 源程序中独立出来,放在单独的 XML 文件中编写,给程序的维护带 来了很大便利。ibatis 封装了底层 JDBC API 的调用细节,并能自动将结果集转换成 Java Bean 对象,大大简 化了 Java 数据库编程的重复工作。因为 Ibatis 需要程序员自己去编写 sql 语句,程序员可以结合数据库自身的特点灵活控制 sql 语句,因此能够实现比 hibernate 等全自动 orm 框架更高的查询效率,能够完成复杂查询
12.接口绑定有几种实现方式,分别是怎么实现的?
答:a.一种是通过注解绑定,就是在接口的方法上面加上@Select@Update 等注解里面包含 Sql 语句来绑定,b,另外一种就是通过 xml 里面写 SQL 来绑定,在这种情况下,要指定 xml 映射文件里面的 namespace 必须为接口的全路径名;
13.什么情况下用注解绑定,什么情况下用 xml 绑定
答:当 Sql 语句比较简单时候,用注解绑定, 当 SQL 语句比较复杂时候,用 xml 绑定,一般用 xml 绑定的比较多;
14.Mapper动态代理开发
答:只写接口,实现类由mybatis生成
四个原则:Mapper接口开发需要遵循以下规范
①Mapper.xml文件中的namespace与mapper接口的类路径相同。
②Mapper接口方法名和Mapper.xml中定义的每个statement的id相同
③Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql 的parameterType的类型相
④Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultTpe的类型相同
15.有关mybatis接口方法中传入参数问题
答:mybatis参数传递主要分为以下的五种情况
1)单个参数
可以接受基本类型,对象类型,集合类型的值。这种情况MyBatis可直接使用这个参数,不需要经过任何处理。
2)多个参数
任意多个参数,都会被MyBatis重新包装成一个Map传入。Map的key是param1,param2,0,1…,值就是参数的值。
3)命名参数(推荐使用)
为参数使用@Param起一个名字,MyBatis就会将这些参数封装进map中,key就是我们自己指定的名字
4)POJO
当这些参数属于我们业务POJO时,我们直接传递POJO
5)Map
我们也可以封装多个参数为map,直接传递
总结:
(1)当参数小于5时候通常使用@Param形式
(2)参数大于5时候使用JavaBean形式
16.Mybatis是如何将sql执行结果封装为目标对象并返回的?都有哪些映射形式?
答:第一种是使用<resultMap>标签,逐一定义数据库列名和对象属性名之间的映射关系。第二种是使用sql列的别名功能,将列的别名书写为对象属性名。有了列名与属性名的映射关系后,Mybatis通过反射创建对象,同时使用反射给对象的属性逐一赋值并返回,那些找不到映射关系的属性,是无法完成赋值的。
17.如何获取自动生成的(主)键值?
答:insert 方法总是返回一个int值 ,这个值代表的是插入的行数。如果采用自增长策略,自动生成的键值在 insert 方法执行完后可以被设置到传入的参数对象中。
18.Mybatis动态sql有什么用?执行原理?有哪些动态sql?
答:Mybatis动态sql可以在Xml映射文件内,以标签的形式编写动态sql,执行原理是根据表达式的值 完成逻辑判断并动态拼接sql的功能。
Mybatis提供了9种动态sql标签:trim | where | set | foreach | if | choose | when | otherwise | bind。
19.Mbatis中使用到的设计模式
答:Mybatis至少使用到了以下的设计模式:
1).Builder模式,例如SqlSessionFactoryBuilder、XMLConfigBuilder、XMLMapperBuilder、
XMLStatementBuilder、CacheBuilder;
2).工厂模式,例如SqlSessionFactory、ObjectFactory、MapperProxyFactory;
3).单例模式,例如ErrorContext和LogFactory;
4).代理模式,Mybatis实现的核心,比如MapperProxy、ConnectionLogger,用的jdk的动态代理;还有executor.loader包使用了cglib或者javassist达到延迟加载的效果;
5).组合模式,例如SqlNode和各个子类ChooseSqlNode等;
6).模板方法模式,例如BaseExecutor和SimpleExecutor,还有BaseTypeHandler和所有的子类例如IntegerTypeHandler;
7).适配器模式,例如Log的Mybatis接口和它对jdbc、log4j等各种日志框架的适配实现;
8).装饰者模式,例如Cache包中的cache.decorators子包中等各个装饰者的实现;
9).迭代器模式,例如迭代器模式PropertyTokenizer;
20.JDBC编程有哪些不足之处,MBatis是如何解决这些问题的?
答:(1)数据库链接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库链接池可解决此问题。解决:在SqlMapConfig.xml中配置数据链接池,使用连接池管理数据库链接。
(2)Sql语句写在代码中造成代码不易维护,实际应用sql变化的可能较大,sql变动需要改变java代码。
解决:将Sql语句配置在XXXXmapper.xml文件中与java代码分离。
(3)向sql语句传参数麻烦,因为sql语句的where条件不一定,可能多也可能少,占位符需要和参数一一对应。
解决: Mybatis自动将java对象映射至sql语句。
(4)对结果集解析麻烦,sql变化导致解析代码变化,且解析前需要遍历,如果能将数据库记录封装成pojo对象解析比较方便。
解决:Mybatis自动将sql执行结果映射至java对象
21.为什么说Mybatis是半自动ORM映射工具?它与全自动的区别在哪里?
答:Hibernate属于全自动ORM映射工具,使用Hibernate查询关联对象或者关联集合对象时,可以根据对象关系模型直接获取,所以它是全自动的。而Mybatis在查询关联对象或关联集合对象时,需要手动编写sql来完成,所以,称之为半自动ORM映射工具。
22、Mybatis是否支持延迟加载?如果支持,它的实现原理是什么?
答:①Mybatis仅支持association关联对象和collection关联集合对象的延迟加载,association指的就是一对一,collection指的就是一对多查询。在Mybatis配置文件中,可以配置是否启用延迟加载lazyLoadingEnabled=true|false。
②它的原理是,使用CGLIB创建目标对象的代理对象,当调用目标方法时,进入拦截器方法,比如调用a.getB().getName(),拦截器invoke()方法发现a.getB()是null值,那么就会单独发送事先保存好的查询关联B对象的sql,把B查询上来,然后调用a.setB(b),于是a的对象b属性就有值了,接着完成a.getB().getName()方法的调用。这就是延迟加载的基本原理。当然了,不光是Mybatis,几乎所有的包括Hibernate,支持延迟加载的原理都是一样的。
22.使用MyBatis的mapper接口调用时有哪些要求?
答:①Mapper接口方法名和mapper.xml中定义的每个sql的id相同;
②Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql 的parameterType的类型相同;
③Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同;
④Mapper.xml文件中的namespace即是mapper接口的类路径。
23.简述Mybatis的插件运行原理,以及如何编写一个插件。
答:①Mybatis仅可以编写针对ParameterHandler、ResultSetHandler、StatementHandler、Executor这4种接口的插件,Mybatis使用JDK的动态代理,为需要拦截的接口生成代理对象以实现接口方法拦截功能,每当执行这4种接口对象的方法时,就会进入拦截方法,具体就是InvocationHandler的invoke()方法,当然,只会拦截那些你指定需要拦截的方法。
②编写插件:实现Mybatis的Interceptor接口并复写intercept()方法,然后在给插件编写注解,指定要拦截哪一个接口的哪些方法即可,记住,别忘了在配置文件中配置你编写的插件。

3.4 Spring
1. 什么是spring?
答:Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。
2. 使用Spring框架的好处是什么?
答:①轻量:Spring 是轻量的,基本的版本大约2MB。
②控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。
③面向切面的编程(AOP):Spring支持面向切面的编程,并且把应用业务逻辑和系统服务分开。
④容器:Spring 包含并管理应用中对象的生命周期和配置。
⑤MVC框架:Spring的WEB框架是个精心设计的框架,是Web框架的一个很好的替代品。
⑥事务管理:Spring 提供一个持续的事务管理接口,可以扩展到上至本地事务下至全局事务(JTA)。
⑦异常处理:Spring 提供方便的API把具体技术相关的异常(比如由JDBC,Hibernate or JDO抛出的)转化为一致的unchecked 异常。
3.解释AOP模块
答:AOP模块用于发给我们的Spring应用做面向切面的开发, 很多支持由AOP联盟提供,这样就确保了Spring和其他AOP框架的共通性。这个模块将元数据编程引入Spring。
4.在Spring AOP 中,关注点和横切关注的区别是什么?
答:①关注点是应用中一个模块的行为,一个关注点可能会被定义成一个我们想实现的一个功能。
    ②横切关注点是一个关注点,此关注点是整个应用都会使用的功能,并影响整个应用,比如日志,安全和数据传输,几乎应用的每个模块都需要的功能。因此这些都属于横切关注点。
5.什么是代理?
答:代理是通知目标对象后创建的对象。从客户端的角度看,代理对象和目标对象是一样的。
6.谈谈你对spring IOC和DI的理解
答:IoC Inverse of Control 反转控制的概念,就是将原本在程序中手动创建UserService对象的控制权,交由Spring框架管理,简单说,就是创建UserService对象控制权被反转到了Spring框架
DI:Dependency Injection 依赖注入,在Spring框架负责创建Bean对象时,动态的将依赖对象注入到Bean组件
7.BeanFactory 接口和 ApplicationContext 接口有什区别 ?
答:①ApplicationContext 接口继承BeanFactory接口,Spring核心工厂是BeanFactory ,BeanFactory采取延迟加载,第一次getBean时才会初始化Bean, ApplicationContext是会在加载配置文件时初始化Bean。
②ApplicationContext是对BeanFactory扩展,它可以进行国际化处理、事件传递和bean自动装配以及各种不同应用层的Context实现 开发中基本都在使用ApplicationContext, web项目使用WebApplicationContext ,很少用到BeanFactory
BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("applicationContext.xml"));
IHelloService helloService = (IHelloService) beanFactory.getBean("helloService");
helloService.sayHello();
8.Bean注入属性有哪几种方式?
答:①spring支持构造器注入和setter方法注入
    ②构造器注入,通过 <constructor-arg> 元素完成注入
    ③setter方法注入, 通过<property> 元素完成注入【开发中常用方式】
9.什么是AOP,AOP的作用是什么?
答:面向切面编程(AOP)提供另外一种角度来思考程序结构,通过这种方式弥补了面向对象编程(OOP)的不足,除了类(classes)以外,AOP提供了切面。切面对关注点进行模块化,例如横切多个类型和对象的事务管理
Spring的一个关键的组件就是AOP框架,可以自由选择是否使用AOP 提供声明式企业服务,特别是为了替代EJB声明式服务。最重要的服务是声明性事务管理,这个服务建立在Spring的抽象事物管理之上。允许用户实现自定义切面,用AOP来完善OOP的使用,可以把Spring AOP看作是对Spring的一种增强
10.Spring的核心类有哪些,各有什么作用
答:①BeanFactory:产生一个新的实例,可以实现单例模式
②BeanWrapper:提供统一的get及set方法
③ApplicationContext:提供框架的实现,包括BeanFactory的所有功能
11.介绍一个spring的事物管理
答: 事务就是对一系列的数据库操作(比如插入多条数据)进行统一的提交或回滚操作,如果插入成功,那么一起成功,如果中间有一条出现异常,那么回滚之前的所有操作。这样可以防止出现脏数据,防止数据库数据出现问题。
开发中为了避免这种情况一般都会进行事务管理。Spring中也有自己的事务管理机制,一般是使用TransactionMananger进行管 理,可以通过Spring的注入来完成此功能。spring提供了几个关于事务处理的类:
TransactionDefinition //事务属性定义
TranscationStatus //代表了当前的事务,可以提交,回滚。
PlatformTransactionManager这个是spring提供的用于管理事务的基础接口,其下有一个实现的抽象类 AbstractPlatformTransactionManager,我们使用的事务管理类例如 DataSourceTransactionManager等都是这个类的子类。
12.怎样用注解的方式配置spring?
答:①Spring在2.5版本以后开始支持用注解的方式来配置依赖注入。可以用注解 的方式来替代XML方式的bean描述,可以将bean描述转移到组件类的内部,只需要在相关类上、方法上或者字段声明上使用注解即可。注解注入将会被容器在XML注入之前被处理,所以后者会覆盖掉前者对于同一个属性的处理结果。
②注解装配在Spring中是默认关闭的。所以需要在Spring文件中配置一下才能使用基于注解的装配模式。如果你想要在你的应用程序中使用关于注解的方法的话,请参考如下的配置。
③在 <context:annotation-config/>标签配置完成以后,就可以用注解的方式在Spring中向属性、方法和构造方法中自动装配变量。
下面是几种比较重要的注解类型:
1). @Required:该注解应用于设值方法。
2).@Autowired:该注解应用于有值设值方法、非设值方法、构造方法和变量。
3).@Qualifier:该注解和@Autowired注解搭配使用,用于消除特定bean自动装配的歧义。
4).JSR-250 Annotations:Spring支持基于JSR-250 注解的以下注解,@Resource、@PostConstruct 和 @PreDestroy。
13.简述一下spring框架的优点?
答:①方便解耦,简化开发(高内聚低耦合)
Spring就是一个大工厂(容器),可以将所有对象创建和依赖关系维护,交给Spring管理;Spring工厂是用于生成bean
②AOP编程的支持
Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能
声明式事务的支持,
③只需要通过配置就可以完成对事务的管理,而无需手动编程
方便程序的测试
④Spring对Junit4支持,可以通过注解方便的测试Spring程序
方便集成各种优秀框架
⑤Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts、Hibernate、MyBatis、Quartz等)的直接支持14.简述一下IOC容器对BEAN的生命周期?
答:①通过构造器或工厂方法创建 Bean 实例
②为Bean 的属性设置值和对其他 Bean 的引用
③将Bean 实 例 传 递 给 Bean 后 置 处 理 器 的 postProcessBeforeInitialization 方法
④调用 Bean 的初始化方法(init-method)
⑤将 Bean 实 例 传 递 给 Bean 后 置 处 理 器 的 postProcessAfterInitialization 方法
⑥Bean 可以使用了
⑦当容器关闭时, 调用 Bean 的销毁方法(destroy-method)
15.在Spring中AOP的使用场景有哪些?
答:主要的功能是:日志记录,性能统计,安全控制,事务处理,异常处理等等。
  主要的意图是:将日志记录,性能统计,安全控制,事务处理,异常处理等代码从业   务逻辑代码中划分出来,通过对这些行为的分离,我们希望可以将它们独立到非指导业务 逻辑的方法中,进而改变这些行为的时候不影响业务逻辑的代码。
16.Spring支持的事务管理类型
答:Spring支持两种类型的事务管理:
①编程式事务管理:这意味你通过编程的方式管理事务,给你带来极大的灵活性,但是难维护。
②声明式事务管理:这意味着你可以将业务代码和事务管理分离,你只需用注解和XML配置来管理事务。
17.Spring分布式事务如何处理的
答:第一种方案:可靠消息最终一致性,需要业务系统结合 MQ消息中间件实现,在实现过程中需要保证消息的成功发送及成功消费。即需要通过业务系统控制 MQ的消息状态;
第二种方案:TCC补偿性,分为三个阶段   TRYING-CONFIRMING-CANCELING。每个阶段做不同的处理。
1).TRYING阶段主要是对业务系统进行检测及资源预留
2)CONFIRMING阶段是做业务提交,通过 TRYING阶段执行成功后,再执行该阶段。默认如果   TRYING阶段执行成功,CONFIRMING就一定能成功。
3)CANCELING阶段是回对业务做回滚,在 TRYING阶段中,如果存在分支事务TRYING失败,则需要调用 CANCELING将已预留的资源进行释放

Edithpab 发表于 2024-11-3 22:14:59

online casino types f132tw


Excellent forum posts. Many thanks!
casino slot games online real money top bitcoin casino british columbia online casino
online casino 10 euro gratis crypto casinos usa online casino games new jersey
casino online en espaГ±a minnesota online casino asia online casino bonus
online casino new zealand real money real money online casino washington dc newest us online real money casinos
online casino slots nz tennis betting unique casino online

Edithpab 发表于 2024-11-4 07:00:08

online casino no deposit real money usa h94wjl


Wow a good deal of very good info.
casino online i migliori ignition casino bonus code play casino games online free for real money
100 online casinos nfl draft bets live casino online canada
online casino bonus canada wild casino review philippine casino online
free casino games online wizard of oz play keno online online live casino real money
bet mgm online casino phone number no deposit online casino mr beast's online casino

Edithpab 发表于 2024-11-4 08:46:46

online casino that accepts vanilla visa q99htw

You revealed it exceptionally well.
online sweepstakes casino real money usa casino new zealand trucos para ganar en el casino mГЎquinas online
juwa casino 777 online platforms real money mybookie promo code no deposit seminole casino online gambling
best online casino platforms real money online poker online casinos that accept netspend
foxwoods online casino free casino new zealand auckland golden game casino online
2017 new casinos online usa nhl betting apps casino online ОµО»О»О±ОґО±

Edithpab 发表于 2024-11-4 15:39:20

10 free 10 online casino malaysia h97wic

You expressed it wonderfully.
gta online casino tricks betting on super bowl gta 5 online casino story missions
anwalt online casino erfahrungen busr racing fantasy casino online
caesars casino free online slot machine games real money blackjack best casino online in canada zodiac
online casino app in india horse betting game casinos mexico online
new casino online usa best soccer betting app casino in india online

Edithpab 发表于 2024-11-4 17:54:32

easiest online casino to cash out e54lxx


Whoa tons of excellent advice!
article related to online casino las atlantis online casinos nj
video slots casino online online casino legal in illinois australian online casino 2021
big baller club online casino online gambling apps vegas 7 online casino login
online chumba casino crypto casinos online livescorebet online casino
royal reels online casino login review of shazam casinos online nuevos 2023

Edithpab 发表于 2024-11-5 00:37:25

caesars casino - free online slots machines games z602tc

Edithpab ??? 2024-11-3 22:14
Excellent forum posts. Many thanks!
casino slot games online real money top bitcoin casino britis ...


Seriously a lot of very good info!
online casino accept paypal is ignition casino safe casino pokerstars online
australian online casino no deposit free spins 2019 omaha poker play online game best game to win at online casino
casino 1995 watch online betwhale reviews online casino poker tournaments
fair play casino online spelen maryland online casino legal risk online casino
best citadel online casino bet boxing unibet online casino nj

Edithpab 发表于 2024-11-5 01:47:32

easy casino online n45mtm


This is nicely put. !
chips online crypto casino minnesota casino online free online casino games 888
online casinos mit novoline spielen online casinos in north carolina magnum online casino
bally casino online bonous online mma betting pa casino online gambling
no deposit free chip online casino betting apps for boxing free online casino games no deposit
dealer online casino video poker online break the bank online casino

Edithpab 发表于 2024-11-5 03:27:30

welcome bonus no deposit online casino r21yva


Thank you, Excellent information.
online casino gambling websites new york casino online the grand ivy online casino
casino online opiniones pennsylvania online casinos vegas casino online no deposit 50
top casino online usa busr casino no deposit bonus best casino online in canada grand mondial
house of fun online casino busr sports banküberweisung seriöse online casinos
firekeepers online casino bonus codes 2022 bet boxing gratis spins casino online

Edithpab 发表于 2024-11-5 19:02:28

online casino with easy withdrawal t44vdi

Edithpab ??? 2024-11-4 08:46
You revealed it exceptionally well.
online sweepstakes casino real money usa casino new zealand tru ...


Superb write ups. Thanks!
mejores casino online argentina tennis betting advice start online casino free
casino slot games online 888 new jersey online casino list best pay out casino online
online casino support online betting nba basketball casinos online confiГЎveis
online casino bonus 200 live casino baccarat online casino kostenlos
no deposit bonus usa online casinos roulette casino game online casino ohne einschränkung
页: [1] 2 3
查看完整版本: JAVA面试框架部分<二>之Mybatis,Spring