1.XML映射中,如何使用LIKE进行模糊查询
1.直接传参法 直接传参法,就是将要查询的关键字keyword,在代码中拼接好要查询的格式,如%keyword%,然后直接作为参数传入mapper.xml的映射文件中。 2.CONCAT()函数 MySQL的 CONCAT()函数用于将多个字符串连接成一个字符串,是最重要的mysql函数之一。 3.使用mybatis标签<bind value='' name=''/> 4.在mybatis中xml文件中配置 name LIKE '%${name}%' 或者是 address LIKE "%"#{address}"%"
2.XML映射中,如何批量插入传入的集合(Collection<E>)?,即如何根据集合生成如下SQL?
INSERT INTO TABLE_NAME(a,b,c) VALUES (a1,b1,c1),(a2,b2,c2)
3.XML映射中,如何在插入的同时获取MYSQL自增字段(AUTO_INCREMENT)生成的值?
使用select last_insert_id()
@Insert("insert into table(content,questionid,active,submit,createtime) values(#{content},#{questionid},1,#{submit},#{createtime})") @SelectKey(statement="select last_insert_id()",before=false,keyProperty="_id",resultType=Integer.class,keyColumn="_id") int insertQuestionItem(QuestionItemInfo questionItemInfo);
4.BlockingQueue相比普通的Queue最大的区别是什么?
阻塞队列是与普通队列的区别有两点 1.阻塞队列获取元素时,如果队列为空,则会等待队列有元素,否则就阻塞队列(普通队列返回结果,无元素) 2.阻塞队列放入元素时,如果队列满,则等待队列,直到有空位置,然后插入。(普通队列,要么直接扩容,要么直接无法插入,不阻塞) 阻塞队列的最佳场景就是生产者和消费者,使用代码时无需判断直接获取并处理(普通队列得判断有没有元素,阻塞队列不用判断,无元素自身就会阻塞,直到有东西)
5.Thread.sleep()可能抛出的InterruptedException代表什么?如何处理?
当一个方法后面声明可能会抛出InterruptedException异常时,说明该方法是可能会花一点时间,但是可以取消的方法。 抛InterruptedException的代表方法有: 1.Java.lang.Object类的wait方法 2.Java.lang.Thread类的sleep方法。 3.Java.lang.Thread类的join方法。 这里我们只看sleep方法。 interrupt方法是Thread类的实例方法,在执行的时候并不需要获取Thread实例的锁定,任何线程在任何时刻,都可以通过线程实例来调用其他线程的interrupt方法。当在sleep中的线程被调用interrupt方法时,就会放弃暂停的状态,并抛出InterruptException异常,这样一来,线程的控制权就交给了捕获这个异常的catch块了。 Interrupt方法的作用------- interrupt方法只是改变了中断状态 sleep方法内部会不断的检查中断状态的值,从而自己抛出InterruptedException. 由 Thread 提供并受 Thread.sleep() 和 Object.wait() 支持的中断机制就是一种取消机制;它允许一个线程请求另一个线程停止它正在做的事情。当一个方法抛出 InterruptedException 时,它是在告诉您,如果执行该方法的线程被中断,它将尝试停止它正在做的事情而提前返回,并通过抛出 InterruptedException 表明它提前返回。 行为良好的阻塞库方法应该能对中断作出响应并抛出 InterruptedException,以便能够用于可取消活动中,而不至于影响响应。 ———————————————— 版权声明:本文为CSDN博主「Silvia_flora」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/lilylove1994/article/details/78964330
6.如何实现一个方法,该方法执行某项任务并设定某个时间限制,如果该任务能在限制时间内完成则返回任务执行结果,否则返回null?写出核心代码
ScheduledExecuterService service = Executors.newSinglThreadSchduledExecetor(); ScheduledFuture f = service.scheduleAtFixedDelay(task, initialDelay, period, time unit); if currentDate = 00:00 f.cancel() service.shutdown()
7.
a.下述代码在多线程环境中是否存在问题?若有,如何修正?
b.下述代码中的volatile关键字是什么意思?如果删除对该段代码有何影响?
class Counter{ private volatile int count = 0; public int getNext(){ return ++count; } }
8.@Controller中,跳转("redirect:url")和转发("forward:url")有什么区别?
1.从地址栏显示来说 forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址. redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL. 2.从数据共享来说 forward:转发页面和转发到的页面可以共享request里面的数据. redirect:不能共享数据. 3.从运用地方来说 forward:一般用于用户登陆的时候,根据角色转发到相应的模块. redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等. 4.从效率来说 forward:高. redirect:低.
9.
10.使用注解(如@Component)声明Bean,如何指定Bean加载顺序?
@Primary 注解
当系统中需要配置多个具有相同类型的bean时,@Primary可以定义这些Bean的优先级。下面将给出一个实例代码来说明这一特性:
11.多个同类型的Bean,使用注解注入时如何指定?
@Qualifier 注解
当系统中存在同一类型的多个Bean时,@Autowired在进行依赖注入的时候就不知道该选择哪一个实现类进行注入。此时,我们可以使用@Qualifier注解来微调,帮助@Autowired选择正确的依赖项。下面是一个关于此注解的代码示例: