<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>一蚁</title>
  
  <subtitle>A stray ant can only move by itself</subtitle>
  <link href="/atom.xml" rel="self"/>
  
  <link href="http://zyfu0623.github.io/"/>
  <updated>2019-12-05T14:06:06.833Z</updated>
  <id>http://zyfu0623.github.io/</id>
  
  <author>
    <name>一蚁</name>
    
  </author>
  
  <generator uri="http://hexo.io/">Hexo</generator>
  
  <entry>
    <title>Java世界最常用的工具类库</title>
    <link href="http://zyfu0623.github.io/2019/12/05/Java%E4%B8%96%E7%95%8C%E6%9C%80%E5%B8%B8%E7%94%A8%E7%9A%84%E5%B7%A5%E5%85%B7%E7%B1%BB%E5%BA%93/"/>
    <id>http://zyfu0623.github.io/2019/12/05/Java世界最常用的工具类库/</id>
    <published>2019-12-05T13:38:02.000Z</published>
    <updated>2019-12-05T14:06:06.833Z</updated>
    
    <content type="html"><![CDATA[<h2 id="Java世界最常用的工具类库"><a href="#Java世界最常用的工具类库" class="headerlink" title="Java世界最常用的工具类库"></a>Java世界最常用的工具类库</h2><h3 id="Apache-Commons"><a href="#Apache-Commons" class="headerlink" title="Apache Commons"></a>Apache Commons</h3><p>Apache Commons有很多子项目，常用的项目如下<br><img src="//zyfu0623.github.io/2019/12/05/Java世界最常用的工具类库/Image.png" alt="Image"></p><h4 id="BeanUtils"><a href="#BeanUtils" class="headerlink" title="BeanUtils"></a>BeanUtils</h4><p>提供了一系列对java bean的操作，读取和设置属性值等<br><img src="//zyfu0623.github.io/2019/12/05/Java世界最常用的工具类库/Image1.png" alt="Image1"><br>map和bean的互相转换<br><img src="//zyfu0623.github.io/2019/12/05/Java世界最常用的工具类库/Image2.png" alt="Image2"><br>这种场景下map和bean的互相转换的工具类就特别有用</p><h4 id="Codec"><a href="#Codec" class="headerlink" title="Codec"></a>Codec</h4><p>常见的编码，解码方法封装<br><img src="//zyfu0623.github.io/2019/12/05/Java世界最常用的工具类库/Image3.png" alt="Image3"></p><h4 id="Collections"><a href="#Collections" class="headerlink" title="Collections"></a>Collections</h4><p>交并差等操作<br><img src="//zyfu0623.github.io/2019/12/05/Java世界最常用的工具类库/Image4.png" alt="Image4"></p><h4 id="I-O"><a href="#I-O" class="headerlink" title="I/O"></a>I/O</h4><p>IOUtils对IO操作的封装<br><img src="//zyfu0623.github.io/2019/12/05/Java世界最常用的工具类库/Image5.png" alt="Image5"><br>FileUtils对文件操作类的封装<br><img src="//zyfu0623.github.io/2019/12/05/Java世界最常用的工具类库/Image6.png" alt="Image6"></p><h4 id="Lang"><a href="#Lang" class="headerlink" title="Lang"></a>Lang</h4><p>StringUtils 以下断言测试通过<br><img src="//zyfu0623.github.io/2019/12/05/Java世界最常用的工具类库/Image7.png" alt="Image7"></p><h4 id="Pair和Triple"><a href="#Pair和Triple" class="headerlink" title="Pair和Triple"></a>Pair和Triple</h4><p>当想返回2个或3个值，但这几个值没有相关性，没有必要单独封装一个对象，就可以用到如下数据结构，返回Pair或Triple对象<br><img src="//zyfu0623.github.io/2019/12/05/Java世界最常用的工具类库/Image8.png" alt="Image8"></p><h3 id="Google-Guava"><a href="#Google-Guava" class="headerlink" title="Google Guava"></a>Google Guava</h3><h4 id="集合的创建"><a href="#集合的创建" class="headerlink" title="集合的创建"></a>集合的创建</h4><p><img src="//zyfu0623.github.io/2019/12/05/Java世界最常用的工具类库/Image9.png" alt="Image9"><br>不可变集合是线程安全的，并且中途不可改变，因为add等方法是被声明为过期，并且会抛出异常<br><img src="//zyfu0623.github.io/2019/12/05/Java世界最常用的工具类库/Image10.png" alt="Image10"></p><p>各种黑科技集合<br><img src="//zyfu0623.github.io/2019/12/05/Java世界最常用的工具类库/Image11.png" alt="Image11"></p><p>2个键映射一个值<br><img src="//zyfu0623.github.io/2019/12/05/Java世界最常用的工具类库/Image12.png" alt="Image12"></p><p>还有很多其他各种类型的集合，不再介绍  </p><h4 id="stop-watch"><a href="#stop-watch" class="headerlink" title="stop watch"></a>stop watch</h4><p>查看某段代码的运行时间<br><img src="//zyfu0623.github.io/2019/12/05/Java世界最常用的工具类库/Image13.png" alt="Image13"><br>TimeUnit 可以指定时间精度  </p><h4 id="Joda-Time"><a href="#Joda-Time" class="headerlink" title="Joda Time"></a>Joda Time</h4><p>jdk1.8之前，日期操作类常用的只有java.util.Date和java.util.Calendar，但是这2个类的易用性实在太差了，SimpleDateFormat不是线程安全的 。这就逼迫用户去选择第三方的日期操作类，Joda Time就是其中的佼佼者。后来Java自身也意识到了这个问题，于是jdk1.8大量借鉴了Joda Time的理念，推出了新的日期api，LocalDate ，LocalTime，LocalDateTime等，可以看如下文章了解一下用法、    <a href="https://blog.csdn.net/zzti_erlie/article/details/100849192" target="_blank" rel="noopener">https://blog.csdn.net/zzti_erlie/article/details/100849192</a>  2者的api很相似，如果公司的jdk版本在1.8以上推荐使用jdk1.8新推出的日期类，如果在1.8以下推荐使用Joda Time 。  </p><p>作者：小林啊<br>链接：<a href="https://juejin.im/post/5de7428de51d4557f42b4f7d" target="_blank" rel="noopener">https://juejin.im/post/5de7428de51d4557f42b4f7d</a><br>来源：掘金<br>著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。  </p>]]></content>
    
    <summary type="html">
    
      
      
        &lt;h2 id=&quot;Java世界最常用的工具类库&quot;&gt;&lt;a href=&quot;#Java世界最常用的工具类库&quot; class=&quot;headerlink&quot; title=&quot;Java世界最常用的工具类库&quot;&gt;&lt;/a&gt;Java世界最常用的工具类库&lt;/h2&gt;&lt;h3 id=&quot;Apache-Commons&quot;&gt;&lt;
      
    
    </summary>
    
      <category term="background" scheme="http://zyfu0623.github.io/categories/background/"/>
    
    
      <category term="工具类" scheme="http://zyfu0623.github.io/tags/%E5%B7%A5%E5%85%B7%E7%B1%BB/"/>
    
  </entry>
  
  <entry>
    <title>Head-First-设计模式-策略模式-总结</title>
    <link href="http://zyfu0623.github.io/2019/11/28/%E7%AD%96%E7%95%A5%E6%A8%A1%E5%BC%8F%E6%80%BB%E7%BB%93/"/>
    <id>http://zyfu0623.github.io/2019/11/28/策略模式总结/</id>
    <published>2019-11-27T16:13:53.000Z</published>
    <updated>2019-11-27T16:38:41.036Z</updated>
    
    <content type="html"><![CDATA[<h2 id="OO基础"><a href="#OO基础" class="headerlink" title="OO基础"></a>OO基础</h2><ul><li>抽象</li><li>封装</li><li>继承 </li><li>多态</li></ul><h2 id="OO原则"><a href="#OO原则" class="headerlink" title="OO原则"></a>OO原则</h2><ul><li>封装变化</li><li>多用组合，少用继承</li><li>针对接口编程，不针对实现编程  </li></ul><h2 id="OO-模式"><a href="#OO-模式" class="headerlink" title="OO 模式"></a>OO 模式</h2><ul><li>策略模式： 定义算法族， 分别封装起来，让它们之间可以相互替换，此模式让算法的变化独立于使用算法的客户。  </li></ul><h4 id="要点"><a href="#要点" class="headerlink" title="要点"></a>要点</h4><ul><li>知道OO基础， 并不足以让你设计出良好的系统</li><li>良好的OO设计必须具备 可复用、可扩充、可维护 三个特性</li><li>模式可以让我们建造出具有良好OO设计质量的系统。</li><li>模式被认为是历经验证的OO设计经验</li><li>模式不是代码， 而是针对设计问题的通用解决方案。可应用到特点的应用中。</li><li>模式不是被发明，而是被发现</li><li>大多数的模式和原则，都着眼于软件变化这一主题</li><li>大多数的模式都允许系统局部改变独立于其部分</li><li>通常我们把系统中会变化的部分抽出来封装</li><li>模式让开发人员之间有共享的语言，能够最大化沟通的价值</li></ul>]]></content>
    
    <summary type="html">
    
      
      
        &lt;h2 id=&quot;OO基础&quot;&gt;&lt;a href=&quot;#OO基础&quot; class=&quot;headerlink&quot; title=&quot;OO基础&quot;&gt;&lt;/a&gt;OO基础&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;抽象&lt;/li&gt;
&lt;li&gt;封装&lt;/li&gt;
&lt;li&gt;继承 &lt;/li&gt;
&lt;li&gt;多态&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 i
      
    
    </summary>
    
      <category term="设计模式" scheme="http://zyfu0623.github.io/categories/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/"/>
    
      <category term="background" scheme="http://zyfu0623.github.io/categories/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/background/"/>
    
    
      <category term="设计模式" scheme="http://zyfu0623.github.io/tags/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/"/>
    
      <category term="OO设计原则" scheme="http://zyfu0623.github.io/tags/OO%E8%AE%BE%E8%AE%A1%E5%8E%9F%E5%88%99/"/>
    
  </entry>
  
  <entry>
    <title>Head Firsh 设计模式-策略模式</title>
    <link href="http://zyfu0623.github.io/2019/11/27/Head-Firsh-%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F-%E7%AD%96%E7%95%A5%E6%A8%A1%E5%BC%8F/"/>
    <id>http://zyfu0623.github.io/2019/11/27/Head-Firsh-设计模式-策略模式/</id>
    <published>2019-11-27T14:37:24.000Z</published>
    <updated>2019-11-27T16:38:41.041Z</updated>
    
    <content type="html"><![CDATA[<p>使用模式的最好方式：—经验复用</p><pre><code>把模式装进脑子里，然后在你的设计和已有的应用中， 寻找何处可以使用他们。</code></pre><p>Duck     鸭子超类， 所有的鸭子继承该类</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">quack(); // 呱呱叫</span><br><span class="line">swim();//游泳</span><br><span class="line">display(); //外观</span><br></pre></td></tr></table></figure><p>现在让鸭子飞起来？！！！<br><code>fly();</code><br>导致所有的鸭子都能飞起来。。。。<br><font color="red">当设计“维护”时， 为了“复用”目的而使用继承，结局并不完美。</font></p><p>#####方式1<br>子类重写 fly(); 方法， 方法体内什么都不做<br>缺点：  </p><ol><li><p>代码在多个子类中重复  </p></li><li><p>改变会牵一发而动全身， 造成其他鸭子类不想要的改变  </p></li><li><p>运行时的行为不容易改变<br>#####利用接口<br>把fly() 方法从超类中拿出来， 放入一个Flyable接口中，只有会飞的鸭子才实现该接口；<br>同样quack()方法提取到 Quackable 接口中，因为并不是所有的鸭子都会呱呱叫(例如橡皮鸭子)<br>缺点：<br>代码复用率低  </p><p> 如果能有一种方法，让我们可以用一种对既有的代码影响最小的方式来修改软件， 那该多好！<br> 这样我们就可以花较小的时间重做代码，而多让程序去做更酷的事。  </p></li></ol><p>软件开发的真理：<br><font color="red">不管设计的多好，一段时间之后，总是需要成长和改变，否则软件就会“死亡”</font></p><p>引入<font color="red">设计原则</font>：  </p><ul><li><p>找出应用中可能需要变化之处，把它们独立出来，不要和那些不需要变化的代码混在一起<br>如果每次新的需求一来， 都会使某些代码发生变化，那么就可以确定，这部门的代码需要被抽出来，和其他稳定的代码有所区分。  </p></li><li><p>针对接口编程，而不是针对实现编程  </p></li></ul><p>针对接口编程：意思是“针对超类型（supertype）编程”</p><p>处理  </p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br></pre></td><td class="code"><pre><span class="line">package com.zyfu.fakecode;</span><br><span class="line"></span><br><span class="line">/**</span><br><span class="line"> * 超类鸭子</span><br><span class="line"> */</span><br><span class="line">public abstract class Duck &#123;</span><br><span class="line">    FlyBehavior flyBehavior;</span><br><span class="line"></span><br><span class="line">    abstract void display();</span><br><span class="line"></span><br><span class="line">    public void swim()&#123;</span><br><span class="line">        </span><br><span class="line">    &#125;</span><br><span class="line">    </span><br><span class="line">    public void setFlyBehavior(FlyBehavior flyBehavior) &#123;</span><br><span class="line">        this.flyBehavior = flyBehavior;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    public FlyBehavior getFlyBehavior() &#123;</span><br><span class="line">        return flyBehavior;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line">/**</span><br><span class="line">* 子类红头鸭子</span><br><span class="line">**/</span><br><span class="line">class RedHeadDuck extends Duck &#123;</span><br><span class="line"></span><br><span class="line">    public RedHeadDuck() &#123;</span><br><span class="line">        this.flyBehavior = new FlyWithWings();</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    @Override</span><br><span class="line">    void display() &#123;</span><br><span class="line">        </span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line">//飞行行为接口</span><br><span class="line">interface FlyBehavior&#123;</span><br><span class="line">    void fly();</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line">//实现类---翅膀飞行</span><br><span class="line">class FlyWithWings implements FlyBehavior&#123;</span><br><span class="line">    @Override</span><br><span class="line">    public void fly() &#123;</span><br><span class="line">        System.out.println(&quot;用翅膀飞行&quot;);</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line">//实现类---什么都不做</span><br><span class="line">class FlyNoWay implements FlyBehavior&#123;</span><br><span class="line">    @Override</span><br><span class="line">    public void fly() &#123;</span><br><span class="line">        //什么也不做</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>“有一个”可能比“是一个”更好<br>上面将两个类结合起来使用， 这就是组合(composition)。 这种做法与“继承”不同的地方在于，行为不是继承来的，而是和适当的行为对象“组合”起来的  </p><ul><li>多用组合， 少用继承<br>使用组合建立系统具有很大的弹性，不仅可将算法封装成类， 更可以 “在运行时动态的改变行为”，只要组合的“行为对象”符合正确的接口标准即可。  </li></ul><p>以上的思路就是<font color="red">策略模式</font>  </p><p>###策略模式<br>定义了算法族， 分别封装起来， 让它们之间可以互相替换，此模式让算法的变换独立于使用算法的客户。  </p>]]></content>
    
    <summary type="html">
    
      
      
        &lt;p&gt;使用模式的最好方式：—经验复用&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;把模式装进脑子里，然后在你的设计和已有的应用中， 寻找何处可以使用他们。&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Duck     鸭子超类， 所有的鸭子继承该类&lt;/p&gt;
&lt;figure class=&quot;highlight 
      
    
    </summary>
    
      <category term="设计模式" scheme="http://zyfu0623.github.io/categories/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/"/>
    
      <category term="background" scheme="http://zyfu0623.github.io/categories/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/background/"/>
    
    
      <category term="设计模式" scheme="http://zyfu0623.github.io/tags/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/"/>
    
      <category term="OO设计原则" scheme="http://zyfu0623.github.io/tags/OO%E8%AE%BE%E8%AE%A1%E5%8E%9F%E5%88%99/"/>
    
  </entry>
  
  <entry>
    <title>位运算和逻辑运算</title>
    <link href="http://zyfu0623.github.io/2019/11/27/%E4%BD%8D%E8%BF%90%E7%AE%97%E5%92%8C%E9%80%BB%E8%BE%91%E8%BF%90%E7%AE%97/"/>
    <id>http://zyfu0623.github.io/2019/11/27/位运算和逻辑运算/</id>
    <published>2019-11-27T02:01:48.000Z</published>
    <updated>2019-11-27T02:05:19.428Z</updated>
    
    <content type="html"><![CDATA[<pre><code>||  和 &amp;&amp; ---短路逻辑运算符进行逻辑运算， 只要有一个条件未true返回true， 后面的条件不再进行判断| 和 &amp; 1.进行逻辑运算， 所有的条件都会进行判断， 结果为true才会返回true2. 进行位运算System.out.println(11 &amp; 7)        5System.out.println(11 | 7)         1511        -&gt;    00000000 00000000 00000000 000011017          -&gt;    00000000 00000000 00000000 00000101&amp; 都是1 才是1“|”    有一个是1 就是1</code></pre>]]></content>
    
    <summary type="html">
    
      
      
        &lt;pre&gt;&lt;code&gt;||  和 &amp;amp;&amp;amp; ---短路逻辑运算符

进行逻辑运算， 只要有一个条件未true返回true， 后面的条件不再进行判断

| 和 &amp;amp; 

1.进行逻辑运算， 所有的条件都会进行判断， 结果为true才会返回true

2. 进行位运
      
    
    </summary>
    
      <category term="backGround" scheme="http://zyfu0623.github.io/categories/backGround/"/>
    
    
      <category term="二进制" scheme="http://zyfu0623.github.io/tags/%E4%BA%8C%E8%BF%9B%E5%88%B6/"/>
    
  </entry>
  
  <entry>
    <title>Hello World</title>
    <link href="http://zyfu0623.github.io/2019/11/03/hello-world/"/>
    <id>http://zyfu0623.github.io/2019/11/03/hello-world/</id>
    <published>2019-11-03T05:56:18.616Z</published>
    <updated>2019-08-04T04:58:49.862Z</updated>
    
    <content type="html"><![CDATA[<p>就是一个Hello World<br>很高兴自己的个人博客建立成功<br>以此记录自己工作中遇到的问题<br>以此记录自己的学习历程<br>以此记录一蚁的前行</p><p>近期会陆陆续续的把自己的笔记都录上来，也算是一次复习<br>欢迎前辈们指正！！！</p>]]></content>
    
    <summary type="html">
    
      
      
        &lt;p&gt;就是一个Hello World&lt;br&gt;很高兴自己的个人博客建立成功&lt;br&gt;以此记录自己工作中遇到的问题&lt;br&gt;以此记录自己的学习历程&lt;br&gt;以此记录一蚁的前行&lt;/p&gt;
&lt;p&gt;近期会陆陆续续的把自己的笔记都录上来，也算是一次复习&lt;br&gt;欢迎前辈们指正！！！&lt;/p&gt;

      
    
    </summary>
    
    
  </entry>
  
  <entry>
    <title>Maven指令记录</title>
    <link href="http://zyfu0623.github.io/2019/08/04/maven_orders/"/>
    <id>http://zyfu0623.github.io/2019/08/04/maven_orders/</id>
    <published>2019-08-04T05:11:25.000Z</published>
    <updated>2019-08-04T06:31:38.197Z</updated>
    
    <content type="html"><![CDATA[<p>基本上使用IDE 进行开发，maven命令都可以直接在开发工具中快捷执行，这就造成了自己根本没有留意过这一块的内容。</p><h2 id="install-命令，-将jar包安装到本地仓库"><a href="#install-命令，-将jar包安装到本地仓库" class="headerlink" title="install 命令， 将jar包安装到本地仓库"></a>install 命令， 将jar包安装到本地仓库</h2><p>别人给了一个jar包， maven仓库中也没有，项目中需要引用，杂么办？<br>install 命令，将jar包安装到本地仓库，然后把本地仓库中的 该jar包install 后的内容复制的内网的公共仓库</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">mvn install:install-file -Dfile=F:\xxxxx.jar -DgroupId=xxx.xxx -DartifactId=xxxx -Dversion=18.8 -Dpackaging=jar</span><br></pre></td></tr></table></figure><h2 id="拷贝依赖"><a href="#拷贝依赖" class="headerlink" title="拷贝依赖"></a>拷贝依赖</h2><p>公司为客户做了一个小工具，打包项目时要求把依赖放入一个文件夹下面，然后找到了下面这个命令</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">mvn dependency:copy-dependencies -DoutputDirectory=lib</span><br></pre></td></tr></table></figure>]]></content>
    
    <summary type="html">
    
      
      
        &lt;p&gt;基本上使用IDE 进行开发，maven命令都可以直接在开发工具中快捷执行，这就造成了自己根本没有留意过这一块的内容。&lt;/p&gt;
&lt;h2 id=&quot;install-命令，-将jar包安装到本地仓库&quot;&gt;&lt;a href=&quot;#install-命令，-将jar包安装到本地仓库&quot; clas
      
    
    </summary>
    
      <category term="backGround" scheme="http://zyfu0623.github.io/categories/backGround/"/>
    
      <category term="Maven" scheme="http://zyfu0623.github.io/categories/backGround/Maven/"/>
    
    
      <category term="Maven" scheme="http://zyfu0623.github.io/tags/Maven/"/>
    
  </entry>
  
  <entry>
    <title>初识springBoot</title>
    <link href="http://zyfu0623.github.io/2019/08/04/new_springBoot/"/>
    <id>http://zyfu0623.github.io/2019/08/04/new_springBoot/</id>
    <published>2019-08-04T05:07:10.000Z</published>
    <updated>2019-08-04T05:33:05.247Z</updated>
    
    <content type="html"><![CDATA[<p>spring boot 踩坑<br>创建简单的web 项目，只实现web 页面展示，不涉及业务处理</p><ol><li><p>idea 新建项目，采用 Spring Initializr 创建项目， 选择 web 依赖</p></li><li><p>项目创建成功后<br>创建展示层目录： src/main/webapp,<br>在 webapp下创建目录 WEB-INF ,<br>在WEB-INF 下创建 index.jsp 文件</p></li><li><p>配置spring boot 启动器</p> <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line">@SpringBootApplication</span><br><span class="line">   public class Applicaion extends SpringBootServletInitializer&#123;</span><br><span class="line">   public static main(String args[])&#123;</span><br><span class="line">   SpringApplication.run(Applicaion.class, args);</span><br><span class="line">   &#125;</span><br><span class="line">   //重写configure 方法</span><br><span class="line">   protected SpringApplicationBuilder configure(SpringApplicationBuilder builder)&#123;</span><br><span class="line">   <span class="built_in">return</span> builder.sources(Applicaion.class);</span><br><span class="line">   &#125;</span><br><span class="line">   &#125;</span><br></pre></td></tr></table></figure></li></ol><ol start="4"><li>配置文件设置 ： application.properties  <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">spring.mvc.view.perfix=/WEB-INF/</span><br><span class="line">   spring.mvc.view.suffix=.jsp</span><br></pre></td></tr></table></figure></li></ol><ol start="5"><li>添加jsp 支持， 如果需要使用EL 表达式， 再添加JSTL 支持，打开pom.xml文件 <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line">&lt;dependency&gt;&lt;!--  jsp 支持 --&gt;</span><br><span class="line">   &lt;groupId&gt;org.apache.tomcat.embed&lt;/groupId&gt;</span><br><span class="line">   &lt;artifactId&gt;tomcat-embed-jasper&lt;/artifactId&gt;</span><br><span class="line">   &lt;/dependency&gt;</span><br><span class="line">   </span><br><span class="line">   &lt;dependency&gt; &lt;!--  jstl 支持 --&gt;</span><br><span class="line">   &lt;groupId&gt;javax.servlet&lt;/groupId&gt;</span><br><span class="line">   &lt;artifactId&gt;jstl&lt;/artifactId&gt;</span><br><span class="line">   &lt;/dependency&gt;</span><br></pre></td></tr></table></figure></li></ol><ol start="6"><li><p>添加一个 Controller , 注意所在的目录</p><pre><code class="bash">import org.springframework.web.bind.annotation.RequestMapping;    import org.springframework.web.bind.annotation.RestController;    import org.springframework.web.servlet.ModelAndView;    @RestController    public class LoginController {        @RequestMapping(value ={ <span class="string">"/"</span>, <span class="string">"/index"</span>})        public ModelAndView <span class="function"><span class="title">index</span></span>(){            ModelAndView view = new ModelAndView(<span class="string">"index"</span>);            <span class="built_in">return</span> view;        }    }</code></pre></li><li><p>@RestController 与 @Controller 之间的不同<br> @RestController 相当于 @RequestMapping 和 @ResponseBody 结合，</p><pre><code>方法返回值为 String  返回单纯的字符串， 方法返回值为 ModelAndView 为一个页面</code></pre><p> @Controller </p><pre><code>方法返回值为 String  返回一个页面， 方法返回值为 ModelAndView 为一个页面， 返回对象需要在方法上添加@ResponseBody注解</code></pre></li><li><p>@RequestMapping 路径匹配，<br>可在类，方法上添加;<br>一个方法匹配多个路径 {“/index”,  “/login” } ,使用大括号括起来;<br>中间用逗号隔开。</p></li></ol>]]></content>
    
    <summary type="html">
    
      
      
        &lt;p&gt;spring boot 踩坑&lt;br&gt;创建简单的web 项目，只实现web 页面展示，不涉及业务处理&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;idea 新建项目，采用 Spring Initializr 创建项目， 选择 web 依赖&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;项目创建成功后
      
    
    </summary>
    
      <category term="springBoot" scheme="http://zyfu0623.github.io/categories/springBoot/"/>
    
    
      <category term="backGround" scheme="http://zyfu0623.github.io/tags/backGround/"/>
    
      <category term="springBoot" scheme="http://zyfu0623.github.io/tags/springBoot/"/>
    
  </entry>
  
  <entry>
    <title>【javaSE】</title>
    <link href="http://zyfu0623.github.io/2019/08/04/jav_se/"/>
    <id>http://zyfu0623.github.io/2019/08/04/jav_se/</id>
    <published>2019-08-04T05:04:46.000Z</published>
    <updated>2019-08-04T05:33:04.972Z</updated>
    
    <content type="html"><![CDATA[<p>将list集合转化为js 可以遍历的json 对象</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">JSONArray.toJSON(prjCategoryInfoList)</span><br></pre></td></tr></table></figure>]]></content>
    
    <summary type="html">
    
      
      
        &lt;p&gt;将list集合转化为js 可以遍历的json 对象&lt;/p&gt;
&lt;figure class=&quot;highlight bash&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td
      
    
    </summary>
    
      <category term="backGround" scheme="http://zyfu0623.github.io/categories/backGround/"/>
    
      <category term="javaSE" scheme="http://zyfu0623.github.io/categories/backGround/javaSE/"/>
    
    
      <category term="java" scheme="http://zyfu0623.github.io/tags/java/"/>
    
  </entry>
  
  <entry>
    <title>EL表达式不起作用问题排查</title>
    <link href="http://zyfu0623.github.io/2019/08/04/el_error/"/>
    <id>http://zyfu0623.github.io/2019/08/04/el_error/</id>
    <published>2019-08-04T04:49:39.000Z</published>
    <updated>2019-08-04T05:33:05.202Z</updated>
    
    <content type="html"><![CDATA[<p>EL 表达式 &lt;%@ page isELIgnored=”true | false”%&gt; 用于指定el 表达式是否被忽略</p><p>web.xml中  :web-app_2_4.xsd”&gt;默认为 false,表示启用<br>2.4之前的版本默认为true,表示忽略EL 表达式.</p><h2 id="所以老版本的web-app-尽早改了吧"><a href="#所以老版本的web-app-尽早改了吧" class="headerlink" title="所以老版本的web-app 尽早改了吧"></a>所以老版本的web-app 尽早改了吧</h2>]]></content>
    
    <summary type="html">
    
      
      
        &lt;p&gt;EL 表达式 &amp;lt;%@ page isELIgnored=”true | false”%&amp;gt; 用于指定el 表达式是否被忽略&lt;/p&gt;
&lt;p&gt;web.xml中  :web-app_2_4.xsd”&amp;gt;默认为 false,表示启用&lt;br&gt;2.4之前的版本默认为tru
      
    
    </summary>
    
      <category term="backGround" scheme="http://zyfu0623.github.io/categories/backGround/"/>
    
      <category term="jsp" scheme="http://zyfu0623.github.io/categories/backGround/jsp/"/>
    
    
      <category term="jsp" scheme="http://zyfu0623.github.io/tags/jsp/"/>
    
  </entry>
  
  <entry>
    <title>文件下载中文名称乱码问题</title>
    <link href="http://zyfu0623.github.io/2019/08/04/downFile_chinese/"/>
    <id>http://zyfu0623.github.io/2019/08/04/downFile_chinese/</id>
    <published>2019-08-04T04:45:37.000Z</published>
    <updated>2019-08-04T05:33:04.923Z</updated>
    
    <content type="html"><![CDATA[<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><span class="line">/**</span><br><span class="line">     * 设置文件名响应头</span><br><span class="line">     * @param response response</span><br><span class="line">     * @param request request</span><br><span class="line">     * @param fileName 文件名</span><br><span class="line">     * @throws UnsupportedEncodingException</span><br><span class="line">     */</span><br><span class="line">    private void setFileNameToResponse(HttpServletResponse response, HttpServletRequest request, String fileName) throws UnsupportedEncodingException &#123;</span><br><span class="line">        <span class="keyword">if</span> (fileName != null)&#123;</span><br><span class="line">            String userAgent = request.getHeader(<span class="string">"User-Agent"</span>).toLowerCase();</span><br><span class="line">            <span class="keyword">if</span>(userAgent.contains(<span class="string">"msie"</span>) || userAgent.contains(<span class="string">"trident"</span>) || userAgent.contains(<span class="string">"edge"</span>))&#123;</span><br><span class="line">                fileName = URLEncoder.encode(fileName, <span class="string">"UTF-8"</span>);</span><br><span class="line">                fileName=fileName.replaceAll(<span class="string">"\\+"</span>,<span class="string">"%20"</span>);//处理空格展示成加号的问题</span><br><span class="line">            &#125;<span class="keyword">else</span>&#123;</span><br><span class="line">                fileName = new String(fileName.getBytes(),<span class="string">"ISO8859-1"</span>);</span><br><span class="line">            &#125;</span><br><span class="line">            response.setHeader(<span class="string">"Content-disposition"</span>, String.format(<span class="string">"attachment; filename=\"%s\""</span>, fileName));</span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br></pre></td></tr></table></figure>]]></content>
    
    <summary type="html">
    
      
      
        &lt;figure class=&quot;highlight bash&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=
      
    
    </summary>
    
      <category term="backGround" scheme="http://zyfu0623.github.io/categories/backGround/"/>
    
      <category term="文件下载" scheme="http://zyfu0623.github.io/categories/backGround/%E6%96%87%E4%BB%B6%E4%B8%8B%E8%BD%BD/"/>
    
    
      <category term="spring" scheme="http://zyfu0623.github.io/tags/spring/"/>
    
  </entry>
  
  <entry>
    <title>【MySQL】事务没有提交导致锁等待</title>
    <link href="http://zyfu0623.github.io/2019/08/04/mysql_transations/"/>
    <id>http://zyfu0623.github.io/2019/08/04/mysql_transations/</id>
    <published>2019-08-04T04:34:08.000Z</published>
    <updated>2019-08-04T05:33:05.350Z</updated>
    
    <content type="html"><![CDATA[<p>【MySQL】事务没有提交导致 锁等待</p><h2 id="Lock-wait-timeout-exceeded异常的处理办法"><a href="#Lock-wait-timeout-exceeded异常的处理办法" class="headerlink" title="Lock wait timeout exceeded异常的处理办法"></a>Lock wait timeout exceeded异常的处理办法</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">select * from information_schema.innodb_trx;</span><br></pre></td></tr></table></figure><p>之后找到了一个一直没有提交的事务。</p><p>kill 到了对应的线程后ok了。</p><p>查看所有的进程列表：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">show processlist;</span><br></pre></td></tr></table></figure>]]></content>
    
    <summary type="html">
    
      
      
        &lt;p&gt;【MySQL】事务没有提交导致 锁等待&lt;/p&gt;
&lt;h2 id=&quot;Lock-wait-timeout-exceeded异常的处理办法&quot;&gt;&lt;a href=&quot;#Lock-wait-timeout-exceeded异常的处理办法&quot; class=&quot;headerlink&quot; title=
      
    
    </summary>
    
      <category term="backGround" scheme="http://zyfu0623.github.io/categories/backGround/"/>
    
      <category term="MySQL" scheme="http://zyfu0623.github.io/categories/backGround/MySQL/"/>
    
    
      <category term="MySQL" scheme="http://zyfu0623.github.io/tags/MySQL/"/>
    
  </entry>
  
  <entry>
    <title>linux服务器tomcat启动但浏览器访问不了</title>
    <link href="http://zyfu0623.github.io/2019/08/04/toStartTomcat/"/>
    <id>http://zyfu0623.github.io/2019/08/04/toStartTomcat/</id>
    <published>2019-08-04T04:31:28.000Z</published>
    <updated>2019-08-04T05:33:04.869Z</updated>
    
    <content type="html"><![CDATA[<p>首先服务器是阿里云云服务器<br>tomcat是成功启动，但是浏览器就是打不开， tomcat日志也没问题，firewalld里8080端口号也加了。<br>服务器的实例，添加一组入方向的安全组规则(协议类型:自定义TCP<br>端口范围:22/8081  授权类型:地址段访问 授权对象:0.0.0.0/0 )，然后浏览器刷新</p>]]></content>
    
    <summary type="html">
    
      
      
        &lt;p&gt;首先服务器是阿里云云服务器&lt;br&gt;tomcat是成功启动，但是浏览器就是打不开， tomcat日志也没问题，firewalld里8080端口号也加了。&lt;br&gt;服务器的实例，添加一组入方向的安全组规则(协议类型:自定义TCP&lt;br&gt;端口范围:22/8081  授权类型:地址段
      
    
    </summary>
    
      <category term="backGround" scheme="http://zyfu0623.github.io/categories/backGround/"/>
    
      <category term="linux" scheme="http://zyfu0623.github.io/categories/backGround/linux/"/>
    
      <category term="tomcat" scheme="http://zyfu0623.github.io/categories/backGround/linux/tomcat/"/>
    
    
      <category term="linux" scheme="http://zyfu0623.github.io/tags/linux/"/>
    
      <category term="tomcat" scheme="http://zyfu0623.github.io/tags/tomcat/"/>
    
  </entry>
  
  <entry>
    <title>idea加快创建Maven项目速度</title>
    <link href="http://zyfu0623.github.io/2019/08/04/idea_create_maven/"/>
    <id>http://zyfu0623.github.io/2019/08/04/idea_create_maven/</id>
    <published>2019-08-04T04:29:19.000Z</published>
    <updated>2019-08-04T05:33:05.159Z</updated>
    
    <content type="html"><![CDATA[<p>Intellij Idea 创建maven项目 配置参数，提高创建速度<br>archetypeCatalog=internal</p><p>idea 开发工具:is 开头的boolean类型参数,<br>更改get /set 方法的方法名, 避免造成参数名与实际获取的参数名不一致问题</p><p>注：貌似eclipse 也有相同的问题吧？</p>]]></content>
    
    <summary type="html">
    
      
      
        &lt;p&gt;Intellij Idea 创建maven项目 配置参数，提高创建速度&lt;br&gt;archetypeCatalog=internal&lt;/p&gt;
&lt;p&gt;idea 开发工具:is 开头的boolean类型参数,&lt;br&gt;更改get /set 方法的方法名, 避免造成参数名与实际获取的参
      
    
    </summary>
    
      <category term="backGround" scheme="http://zyfu0623.github.io/categories/backGround/"/>
    
      <category term="idea" scheme="http://zyfu0623.github.io/categories/backGround/idea/"/>
    
      <category term="Maven" scheme="http://zyfu0623.github.io/categories/backGround/idea/Maven/"/>
    
    
      <category term="idea" scheme="http://zyfu0623.github.io/tags/idea/"/>
    
      <category term="maven" scheme="http://zyfu0623.github.io/tags/maven/"/>
    
  </entry>
  
  <entry>
    <title>前端js常见问题</title>
    <link href="http://zyfu0623.github.io/2019/08/04/js_faults/"/>
    <id>http://zyfu0623.github.io/2019/08/04/js_faults/</id>
    <published>2019-08-04T04:20:45.000Z</published>
    <updated>2019-08-04T05:33:05.302Z</updated>
    
    <content type="html"><![CDATA[<h2 id="textarea"><a href="#textarea" class="headerlink" title="textarea"></a>textarea</h2><p>textarea的text属性与value属性注意区分，发送到服务器的是value值</p><h2 id="select标签"><a href="#select标签" class="headerlink" title="select标签"></a>select标签</h2><p>select标签通过js生成的option设置默认选中状态必须在生成的过程中进行设置，<br>在生成后设置:$(“select””).val()  和$(“select””).find(“option[value=”+yes+”]””).attr(“selected””,”selected””)都不会生效；<br>input 标签不填任何内容值为  “”</p><p>前端js 代码中遍历 key:value结构数据</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">for</span>(var key <span class="keyword">in</span> obj)&#123;//key为map集合中的每个元素的key</span><br><span class="line">var value = obj[key]// value 为对应key 对应的value</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>遍历json 对象 与遍历map相同</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">for</span>(var item <span class="keyword">in</span> person)&#123;</span><br><span class="line">alert(<span class="string">"person中"</span>+item+<span class="string">"的值="</span>+person[item]);</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><hr><h2 id="数组删除指定元素的方法"><a href="#数组删除指定元素的方法" class="headerlink" title="数组删除指定元素的方法"></a>数组删除指定元素的方法</h2><p>方法一：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line">//定义删除方法</span><br><span class="line">Array.prototype.remove = <span class="keyword">function</span>(val) &#123;</span><br><span class="line">    var index = this.indexOf(val);</span><br><span class="line">    <span class="keyword">if</span> (index &gt; -1) &#123;</span><br><span class="line">        this.splice(index, 1);</span><br><span class="line">    &#125;</span><br><span class="line">&#125;;</span><br><span class="line">// 定义查询下标的方法 </span><br><span class="line">Array.prototype.indexOf = <span class="keyword">function</span>(val) &#123;</span><br><span class="line">    <span class="keyword">for</span> (var i = 0; i &lt; this.length; i++) &#123;</span><br><span class="line">        <span class="keyword">if</span> (this[i] == val) <span class="built_in">return</span> i;</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="built_in">return</span> -1;</span><br><span class="line">&#125;;</span><br></pre></td></tr></table></figure><p>方法二：<br>array 表示数组，item表示数组中的元素,<br>$.inArray 获取item在array 中的下标，splice(index, num)表示从index位置开始删除num个元素</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">array.splice($.inArray(item, array), 1);</span><br></pre></td></tr></table></figure><h2 id="复制一个对象中的数据到新的对象中"><a href="#复制一个对象中的数据到新的对象中" class="headerlink" title="复制一个对象中的数据到新的对象中"></a>复制一个对象中的数据到新的对象中</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$.extend(newData, oldData);</span><br></pre></td></tr></table></figure>]]></content>
    
    <summary type="html">
    
      
      
        &lt;h2 id=&quot;textarea&quot;&gt;&lt;a href=&quot;#textarea&quot; class=&quot;headerlink&quot; title=&quot;textarea&quot;&gt;&lt;/a&gt;textarea&lt;/h2&gt;&lt;p&gt;textarea的text属性与value属性注意区分，发送到服务器的是value值&lt;/p&gt;
      
    
    </summary>
    
      <category term="forward" scheme="http://zyfu0623.github.io/categories/forward/"/>
    
      <category term="js" scheme="http://zyfu0623.github.io/categories/forward/js/"/>
    
      <category term="jQuery" scheme="http://zyfu0623.github.io/categories/forward/js/jQuery/"/>
    
    
      <category term="jQuery" scheme="http://zyfu0623.github.io/tags/jQuery/"/>
    
      <category term="js" scheme="http://zyfu0623.github.io/tags/js/"/>
    
  </entry>
  
  <entry>
    <title>mybatis采坑</title>
    <link href="http://zyfu0623.github.io/2019/08/04/mybatis_faults/"/>
    <id>http://zyfu0623.github.io/2019/08/04/mybatis_faults/</id>
    <published>2019-08-04T04:08:06.000Z</published>
    <updated>2019-08-04T05:33:04.833Z</updated>
    
    <content type="html"><![CDATA[<h2 id="mybatis-获取主键自增长"><a href="#mybatis-获取主键自增长" class="headerlink" title="mybatis 获取主键自增长"></a>mybatis 获取主键自增长</h2><p>两个属性：useGeneratedKeys 和 keyProperty ，获得的主键直接赋值到插入的对象中，通过插入的对象获取自增的主键</p><h2 id="mabatis-多个参数的查询"><a href="#mabatis-多个参数的查询" class="headerlink" title="mabatis 多个参数的查询"></a>mabatis 多个参数的查询</h2><p>Dao 层使用@Param 注解，xml配置文件中不需要再使用parameterType 属性<br>mybatis 中desc 经常作为description 的缩写使用，查询数据时引发错误，<br>在desc两端添加反引号(数字1 前的那个键)可以解决问题</p><h2 id="mybatis-批量插入案例："><a href="#mybatis-批量插入案例：" class="headerlink" title="mybatis 批量插入案例："></a>mybatis 批量插入案例：</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">&lt;insert id=<span class="string">"insertBatch"</span> parameterType=<span class="string">"java.util.List"</span>&gt;</span><br><span class="line">    INSERT INTO s_data_role_permission (id, dataRoleId, dataTypeId,</span><br><span class="line">      dataDepts, createUser, createTime</span><br><span class="line">      ) VALUES</span><br><span class="line">    &lt;foreach collection=<span class="string">"list"</span> item=<span class="string">"item"</span> index=<span class="string">"index"</span> separator=<span class="string">","</span>&gt;</span><br><span class="line">      (<span class="comment">#&#123;item.id,jdbcType=INTEGER&#125;, #&#123;item.dataRoleId,jdbcType=INTEGER&#125;,</span></span><br><span class="line">      <span class="comment">#&#123;item.dataTypeId,jdbcType=INTEGER&#125;, #&#123;item.dataDepts,jdbcType=VARCHAR&#125;,</span></span><br><span class="line">      <span class="comment">#&#123;item.createUser,jdbcType=VARCHAR&#125;, #&#123;item.createTime,jdbcType=TIMESTAMP&#125;</span></span><br><span class="line">      )</span><br><span class="line">    &lt;/foreach&gt;</span><br><span class="line">  &lt;/insert&gt;</span><br></pre></td></tr></table></figure><h2 id="mybatis-批量查询案例："><a href="#mybatis-批量查询案例：" class="headerlink" title="mybatis 批量查询案例："></a>mybatis 批量查询案例：</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">&lt;select id=<span class="string">"selectDeptTreeByIds"</span> resultType=<span class="string">"com.instant.ipms.model.vo.web.sys.dept.DeptTree"</span>&gt;</span><br><span class="line">    SELECT id, parentId, name as text</span><br><span class="line">    FROM s_dept</span><br><span class="line">    WHERE id IN</span><br><span class="line">    &lt;foreach collection=<span class="string">"list"</span> open=<span class="string">"("</span>  close=<span class="string">")"</span>  index=<span class="string">"index"</span> separator=<span class="string">","</span> item=<span class="string">"item"</span>&gt;<span class="comment">#&#123;item&#125;&lt;/foreach&gt;</span></span><br><span class="line">&lt;/select&gt;</span><br></pre></td></tr></table></figure><h2 id="mybatis-批量更新案例："><a href="#mybatis-批量更新案例：" class="headerlink" title="mybatis 批量更新案例："></a>mybatis 批量更新案例：</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line">&lt;update id=<span class="string">"updateBatch"</span> parameterType=<span class="string">"java.util.List"</span>&gt;</span><br><span class="line">    update prj_stage</span><br><span class="line">    &lt;trim prefix=<span class="string">"set"</span> suffixOverrides=<span class="string">","</span>&gt;</span><br><span class="line">      &lt;trim prefix=<span class="string">"sort =case"</span> suffix=<span class="string">"end,"</span>&gt;</span><br><span class="line">        &lt;foreach collection=<span class="string">"list"</span> item=<span class="string">"item"</span> index=<span class="string">"index"</span>&gt;</span><br><span class="line">          when id=<span class="comment">#&#123;item.id&#125; then #&#123;item.sort&#125;</span></span><br><span class="line">        &lt;/foreach&gt;</span><br><span class="line">      &lt;/trim&gt;</span><br><span class="line">    &lt;/trim&gt;</span><br><span class="line">    <span class="built_in">where</span> id <span class="keyword">in</span></span><br><span class="line">    &lt;foreach collection=<span class="string">"list"</span> index=<span class="string">"index"</span> item=<span class="string">"item"</span> separator=<span class="string">","</span> open=<span class="string">"("</span> close=<span class="string">")"</span>&gt;</span><br><span class="line">      <span class="comment">#&#123;item.id,jdbcType=INTEGER&#125;</span></span><br><span class="line">    &lt;/foreach&gt;</span><br><span class="line">&lt;/update&gt;</span><br></pre></td></tr></table></figure><h2 id="org-apache-ibatis-reflection-ReflectionException"><a href="#org-apache-ibatis-reflection-ReflectionException" class="headerlink" title="org.apache.ibatis.reflection.ReflectionException"></a>org.apache.ibatis.reflection.ReflectionException</h2><p>There is no getter for property named ‘keyword’ in ‘class java.lang.String’这样的错误<br>解决方法</p><ol><li><p>将string类型换成map类型的，然后将该keyword 放入该map中，不会报错</p></li><li><p>在接口中使用@Param(value=”xxx”) String xxx,<br>例如：public List<articleentity> fuzzyFind(@Param(value = “keyword”) String keyword);<br>同时将配置文件中的paramType 去除，也可以解决问题</articleentity></p></li><li><p>在配置文件中直接将keyword换成_parameter，问题解决。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">&lt;select id=<span class="string">"fuzzyFind"</span> resultMap=<span class="string">"articleResultMap"</span> parameterType=<span class="string">"string"</span>&gt;</span><br><span class="line">&lt;![CDATA[</span><br><span class="line">SELECT * FROM articles WHERE 1=1</span><br><span class="line">]]&gt;</span><br><span class="line">&lt;<span class="keyword">if</span> <span class="built_in">test</span>=<span class="string">"_parameter != null"</span>&gt;</span><br><span class="line">&lt;![CDATA[ AND article_title LIKE CONCAT(<span class="string">'%'</span>,<span class="string">'$&#123;_parameter&#125;'</span>,<span class="string">'%'</span>) ]]&gt;</span><br><span class="line">&lt;/<span class="keyword">if</span>&gt;</span><br><span class="line">&lt;/select&gt;</span><br></pre></td></tr></table></figure></li></ol>]]></content>
    
    <summary type="html">
    
      
      
        &lt;h2 id=&quot;mybatis-获取主键自增长&quot;&gt;&lt;a href=&quot;#mybatis-获取主键自增长&quot; class=&quot;headerlink&quot; title=&quot;mybatis 获取主键自增长&quot;&gt;&lt;/a&gt;mybatis 获取主键自增长&lt;/h2&gt;&lt;p&gt;两个属性：useGeneratedK
      
    
    </summary>
    
      <category term="backGround" scheme="http://zyfu0623.github.io/categories/backGround/"/>
    
      <category term="mybatis" scheme="http://zyfu0623.github.io/categories/backGround/mybatis/"/>
    
    
      <category term="mybatis" scheme="http://zyfu0623.github.io/tags/mybatis/"/>
    
  </entry>
  
</feed>
