<div id="article\_content" class="article\_content tracking-ad" data-mod="popu\_307" data-dsm="post" style="overflow: hidden;"> <div class="markdown\_views"><h2 id="springboot-使用yml配置-mybatispagehelperdruidfreemarker实例">SpringBoot 使用yml配置 mybatis+pagehelper+druid+freemarker实例</h2> <p>这是一个简单的SpringBoot整合实例</p> <p>这里是项目的结构目录</p> <p><img src="http://img.blog.csdn.net/20170713085929071?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY21tY2hlbm1t/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这里写图片描述" title=""></p> <p>首先是pom.xml</p> <hr> <pre class="prettyprint" name="code"><code class="hljs xml has-numbering"><span class="hljs-tag"><<span class="hljs-title">project</span> <span class="hljs-attribute">xmlns</span>=<span class="hljs-value">"http://maven.apache.org/POM/4.0.0"</span> <span class="hljs-attribute">xmlns:xsi</span>=<span class="hljs-value">"http://www.w3.org/2001/XMLSchema-instance"</span> <span class="hljs-attribute">xsi:schemaLocation</span>=<span class="hljs-value">"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"</span>></span> <span class="hljs-tag"><<span class="hljs-title">modelVersion</span>></span>4.0.0<span class="hljs-tag"></<span class="hljs-title">modelVersion</span>></span> <span class="hljs-tag"><<span class="hljs-title">groupId</span>></span>Ming<span class="hljs-tag"></<span class="hljs-title">groupId</span>></span> <span class="hljs-tag"><<span class="hljs-title">artifactId</span>></span>SpringBoot<span class="hljs-tag"></<span class="hljs-title">artifactId</span>></span> <span class="hljs-tag"><<span class="hljs-title">version</span>></span>0.0.1-SNAPSHOT<span class="hljs-tag"></<span class="hljs-title">version</span>></span> <span class="hljs-comment"><!-- Spring Boot 启动父依赖 --></span> <span class="hljs-tag"><<span class="hljs-title">parent</span>></span> <span class="hljs-tag"><<span class="hljs-title">groupId</span>></span>org.springframework.boot<span class="hljs-tag"></<span class="hljs-title">groupId</span>></span> <span class="hljs-tag"><<span class="hljs-title">artifactId</span>></span>spring-boot-starter-parent<span class="hljs-tag"></<span class="hljs-title">artifactId</span>></span> <span class="hljs-tag"><<span class="hljs-title">version</span>></span>1.5.4.RELEASE<span class="hljs-tag"></<span class="hljs-title">version</span>></span> <span class="hljs-tag"></<span class="hljs-title">parent</span>></span> <span class="hljs-tag"><<span class="hljs-title">properties</span>></span> <span class="hljs-tag"><<span class="hljs-title">mybatis-spring-boot</span>></span>1.2.0<span class="hljs-tag"></<span class="hljs-title">mybatis-spring-boot</span>></span> <span class="hljs-tag"><<span class="hljs-title">mysql-connector</span>></span>5.1.39<span class="hljs-tag"></<span class="hljs-title">mysql-connector</span>></span> <span class="hljs-tag"><<span class="hljs-title">druid</span>></span>1.0.18<span class="hljs-tag"></<span class="hljs-title">druid</span>></span> <span class="hljs-tag"><<span class="hljs-title">java.version</span>></span>1.8<span class="hljs-tag"></<span class="hljs-title">java.version</span>></span> <span class="hljs-tag"></<span class="hljs-title">properties</span>></span> <span class="hljs-tag"><<span class="hljs-title">dependencies</span>></span> <span class="hljs-comment"><!-- Spring Boot Web 依赖 --></span> <span class="hljs-tag"><<span class="hljs-title">dependency</span>></span> <span class="hljs-tag"><<span class="hljs-title">groupId</span>></span>org.springframework.boot<span class="hljs-tag"></<span class="hljs-title">groupId</span>></span> <span class="hljs-tag"><<span class="hljs-title">artifactId</span>></span>spring-boot-starter-web<span class="hljs-tag"></<span class="hljs-title">artifactId</span>></span> <span class="hljs-tag"></<span class="hljs-title">dependency</span>></span> <span class="hljs-comment"><!-- Spring Boot Mybatis 依赖 --></span> <span class="hljs-tag"><<span class="hljs-title">dependency</span>></span> <span class="hljs-tag"><<span class="hljs-title">groupId</span>></span>org.mybatis.spring.boot<span class="hljs-tag"></<span class="hljs-title">groupId</span>></span> <span class="hljs-tag"><<span class="hljs-title">artifactId</span>></span>mybatis-spring-boot-starter<span class="hljs-tag"></<span class="hljs-title">artifactId</span>></span> <span class="hljs-tag"><<span class="hljs-title">version</span>></span>1.1.1<span class="hljs-tag"></<span class="hljs-title">version</span>></span> <span class="hljs-tag"></<span class="hljs-title">dependency</span>></span> <span class="hljs-comment"><!-- MySQL 连接驱动依赖 --></span> <span class="hljs-tag"><<span class="hljs-title">dependency</span>></span> <span class="hljs-tag"><<span class="hljs-title">groupId</span>></span>mysql<span class="hljs-tag"></<span class="hljs-title">groupId</span>></span> <span class="hljs-tag"><<span class="hljs-title">artifactId</span>></span>mysql-connector-java<span class="hljs-tag"></<span class="hljs-title">artifactId</span>></span> <span class="hljs-tag"><<span class="hljs-title">version</span>></span>${mysql-connector}<span class="hljs-tag"></<span class="hljs-title">version</span>></span> <span class="hljs-tag"></<span class="hljs-title">dependency</span>></span> <span class="hljs-comment"><!-- Druid 数据连接池依赖 --></span> <span class="hljs-tag"><<span class="hljs-title">dependency</span>></span> <span class="hljs-tag"><<span class="hljs-title">groupId</span>></span>com.alibaba<span class="hljs-tag"></<span class="hljs-title">groupId</span>></span> <span class="hljs-tag"><<span class="hljs-title">artifactId</span>></span>druid<span class="hljs-tag"></<span class="hljs-title">artifactId</span>></span> <span class="hljs-tag"><<span class="hljs-title">version</span>></span>${druid}<span class="hljs-tag"></<span class="hljs-title">version</span>></span> <span class="hljs-tag"></<span class="hljs-title">dependency</span>></span> <span class="hljs-comment"><!-- 分页插件 --></span> <span class="hljs-tag"><<span class="hljs-title">dependency</span>></span> <span class="hljs-tag"><<span class="hljs-title">groupId</span>></span>com.github.pagehelper<span class="hljs-tag"></<span class="hljs-title">groupId</span>></span> <span class="hljs-tag"><<span class="hljs-title">artifactId</span>></span>pagehelper<span class="hljs-tag"></<span class="hljs-title">artifactId</span>></span> <span class="hljs-tag"><<span class="hljs-title">version</span>></span>4.1.6<span class="hljs-tag"></<span class="hljs-title">version</span>></span> <span class="hljs-tag"></<span class="hljs-title">dependency</span>></span> <span class="hljs-tag"><<span class="hljs-title">dependency</span>></span> <span class="hljs-tag"><<span class="hljs-title">groupId</span>></span>org.springframework.boot<span class="hljs-tag"></<span class="hljs-title">groupId</span>></span> <span class="hljs-tag"><<span class="hljs-title">artifactId</span>></span>spring-boot-starter-freemarker<span class="hljs-tag"></<span class="hljs-title">artifactId</span>></span> <span class="hljs-tag"></<span class="hljs-title">dependency</span>></span> <span class="hljs-tag"></<span class="hljs-title">dependencies</span>></span> <span class="hljs-tag"></<span class="hljs-title">project</span>></span></code></pre> <p>接着在src/main/resources目录下新建一个application.yml文件</p> <pre class="prettyprint" name="code"><code class="hljs avrasm has-numbering"><span class="hljs-label">server:</span> port: <span class="hljs-number">8080</span> <span class="hljs-label">logging:</span> level: learning: trace <span class="hljs-label">spring:</span> <span class="hljs-preprocessor">#数据源配置</span> datasource: url: jdbc:mysql://localhost:<span class="hljs-number">3306</span>/test username: root password: <span class="hljs-number">123456</span> driver-class-name: <span class="hljs-keyword">com</span><span class="hljs-preprocessor">.mysql</span><span class="hljs-preprocessor">.jdbc</span><span class="hljs-preprocessor">.Driver</span> type: <span class="hljs-keyword">com</span><span class="hljs-preprocessor">.alibaba</span><span class="hljs-preprocessor">.druid</span><span class="hljs-preprocessor">.pool</span><span class="hljs-preprocessor">.DruidDataSource</span> connectionProperties: druid<span class="hljs-preprocessor">.stat</span><span class="hljs-preprocessor">.mergeSql</span>=true <span class="hljs-preprocessor">#模板引擎</span> freemarker: <span class="hljs-preprocessor">#关闭缓存</span> cache: false request-context-attribute: request <span class="hljs-preprocessor">#模板加载的位置</span> template-loader-path: classpath:/templates <span class="hljs-preprocessor">#前缀</span> suffix: <span class="hljs-preprocessor">.htm</span> <span class="hljs-preprocessor">#后缀</span> prefix: /htm/ <span class="hljs-label">mybatis:</span> <span class="hljs-preprocessor">#实体类所做包</span> type-aliases-package: learning<span class="hljs-preprocessor">.model</span> <span class="hljs-preprocessor">#mapper.xml所在位置</span> mapper-locations: classpath:mappers<span class="hljs-comment">/\*.xml</span></code></pre> <p>在conf包下新建一个MybatisConfig类以配置使用PageHelper分页 <br> 代码如下</p> <pre class="prettyprint" name="code"><code class="hljs java has-numbering"><span class="hljs-annotation">@Configuration</span> <span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">MybatisConfig</span> {</span> <span class="hljs-annotation">@Bean</span> <span class="hljs-keyword">public</span> PageHelper <span class="hljs-title">pageHelper</span>(){ PageHelper pageHelper = <span class="hljs-keyword">new</span> PageHelper(); <span class="hljs-comment">//添加配置,也可以指定文件路径</span> Properties p = <span class="hljs-keyword">new</span> Properties(); p.setProperty(<span class="hljs-string">"offsetAsPageNum"</span>, <span class="hljs-string">"true"</span>); p.setProperty(<span class="hljs-string">"rowBoundsWithCount"</span>, <span class="hljs-string">"true"</span>); p.setProperty(<span class="hljs-string">"reasonable"</span>, <span class="hljs-string">"true"</span>); pageHelper.setProperties(p); <span class="hljs-keyword">return</span> pageHelper; } }</code></pre> <p>接着就可以编写实例类</p> <pre class="prettyprint" name="code"><code class="hljs cs has-numbering"><span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> Player { <span class="hljs-keyword">private</span> Integer id; <span class="hljs-keyword">private</span> String name; <span class="hljs-keyword">private</span> Double points; <span class="hljs-keyword">public</span> Integer <span class="hljs-title">getId</span>() { <span class="hljs-keyword">return</span> id; } <span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">setId</span>(Integer id) { <span class="hljs-keyword">this</span>.id = id; } <span class="hljs-keyword">public</span> String <span class="hljs-title">getName</span>() { <span class="hljs-keyword">return</span> name; } <span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">setName</span>(String name) { <span class="hljs-keyword">this</span>.name = name; } <span class="hljs-keyword">public</span> Double <span class="hljs-title">getPoints</span>() { <span class="hljs-keyword">return</span> points; } <span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">setPoints</span>(Double points) { <span class="hljs-keyword">this</span>.points = points; } } </code></pre> <p>dao接口</p> <pre class="prettyprint" name="code"><code class="hljs cs has-numbering"><span class="hljs-keyword">public</span> <span class="hljs-keyword">interface</span> PlayerDao { <span class="hljs-keyword">void</span> save (Player player); Player findByKey(Integer id); List<Player> findAll(); } </code></pre> <p>service接口以及实现</p> <pre class="prettyprint" name="code"><code class="hljs java has-numbering"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">interface</span> <span class="hljs-title">PlayerService</span> {</span> <span class="hljs-keyword">void</span> add(Player player); List<Player> getAll(); } <span class="hljs-annotation">@Service</span> <span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">PlayerServiceImpl</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">PlayerService</span>{</span> <span class="hljs-annotation">@Autowired</span> <span class="hljs-keyword">private</span> PlayerDao playerDao; <span class="hljs-annotation">@Override</span> <span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">add</span>(Player player) { playerDao.save(player); } <span class="hljs-annotation">@Override</span> <span class="hljs-keyword">public</span> List<Player> <span class="hljs-title">getAll</span>() { PageHelper.startPage(<span class="hljs-number">1</span>, <span class="hljs-number">2</span>); <span class="hljs-keyword">return</span> playerDao.findAll(); } }</code></pre> <p>在src/main/resources 下新建一个包mapppers用来存放mybatis的xml文件</p> <pre class="prettyprint" name="code"><code class="hljs xml has-numbering"><span class="hljs-pi"><?xml version="1.0" encoding="UTF-8" ?></span> <span class="hljs-doctype"><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" ></span> <span class="hljs-tag"><<span class="hljs-title">mapper</span> <span class="hljs-attribute">namespace</span>=<span class="hljs-value">"learning.mapper.PlayerDao"</span>></span> <span class="hljs-tag"><<span class="hljs-title">insert</span> <span class="hljs-attribute">id</span>=<span class="hljs-value">"save"</span>></span> INSERT INTO player (name,points) VALUES (#{name},#{points}) <span class="hljs-tag"></<span class="hljs-title">insert</span>></span> <span class="hljs-tag"><<span class="hljs-title">select</span> <span class="hljs-attribute">id</span>=<span class="hljs-value">"findByKey"</span> <span class="hljs-attribute">resultType</span>=<span class="hljs-value">"learning.model.Player"</span>></span> SELECT \* FROM player WHERE id = #{id} <span class="hljs-tag"></<span class="hljs-title">select</span>></span> <span class="hljs-tag"><<span class="hljs-title">select</span> <span class="hljs-attribute">id</span>=<span class="hljs-value">"findAll"</span> <span class="hljs-attribute">resultType</span>=<span class="hljs-value">"learning.model.Player"</span>></span> SELECT \* FROM player <span class="hljs-tag"></<span class="hljs-title">select</span>></span> <span class="hljs-tag"></<span class="hljs-title">mapper</span>></span></code></pre> <p>在src/main/resources在新建一个目录templates用来存放freemarker加载的模板 <br> <img src="http://img.blog.csdn.net/20170713091456316?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY21tY2hlbm1t/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这是我的项目结构" title=""></p> <p>随意编写一个freemarker 的模板html界面</p> <pre class="prettyprint" name="code"><code class="hljs xml has-numbering"><span class="hljs-doctype"><!DOCTYPE HTML></span> <span class="hljs-tag"><<span class="hljs-title">html</span>></span> <span class="hljs-tag"><<span class="hljs-title">head</span>></span> <span class="hljs-tag"></<span class="hljs-title">head</span>></span> <span class="hljs-tag"><<span class="hljs-title">body</span>></span> <span class="hljs-tag"><<span class="hljs-title">h3</span>></span>success<span class="hljs-tag"></<span class="hljs-title">h3</span>></span> <span class="hljs-tag"><<span class="hljs-title">#list</span> <span class="hljs-attribute">list</span> <span class="hljs-attribute">as</span> <span class="hljs-attribute">player</span>></span> ${player.name} : ${player.points} <span class="hljs-tag"><<span class="hljs-title">br</span>/></span> <span class="hljs-tag"></<span class="hljs-title">#list</span>></span> <span class="hljs-tag"></<span class="hljs-title">body</span>></span> <span class="hljs-tag"></<span class="hljs-title">html</span>></span></code></pre> <p>然后编写控制层代码</p> <pre class="prettyprint" name="code"><code class="hljs java has-numbering"><span class="hljs-annotation">@Controller</span> <span class="hljs-annotation">@RequestMapping</span>(<span class="hljs-string">"/Test"</span>) <span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">TestController</span> {</span> <span class="hljs-annotation">@Autowired</span> <span class="hljs-keyword">private</span> PlayerService playerService; <span class="hljs-annotation">@RequestMapping</span>(<span class="hljs-string">"/getAll"</span>) <span class="hljs-annotation">@ResponseBody</span> <span class="hljs-keyword">public</span> Object <span class="hljs-title">getAll</span>(){ Player player = <span class="hljs-keyword">new</span> Player(); player.setName(<span class="hljs-string">"杜兰特"</span>); player.setPoints(<span class="hljs-number">28.4</span>); player.setId(<span class="hljs-number">3</span>); <span class="hljs-keyword">return</span> player; } <span class="hljs-annotation">@RequestMapping</span>(<span class="hljs-string">"/all"</span>) <span class="hljs-annotation">@ResponseBody</span> <span class="hljs-keyword">public</span> Object <span class="hljs-title">get</span>(){ <span class="hljs-keyword">return</span> playerService.getAll(); } <span class="hljs-annotation">@RequestMapping</span>(<span class="hljs-string">"/add"</span>) <span class="hljs-keyword">public</span> String <span class="hljs-title">add</span>(Player player){ playerService.add(player); <span class="hljs-keyword">return</span> <span class="hljs-string">"test/hello"</span>; } <span class="hljs-annotation">@RequestMapping</span>(<span class="hljs-string">"/hello"</span>) <span class="hljs-keyword">public</span> String <span class="hljs-title">hello</span>(Model model) { List<Player> list = playerService.getAll(); model.addAttribute(<span class="hljs-string">"list"</span>,list); <span class="hljs-keyword">return</span> <span class="hljs-string">"test/hello"</span>; } </code></pre> <pre><code>最后编写项目的启动代码主要启动类的路径要在其他要扫描包的同级目录 如图AppStart </code></pre> <p><img src="http://img.blog.csdn.net/20170713092224913?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY21tY2hlbm1t/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这里写图片描述" title=""></p> <p>启动类代码</p> <pre class="prettyprint" name="code"><code class="hljs java has-numbering"><span class="hljs-annotation">@SpringBootApplication</span> <span class="hljs-comment">//这里是扫描dao接口的包用于识别mybatis</span> <span class="hljs-annotation">@MapperScan</span>(basePackages=<span class="hljs-string">"learning.mapper"</span>) <span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">AppStart</span> {</span> <span class="hljs-javadoc">/\*\* \*<span class="hljs-javadoctag"> @param</span> args \*/</span> <span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title">main</span>(String\[\] args) { SpringApplication.run(AppStart.class, args); } } </code></pre> <p>最后启动AppStart main 方法即可</p> <p><img src="http://img.blog.csdn.net/20170713093102853?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY21tY2hlbm1t/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这里写图片描述" title=""></p> <p>日志信息 <br> <img src="http://img.blog.csdn.net/20170713093153835?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY21tY2hlbm1t/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这里写图片描述" title=""></p> <p>这里是我的项目代码 <br> <a href="http://download.csdn.net/download/cmmchenmm/9897156" target="\_blank">http://download.csdn.net/download/cmmchenmm/9897156</a></p> <p>我将代码上传到了GitHub上了 <br> <a href="https://github.com/newShiJ/SpringBoot-Learing" target="\_blank">https://github.com/newShiJ/SpringBoot-Learing</a></p></div> <script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script> </div>