截取字符串
prefix=“” :前缀,为我们下面的sql语句整体添加一个前缀
prefixOverrides=“” :取出整体字符串前面可能多余的字符
suffix=“” :为整体添加一个后缀
suffixOverrides=“”:取出整体字符串后面可能多用的字符
下面自动帮我们添加一个where前缀,去掉整体最开始的and和最后的and
<?xml version="1.0" encoding="UTF-8" ?>SELECT l.id,l.lockName name
,l.price FROM lock
l
and id > #{id}
and lockName like #{name}
and price < #{price} and
LockDao接口类:
public interface LockDao {
public List getLockByCondition(@Param(“list”) List listId);
}
LockDao.xml:
<?xml version="1.0" encoding="UTF-8" ?>SELECT l.id,l.lockName name
,l.price FROM lock
l WHERE id IN
/对应list集合来说,key默认为list,我们也可以自己指定参数的key值/
#{id_item}
main:
public class main {
static SqlSessionFactory sqlSessionFactory;
static public void initSqlSessionFactory() throws IOException {
String resource = “MyBaits-config.xml”;
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
}
public static void main(String[] args) throws IOException
{
initSqlSessionFactory();
SqlSession sqlSession = sqlSessionFactory.openSession(true);
try{
LockDao lock = sqlSession.getMapper(LockDao.class);
List idList=new LinkedList();
idList.add(1);
idList.add(2);
idList.add(3);
idList.add(4);
idList.add(5);
List lockList = lock.getLockByCondition(idList);
for(Lock l:lockList)
{
System.out.println(1);
}
}finally
{
sqlSession.close();
}
}
}
LockDao.xml :
<?xml version="1.0" encoding="UTF-8" ?>SELECT l.id,l.lockName name
,l.price FROM lock
l
id=#{id}
id=2
LockDao接口:
public interface LockDao {
public Lock getLockByCondition(@Param(“id”) Integer id);
}
如果传入对象,那么在使用属性名的时候可以识别
传入基本数据类型时,防止如下错误发生:There is no getter for property named id in class java.lang.Integer ,给参数设置key名
字段部分更新-----》if结合set
update lock
lockName=#{name},
price=#{price},
id=#{id}
不仅可以直接调用属性,还可以调用方法
OGNL表达式里面的集合伪属性
//前提,list是集合
不仅可以判断参数,还可以判断_parameter和_databasedId
bind 元素允许你在 OGNL 表达式以外创建一个变量,并将其绑定到当前的上下文。比如:
SELECT * FROM BLOG
WHERE title LIKE #{pattern}
要在带注解的映射器接口类中使用动态 SQL,可以使用 script 元素
=================================================================
一级缓存失效情况
手动清空缓冲的函数:
sqlSession.clearCache();
二级缓存: namespace级别的缓存,隔一段时间会自动刷新缓存
只有在sqlSession关闭或提交后,才会把数据从一级缓存中,搬家来到二级缓存
第一步:配置文件中开启二级缓存
第二步:在需要使用二级缓存的映射文件中使用cache配置缓存
第三步: POJO对象需要实现序列化接口
二级缓存cache标签里面的相关属性
整合第三方缓存—这里整合ehcache—java进程内的缓存框架
1.导入依赖
net.sf.ehcache
ehcache-core
2.6.8
org.mybatis.caches
mybatis-ehcache
1.0.3
org.slf4j
slf4j-api
1.7.21
org.slf4j
slf4j-log4j12
1.7.21
test
2.ehcache要工作需要一个配置文件,文件名叫ehcache.xml,放在类路径的根目录下
<?xml version="1.0" encoding="UTF-8"?><ehcache xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
xsi:noNamespaceSchemaLocation=“http://ehcache.org/ehcache.xsd”
updateCheck=“false”>
<defaultCache maxElementsInMemory=“1000”
eternal=“false”
timeToIdleSeconds=“3600”
timeToLiveSeconds=“0”
overflowToDisk=“true”
2021年Java中高级面试必备知识点总结
在这个部分总结了2019年到目前为止Java常见面试问题,取其面试核心编写成这份文档笔记,从中分析面试官的心理,摸清面试官的“套路”,可以说搞定90%以上的Java中高级面试没一点难度。
本节总结的内容涵盖了:消息队列、Redis缓存、分库分表、读写分离、设计高并发系统、分布式系统、高可用系统、SpringCloud微服务架构等一系列互联网主流高级技术的知识点。
目录:
(上述只是一个整体目录大纲,每个点里面都有如下所示的详细内容,从面试问题——分析面试官心理——剖析面试题——完美解答的一个过程)
部分内容:
对于每一个做技术的来说,学习是不能停止的,小编把2019年到目前为止Java的核心知识提炼出来了,无论你现在是处于什么阶段,如你所见,这份文档的内容无论是对于你找面试工作还是提升技术广度深度都是完美的。
不想被后浪淘汰的话,赶紧搞起来吧,高清完整版一共是888页,需要的话可以点赞+关注
eternal=“false”
timeToIdleSeconds=“3600”
timeToLiveSeconds=“0”
overflowToDisk=“true”
2021年Java中高级面试必备知识点总结
在这个部分总结了2019年到目前为止Java常见面试问题,取其面试核心编写成这份文档笔记,从中分析面试官的心理,摸清面试官的“套路”,可以说搞定90%以上的Java中高级面试没一点难度。
本节总结的内容涵盖了:消息队列、Redis缓存、分库分表、读写分离、设计高并发系统、分布式系统、高可用系统、SpringCloud微服务架构等一系列互联网主流高级技术的知识点。
目录:
[外链图片转存中…(img-puBbe5nY-1714418455071)]
(上述只是一个整体目录大纲,每个点里面都有如下所示的详细内容,从面试问题——分析面试官心理——剖析面试题——完美解答的一个过程)
[外链图片转存中…(img-XQnxZN3D-1714418455072)]
部分内容:
[外链图片转存中…(img-7ApoyfyI-1714418455073)]
[外链图片转存中…(img-j6xId37X-1714418455073)]
[外链图片转存中…(img-cGnVNiTE-1714418455073)]
对于每一个做技术的来说,学习是不能停止的,小编把2019年到目前为止Java的核心知识提炼出来了,无论你现在是处于什么阶段,如你所见,这份文档的内容无论是对于你找面试工作还是提升技术广度深度都是完美的。
不想被后浪淘汰的话,赶紧搞起来吧,高清完整版一共是888页,需要的话可以点赞+关注