SpringBoot 使用yml配置 mybatis+pagehelper+druid+freemarker实例

SpringBoot 使用yml配置 mybatis+pagehelper+druid+freemarker实例

这是一个简单的SpringBoot整合实例

这里是项目的结构目录

这里写图片描述

首先是pom.xml


<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>Ming</groupId>
  <artifactId>SpringBoot</artifactId>
  <version>0.0.1-SNAPSHOT</version>

   <!-- Spring Boot 启动父依赖 -->
  <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>1.5.4.RELEASE</version>
  </parent>

  <properties>
      <mybatis-spring-boot>1.2.0</mybatis-spring-boot>
      <mysql-connector>5.1.39</mysql-connector>
      <druid>1.0.18</druid>
      <java.version>1.8</java.version>
  </properties>

  <dependencies>

       <!-- Spring Boot Web 依赖 -->
       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-web</artifactId>
       </dependency>

       <!-- Spring Boot Mybatis 依赖 -->
       <dependency>
           <groupId>org.mybatis.spring.boot</groupId>
           <artifactId>mybatis-spring-boot-starter</artifactId>
           <version>1.1.1</version>
       </dependency>

       <!-- MySQL 连接驱动依赖 -->
       <dependency>
           <groupId>mysql</groupId>
           <artifactId>mysql-connector-java</artifactId>
           <version>${mysql-connector}</version>
       </dependency>

       <!-- Druid 数据连接池依赖 -->
       <dependency>
           <groupId>com.alibaba</groupId>
           <artifactId>druid</artifactId>
           <version>${druid}</version>
       </dependency>

       <!-- 分页插件 -->  
       <dependency>  
           <groupId>com.github.pagehelper</groupId>  
           <artifactId>pagehelper</artifactId>  
           <version>4.1.6</version>  
       </dependency>  

       <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-freemarker</artifactId>
       </dependency>        
   </dependencies>

</project>

接着在src/main/resources目录下新建一个application.yml文件

server:
  port: 8080

logging:
  level: 
    learning: trace

spring:
  #数据源配置
  datasource:
    url: jdbc:mysql://localhost:3306/test
    username: root
    password: 123456
    driver-class-name: com.mysql.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource
    connectionProperties: druid.stat.mergeSql=true
  #模板引擎
  freemarker:
    #关闭缓存
    cache: false
    request-context-attribute: request
    #模板加载的位置
    template-loader-path: classpath:/templates
    #前缀
    suffix: .htm
    #后缀
    prefix: /htm/

mybatis:
  #实体类所做包
  type-aliases-package: learning.model
  #mapper.xml所在位置
  mapper-locations: classpath:mappers/*.xml

在conf包下新建一个MybatisConfig类以配置使用PageHelper分页
代码如下

@Configuration
public class MybatisConfig {
    @Bean
    public PageHelper pageHelper(){
        PageHelper pageHelper = new PageHelper();  
        //添加配置,也可以指定文件路径
        Properties p = new Properties();
        p.setProperty("offsetAsPageNum", "true");
        p.setProperty("rowBoundsWithCount", "true");
        p.setProperty("reasonable", "true");
        pageHelper.setProperties(p);
        return pageHelper;
    }
}

接着就可以编写实例类

public class Player {
    private Integer id;
    private String name;
    private Double points;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Double getPoints() {
        return points;
    }
    public void setPoints(Double points) {
        this.points = points;
    }
}

dao接口

public interface PlayerDao {
    void save (Player player);

    Player findByKey(Integer id);

    List<Player> findAll();
}

service接口以及实现

public interface PlayerService {
    void add(Player player);

    List<Player> getAll();
}

@Service
public class PlayerServiceImpl implements PlayerService{

    @Autowired
    private PlayerDao playerDao;

    @Override
    public void add(Player player) {
        playerDao.save(player);
    }

    @Override
    public List<Player> getAll() {
        PageHelper.startPage(1, 2);
        return playerDao.findAll();
    }

}

在src/main/resources 下新建一个包mapppers用来存放mybatis的xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="learning.mapper.PlayerDao">
    <insert id="save">
        INSERT INTO player (name,points) VALUES (#{name},#{points})
    </insert>   

    <select id="findByKey" resultType="learning.model.Player">
        SELECT * FROM player WHERE id = #{id}
    </select>

    <select id="findAll" resultType="learning.model.Player">
        SELECT * FROM player
    </select>   
</mapper>

在src/main/resources在新建一个目录templates用来存放freemarker加载的模板
这是我的项目结构

随意编写一个freemarker 的模板html界面

<!DOCTYPE HTML>
<html>
<head>
</head>
<body>
    <h3>success</h3>
    <#list list as player>
        ${player.name} : ${player.points} <br/>
    </#list>

</body>
</html>

然后编写控制层代码

@Controller
@RequestMapping("/Test")
public class TestController {
    @Autowired
    private PlayerService playerService;

    @RequestMapping("/getAll")
    @ResponseBody
    public Object getAll(){
        Player player = new Player();
        player.setName("杜兰特");
        player.setPoints(28.4);
        player.setId(3);
        return player;              
    }

    @RequestMapping("/all")
    @ResponseBody
    public Object get(){
        return playerService.getAll();
    }

    @RequestMapping("/add")
    public String add(Player player){
        playerService.add(player);
        return "test/hello";
    }

    @RequestMapping("/hello")
    public String hello(Model model) {
        List<Player> list = playerService.getAll();
        model.addAttribute("list",list);
        return "test/hello";
    }
最后编写项目的启动代码主要启动类的路径要在其他要扫描包的同级目录
如图AppStart

这里写图片描述

启动类代码

@SpringBootApplication
//这里是扫描dao接口的包用于识别mybatis
@MapperScan(basePackages="learning.mapper")
public class AppStart {
    /**
     * @param args
     */
    public static void main(String[] args) {
        SpringApplication.run(AppStart.class, args);
    }
}

最后启动AppStart main 方法即可

这里写图片描述

日志信息
这里写图片描述

这里是我的项目代码
http://download.csdn.net/download/cmmchenmm/9897156

我将代码上传到了GitHub上了
https://github.com/newShiJ/SpringBoot-Learing

posted @ 2018-01-13 16:18  星朝  阅读(2623)  评论(0编辑  收藏  举报