springboot+mybatis整合

 

今天将springboot和mybatis整合了一下,记录一下自己的整合过程,都是在网上东拼西凑出来的东西,作为一个简单的demo还是可以拿来用一用的,以前在2017年12月的时候也整合过一个的,但是年代久远,而且这个期间也没有使用springboot,所以一直还停留在入门的阶段。
springboot快速的将一些常用的第三方依赖整合(原理:通过Maven子父工程的方式),简化XML配置,全部采用注解形式,内置Http服务器(Jetty和Tomcat)。

这个工程主架构是springboot+mybatis,解析页面是freemark,并用了Generrator根据表名自动生成代码
 

工程目录接口

pom.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<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>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>study.springboot</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>RELEASE</version>
            <scope>compile</scope>
        </dependency>

        <!-- 引入 freemarker 模板依赖 -->
        <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-freemarker</artifactId>
        </dependency>

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.2</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.10</version>
        </dependency>

        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core  代码生成器-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>2.3</version>
        </dependency>

        <!-- 模板引擎 -->
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.0</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

 

application.properties配置文件

############################################################
#
# freemarker配置
#
############################################################
#模板文件路径(不推荐使用)
spring.freemarker.template-loader-path=classpath:/templates
#关闭缓存即时刷新,生产环境需要改成true;
spring.freemarker.cache=false
spring.freemarker.charset=UTF-8
spring.freemarker.check-template-location=true
spring.freemarker.content-type=text/html
spring.freemarker.expose-request-attributes=true
spring.freemarker.expose-session-attributes=true
spring.freemarker.request-context-attribute=request
spring.freemarker.suffix=.html

############################################################
#
# 数据库 druid配置
#
############################################################
# 数据库访问配置
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=gbk&zeroDateTimeBehavior=convertToNull&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
# 下面为连接池的补充设置,应用到上面所有数据源中
spring.datasource.initialSize=5
spring.datasource.minIdle=5
spring.datasource.maxActive=20
# 配置获取连接等待超时的时间
spring.datasource.maxWait=60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
spring.datasource.timeBetweenEvictionRunsMillis=60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
spring.datasource.minEvictableIdleTimeMillis=300000
spring.datasource.validationQuery=SELECT 1 FROM DUAL
spring.datasource.testWhileIdle=true
spring.datasource.testOnBorrow=false
spring.datasource.testOnReturn=false
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
spring.datasource.filters=stat,wall,log4j
spring.datasource.logSlowSql=true


# 注意:对应实体类的路径,多个package之间可以用逗号
mybatis.type-aliases-package=study.springboot.demo.bean
#注意:一定要对应mapper映射xml文件的所在路径
mybatis.mapper-locations=classpath:mapper/*.xml
#sql日志输出
logging.level.study.springboot.demo.dao=debug 

 

controller
 

package study.springboot.demo.controller;


import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.stereotype.Controller;
import study.springboot.demo.entity.NovelMain;
import study.springboot.demo.service.NovelMainService;

import java.util.List;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author wangbiao
 * @since 2019-07-25
 */
@Controller
@RequestMapping("/novelMain")
public class NovelMainController {

    @Autowired
    private NovelMainService novelMainService;

    @RequestMapping("/selectNovelList")
    public String selectNovelList(Model model){
        List<NovelMain> novelMainList = novelMainService.selectNovelList();
        model.addAttribute("novelList",novelMainList);
       return "novel/novelList";
    }
}

 

service接口

package study.springboot.demo.service;

import study.springboot.demo.entity.NovelMain;
import com.baomidou.mybatisplus.service.IService;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author wangbiao
 * @since 2019-07-25
 */
public interface NovelMainService extends IService<NovelMain> {
     List<NovelMain> selectNovelList();
}

service实现类
 

package study.springboot.demo.service.impl;

import org.springframework.beans.factory.annotation.Autowired;
import study.springboot.demo.entity.NovelMain;
import study.springboot.demo.dao.NovelMainMapper;
import study.springboot.demo.service.NovelMainService;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author wangbiao
 * @since 2019-07-25
 */
@Service
public class NovelMainServiceImpl extends ServiceImpl<NovelMainMapper, NovelMain> implements NovelMainService {
    @Autowired
    private NovelMainMapper novelMainMapper;
    public List<NovelMain> selectNovelList(){
        return novelMainMapper.selectList(null);
    }
}


dao层

package study.springboot.demo.dao;

import org.springframework.stereotype.Repository;
import study.springboot.demo.entity.NovelMain;
import com.baomidou.mybatisplus.mapper.BaseMapper;

/**
 * <p>
 *  Mapper 接口
 * </p>
 *
 * @author wangbiao
 * @since 2019-07-25
 */
@Repository
public interface NovelMainMapper extends BaseMapper<NovelMain> {

}

mybatis map.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="study.springboot.demo.mapper.NovelMainMapper">


    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="study.springboot.demo.entity.NovelMain">
        <id column="id" property="id" />
        <result column="novel_name" property="novelName" />
        <result column="author" property="author" />
        <result column="novel_type" property="novelType" />
        <result column="novel_start_time" property="novelStartTime" />
        <result column="word_count" property="wordCount" />
        <result column="novel_status" property="novelStatus" />
        <result column="create_time" property="createTime" />
        <result column="update_time" property="updateTime" />
        <result column="novel_pic" property="novelPic" />
    </resultMap>

    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, novel_name, author, novel_type, novel_start_time, word_count, novel_status, create_time, update_time, novel_pic
    </sql>

</mapper>

 前端页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
 <table border="1" cellspacing="0" cellpadding="0">
     <tr>
         <td>名称</td><td>作者</td><td>类型</td><td>开写时间</td>
     </tr>
     <#list novelList as novel>
        <tr>
            <td>${novel.novelName}</td>
            <td>${novel.author}</td>
            <td>${novel.novelType}</td>
            <td>${novel.novelStartTime?string('yyyy-MM-dd HH:mm:ss')}</td>
        </tr>
    </#list>
 </table>
</body>
</html>

 

 代码生成器,这个地方生成map.xml文件不在resources文件夹下的mapper文件里,是在study.springboot.demo包下面的mapper文件夹里,所以生成后,还得将mapper.xml移到resources下面

package study.springboot.demo.main;

import com.baomidou.mybatisplus.enums.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.DbType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

import java.sql.SQLException;

/**
 * 代码生成器
 */
public class MyBatisPlusGenerator {

    public static void main(String[] args) throws SQLException {

        //1. 全局配置
        GlobalConfig config = new GlobalConfig();
        config.setActiveRecord(true) // 是否支持AR模式
                .setAuthor("wangbiao") // 作者
                .setOutputDir("/Users/wangbiao/Documents/core/test/springbootstudy/src/main/java") // 生成路径
                .setFileOverride(true)  // 文件覆盖
                .setEnableCache(false)  //不要生成二级缓存
                .setIdType(IdType.AUTO) // 主键策略
                .setServiceName("%sService")  // 设置生成的service接口的名字的首字母是否为I
                // IEmployeeService
                .setBaseResultMap(true)//生成基本的resultMap
                .setBaseColumnList(true);//生成基本的SQL片段

        //2. 数据源配置
        DataSourceConfig  dsConfig  = new DataSourceConfig();
        dsConfig.setDbType(DbType.MYSQL)  // 设置数据库类型
                .setDriverName("com.mysql.jdbc.Driver")
                .setUrl("jdbc:mysql://127.0.0.1:3306/test")
                .setUsername("root")
                .setPassword("123456");

        //3. 策略配置globalConfiguration中
        StrategyConfig stConfig = new StrategyConfig();
        stConfig.setCapitalMode(true) //全局大写命名
                .setDbColumnUnderline(true)  // 指定表名 字段名是否使用下划线
                .setNaming(NamingStrategy.underline_to_camel) // 数据库表映射到实体的命名策略
                .setTablePrefix("t_")
                .setInclude("t_novel_main");  // 生成的表

        //4. 包名策略配置
        PackageConfig pkConfig = new PackageConfig();
        pkConfig.setParent("study.springboot.demo")
                .setMapper("dao")//dao
                .setService("service")//servcie
                .setController("controller")//controller
                .setEntity("entity")//entity
                .setXml("mapper");//mapper.xml

        //5. 整合配置
        AutoGenerator  ag = new AutoGenerator();
        ag.setGlobalConfig(config)
                .setDataSource(dsConfig)
                .setStrategy(stConfig)
                .setPackageInfo(pkConfig);

        //6. 执行
        ag.execute();
    }

}

 

启动工程后控制台的输出

 

http://localhost:8080/novelMain/selectNovelList访问页面
 

创建表的sql语句

CREATE TABLE `t_novel_main` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `novel_name` varchar(30) DEFAULT NULL COMMENT '小说名称',
  `author` varchar(30) DEFAULT NULL COMMENT '作者',
  `novel_type` varchar(11) DEFAULT NULL COMMENT '小说类型',
  `novel_start_time` datetime DEFAULT NULL COMMENT '小说开始时间',
  `word_count` int(11) DEFAULT NULL COMMENT '小说字数',
  `novel_status` int(11) DEFAULT NULL COMMENT '小说状态,1:连载,2:完结',
  `create_time` datetime DEFAULT NULL,
  `update_time` datetime DEFAULT NULL,
  `novel_pic` varchar(200) DEFAULT NULL COMMENT '小说图片',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

下面是工程的下载地址:https://download.csdn.net/download/wangbiao007/11431398
我想将它设成0分下载的,但是没有看到设置的地方,要下载的小伙伴对不起啦

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章