zoukankan      html  css  js  c++  java
  • springboot整合mybatis(SSM开发环境搭建)&Springboot项目热部署

    0.项目结构:

    ---------------------方法一:使用mybatis官方提供的Spring Boot整合包实现---------------------

     1.application.properties中配置整合mybatis的配置文件、mybatis扫描别名的基本包与数据源

    server.port=80
    
    logging.level.org.springframework=DEBUG
    #springboot   mybatis
    #jiazai mybatis peizhiwenjian
    mybatis.mapper-locations = classpath:mapper/*Mapper.xml
    mybatis.config-location = classpath:mapper/config/sqlMapConfig.xml
    mybatis.type-aliases-package = cn.qlq.bean
    
    #shujuyuan
    spring.datasource.driver-class-name= com.mysql.jdbc.Driver
    spring.datasource.url = jdbc:mysql://localhost:3306/test1?useUnicode=true&characterEncoding=utf-8
    spring.datasource.username = root
    spring.datasource.password = 123456

     2.pom.xml加入springboot整合mybatis的jar包与数据库驱动包

    <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>cn.qlq</groupId>
      <artifactId>springboot-ssm</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <packaging>war</packaging>
      
      <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>1.5.2.RELEASE</version>
       </parent>
      
      <dependencies>
      
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</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-devtools</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>5.1.6</version>
            </dependency>
            
            
            
            
            
              <!-- 基本配置 -->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.9</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>servlet-api</artifactId>
                <version>2.5</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>jsp-api</artifactId>
                <version>2.0</version>
                <scope>provided</scope>
            </dependency>
            
        </dependencies>
      <build>
            <!-- 配置了很多插件 -->
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.5.1</version>  
                    <configuration>
                        <source>1.7</source>
                        <target>1.7</target>
                        <encoding>UTF-8</encoding>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
        
        
        
    </project>

    3.mybatis全局配置文件:

    sqlMapConfig.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE configuration
    PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>        
        
    </configuration>

    4.编写代码:

    (1)User.java

    package cn.qlq.bean;
    
    
    import java.io.Serializable;
    import java.util.Date;
    
    public class User implements Serializable{
        
        /**
         * 
         */
        private static final long serialVersionUID = 1L;
        private Integer id;    
        private String username;
        private Date birthday;
        private String sex;
        private String address;
        
        
        
        public Integer getId() {
            return id;
        }
        public void setId(Integer id) {
            this.id = id;
        }
        public Date getBirthday() {
            return birthday;
        }
        public void setBirthday(Date birthday) {
            this.birthday = birthday;
        }
        public String getSex() {
            return sex;
        }
        public void setSex(String sex) {
            this.sex = sex;
        }
        public String getUsername() {
            return username;
        }
        public void setUsername(String username) {
            this.username = username;
        }
        public String getAddress() {
            return address;
        }
        public void setAddress(String address) {
            this.address = address;
        }
        
        
    
    }

    (2)UserMapper.java  (注意接口上的注解是@mapper,代替之前扫描接口的操作)

    package cn.qlq.mapper;
    
    
    import java.util.List;
    
    import org.apache.ibatis.annotations.Mapper;
    
    import cn.qlq.bean.User;
    
    @Mapper
    public interface UserMapper {
        
        public List<User> findAll();
    
    }

    UserMapper.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="cn.qlq.mapper.UserMapper">
        <select id="findAll" resultType="user">
            select * from user
        </select>
    </mapper>

    (3)

    UserService.java

    package cn.qlq.service;
    
    
    import java.util.List;
    
    import cn.qlq.bean.User;
    
    
    public interface UserService {
        
        /**
         * 根据接口查询所用的用户
         */
        public List<User> findAllUser();
    }

    UserServiceImpl.java

    package cn.qlq.service.impl;
    
    
    import java.util.List;
    import java.util.Map;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import cn.qlq.bean.User;
    import cn.qlq.mapper.UserMapper;
    import cn.qlq.service.UserService;
    
    @Service
    public class UserServiceImpl implements UserService {
        
        @Autowired
        private UserMapper userMapper;
        
        
        public List<User> findAllUser() {
            List<User> list = userMapper.findAll();
            return list;
        }
    
    
    }

    (4)UserController.java

    package cn.qlq.action;
    
    
    import java.util.List;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import cn.qlq.bean.User;
    import cn.qlq.service.UserService;
    
    
    @RestController/**自动返回的是json格式数据***/
    public class UserController {
        
        @Autowired
        private UserService userService;
    
        @RequestMapping("list")
        public List<User> list(){
            List<User> list = userService.findAllUser();
            return list;
        }
    }

    注意:@RestController  注解  (自动返回的是json格式数据)

    (5)测试类

    MySpringBootApplication.java

    package cn.qlq;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cache.annotation.EnableCaching;
    @SpringBootApplication
    public class MySpringBootApplication {
        
        public static void main(String[] args) {        
            //入口运行类
            SpringApplication.run(MySpringBootApplication.class, args);
            
        }
    
    }

    4.启动测试

    git源码地址:  https://github.com/qiao-zhi/springboot-ssm 

    ---------------方法二:使用mybatis-spring整合的方式,也就是我们传统的方式--------------

    这里我们推荐使用第二种,因为这样我们可以很方便的控制Mybatis的各种配置。

    首先,创建一个Mybatis的配置类:

    代码:

    package cn.qlq.config;
    
    import javax.sql.DataSource;
    
    import org.mybatis.spring.SqlSessionFactoryBean;
    import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.core.io.Resource;
    import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
    import org.springframework.core.io.support.ResourcePatternResolver;
    
    @Configuration
        public class MyBatisConfig {
    
            @Bean
            @ConditionalOnMissingBean //当容器里没有指定的Bean的情况下创建该对象
            public SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource) {
                SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
                // 设置数据源
                sqlSessionFactoryBean.setDataSource(dataSource);
                // 设置mybatis的主配置文件
                ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
                Resource mybatisConfigXml = resolver.getResource("classpath:mybatis/SqlMapConfig.xml");
                sqlSessionFactoryBean.setConfigLocation(mybatisConfigXml);
                // 设置别名包
                sqlSessionFactoryBean.setTypeAliasesPackage("cn.qlq.bean");
                return sqlSessionFactoryBean;
            }
        }

    然后,创建Mapper接口的扫描类MapperScannerConfig:

    package cn.qlq.config;
    
    import org.mybatis.spring.mapper.MapperScannerConfigurer;
    import org.springframework.boot.autoconfigure.AutoConfigureAfter;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    @AutoConfigureAfter(MyBatisConfig.class) //保证在MyBatisConfig实例化之后再实例化该类
    public class MapperScannerConfig {
        
        // mapper接口的扫描器
        @Bean
        public MapperScannerConfigurer mapperScannerConfigurer() {
            MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
            mapperScannerConfigurer.setBasePackage("cn.qlq.mapper");
            return mapperScannerConfigurer;
        }
    }

    创建一个spring配置类,扫描的包,与读取的资源文件,创建数据源:

    package cn.qlq.config;
    
    import javax.sql.DataSource;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.PropertySource;
    
    import com.jolbox.bonecp.BoneCPDataSource;
    
    @Configuration // 通过该注解来表明该类是一个Spring的配置,相当于一个xml文件
    @ComponentScan(basePackages = "cn.qlq") // 配置扫描包
    @PropertySource(value = { "classpath:db.properties"}, ignoreResourceNotFound = true)
    public class SpringConfig {
    
        @Value("${jdbc.url}")
        private String jdbcUrl;
    
        @Value("${jdbc.driverClassName}")
        private String jdbcDriverClassName;
    
        @Value("${jdbc.username}")
        private String jdbcUsername;
    
        @Value("${jdbc.password}")
        private String jdbcPassword;
    
        @Bean(destroyMethod = "close")
        public DataSource dataSource() {
            BoneCPDataSource boneCPDataSource = new BoneCPDataSource();
            // 数据库驱动
            boneCPDataSource.setDriverClass(jdbcDriverClassName);
            // 相应驱动的jdbcUrl
            boneCPDataSource.setJdbcUrl(jdbcUrl);
            // 数据库的用户名
            boneCPDataSource.setUsername(jdbcUsername);
            // 数据库的密码
            boneCPDataSource.setPassword(jdbcPassword);
            // 检查数据库连接池中空闲连接的间隔时间,单位是分,默认值:240,如果要取消则设置为0
            boneCPDataSource.setIdleConnectionTestPeriodInMinutes(60);
            // 连接池中未使用的链接最大存活时间,单位是分,默认值:60,如果要永远存活设置为0
            boneCPDataSource.setIdleMaxAgeInMinutes(30);
            // 每个分区最大的连接数
            boneCPDataSource.setMaxConnectionsPerPartition(100);
            // 每个分区最小的连接数
            boneCPDataSource.setMinConnectionsPerPartition(5);
            return boneCPDataSource;
        }
    
    }

    application.properties:

    server.port=80
    
    logging.level.org.springframework=DEBUG
    #springboot   mybatis
    #jiazai mybatis peizhiwenjian
    #mybatis.mapper-locations = classpath:mapper/*Mapper.xml
    #mybatis.config-location = classpath:mapper/config/sqlMapConfig.xml
    #mybatis.type-aliases-package = cn.qlq.bean
    
    #shujuyuan
    spring.datasource.driver-class-name= com.mysql.jdbc.Driver
    spring.datasource.url = jdbc:mysql://localhost:3306/test1?useUnicode=true&characterEncoding=utf-8
    spring.datasource.username = root
    spring.datasource.password = 123456

    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>cn.qlq</groupId>
        <artifactId>springboot-ssm</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>war</packaging>
    
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>1.5.2.RELEASE</version>
        </parent>
    
        <dependencies>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</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-devtools</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>5.1.6</version>
            </dependency>
    
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-tx</artifactId>
                <version>4.3.7.RELEASE</version>
            </dependency>
    
    
    
    
    
            <!-- 基本配置 -->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.9</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>servlet-api</artifactId>
                <version>2.5</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>jsp-api</artifactId>
                <version>2.0</version>
                <scope>provided</scope>
            </dependency>
    
            <!-- Mybatis -->
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.2.7</version>
            </dependency>
            <!-- Mybatis整合Spring -->
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis-spring</artifactId>
                <version>1.2.2</version>
            </dependency>
            <!-- 连接池 -->
            <dependency>
                <groupId>com.jolbox</groupId>
                <artifactId>bonecp-spring</artifactId>
                <version>0.8.0.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jdbc</artifactId>
            </dependency>
        </dependencies>
        <build>
            <!-- 配置了很多插件 -->
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.5.1</version>
                    <configuration>
                        <source>1.7</source>
                        <target>1.7</target>
                        <encoding>UTF-8</encoding>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    
    
    </project>

    2.启动测试:

      总结:我在使用过程中一开始是采用方式二搭建的环境,并且也是基于方式二整合的Mybatis的Pagehelper。但是在打成jar包运行的时候一直报一个错误,在MybatisConfig报错,所以最后我选择采用第一种方式搭建环境。现在上面的git地址也是基于第一种方式整合,但是提交记录有基于第二种的。git上面的项目也正在完善。目前已经整合; SpringTask、freemarker、thymeleaf等。。。。

     补充:springboot项目热部署

    1.第一种是基于springloaded

                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <!-- spring热部署 -->
                    <dependencies>
                        <dependency>
                            <groupId>org.springframework</groupId>
                            <artifactId>springloaded</artifactId>
                            <version>1.2.6.RELEASE</version>
                        </dependency>
                    </dependencies>
                </plugin>

      这种方式不需要引入spring-boot-devtools相关依赖。

      对dubug模式启动的 SpringBootApplication 有效,run模式启动的无效。对以maven方式运行的:spring-boot:run 也是有效的。 

    2.第二种是基于devtools

    pom加入如下配置:

            <!--热加载 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
            </dependency>

    application.properties里面增加如下配置:

    #u70EDu52A0u8F7D
    spring.devtools.livereload.enabled=true
    #u70EDu90E8u7F72
    spring.devtools.restart.enabled=false

      对dubug模式启动的 SpringBootApplication 有效,  run模式启动的无效,对以maven方式运行的:spring-boot:run 也是无效的。 

      这两种方式亲测有效。

  • 相关阅读:
    access 驱动在win64位出现问题
    apace搭建站点
    laravel邮件发送问题总结
    django orm order_by 根据汉字首字母排序 [ORDER BY CONVERT(name USING gbk)ASC]查询
    linux centos7 django uwsgi 部署
    linux centos7 yum卸载 安装
    centos7 部署gitlab并汉化
    linux nginx uwsgi django
    mac swoole入门使用
    mac 安装mongodb,PHP添加mongodb的扩展
  • 原文地址:https://www.cnblogs.com/qlqwjy/p/8463822.html
Copyright © 2011-2022 走看看