zoukankan      html  css  js  c++  java
  • Spring Boot整合MyBatis(使用Spring Tool Suite工具)

    1. 创建Spring Boot项目

    通过Spring Tool SuiteSpring Starter Project对话框,其实是把项目生成的工作委托http://start.spring.io上的Spring Initializr来做的,因此必须联网才能使用这一功能。

    1.1 解决创建Spring Boot项目时遇到的问题



    右键项目 --> Java EE Tools --> Generate Deployment Descriptor Stub

    Help --> Install New SoftWare


    https://otto.takari.io/content/sites/m2e.extras/m2eclipse-mavenarchiver/0.17.2/N/LATEST/
    安装完成后就重启Spring Tool Suite,然后右键项目Maven --> Update Project

    2. 编写配置文件

    package com.example.demo;
    
    import org.springframework.boot.builder.SpringApplicationBuilder;
    import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
    
    public class ServletInitializer extends SpringBootServletInitializer {
    
    	@Override
    	protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
    		return application.sources(DemoApplication.class);
    	}
    
    }
    
    package com.example.demo;
    
    import org.mybatis.spring.annotation.MapperScan;
    import org.springframework.boot.SpringApplication;
    //import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.context.annotation.ComponentScan;
    
    import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure;
    
    @SpringBootApplication(exclude={DruidDataSourceAutoConfigure.class})
    //@EnableAutoConfiguration(exclude={DruidDataSourceAutoConfigure.class})
    @ComponentScan(basePackages="com.example")
    @MapperScan(basePackages="com.example.mapper")
    public class DemoApplication {
    
    	public static void main(String[] args) {
    		SpringApplication.run(DemoApplication.class, args);
    	}
    
    }
    
    //我们需要类似于web.xml的配置方式来启动spring上下文了,在Application类的同级添加一个SpringBootStartApplication类
    //参考:https://blog.csdn.net/liupantao/article/details/74942833
    package com.example.demo;
    
    import org.springframework.boot.builder.SpringApplicationBuilder;
    import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
    
    public class SpringBootStartApplication extends SpringBootServletInitializer {
    
    	@Override
    	protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
    		return builder.sources(DemoApplication.class);
    	}
    	
    }
    

    我们删除src/main/resources目录下的application.properties文件,新建一个application.yml文件。
    相关阅读:Spring Boot的 yml和properties的对比

    # application.yml
    server:
      port: 8080
      servlet:
       context-path: /demo
    
    spring:
      mvc:
        view:
          prefix: /WEB-INF/views/
          suffix: .jsp
      datasource:
        type: com.alibaba.druid.pool.DruidDataSource
        driver-class-name: com.mysql.jdbc.Driver
        url: jdbc:mysql://localhost:3306/demosql?useSSL=false
        username: root
        password: root
        
    mybatis:
      config-location: classpath:mybatis-config.xml
      mapper-locations: classpath:mapping/*.xml
      type-aliases-package: com.example.entity
    

    2.1 MyBatis自动生成代码

    参考:Mybatis Generator最完整配置详解
    pom.xml文件中配置一下mybatis-generator-maven-plugin即可。

    <?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.1.RELEASE</version>
    		<relativePath/> <!-- lookup parent from repository -->
    	</parent>
    	<groupId>com.example</groupId>
    	<artifactId>demo</artifactId>
    	<version>0.0.1-SNAPSHOT</version>
    	<packaging>war</packaging>
    	<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-web</artifactId>
    			<!-- 打包的时候以war包形式,这里要把springboot集成的tomcat去除 -->
    			<exclusions>
    				<exclusion>
    					<groupId>org.springframework.boot</groupId>
    					<artifactId>spring-boot-starter-tomcat</artifactId>
    				</exclusion>
    			</exclusions>
    		</dependency>
    		<dependency>
    			<groupId>org.mybatis.spring.boot</groupId>
    			<artifactId>mybatis-spring-boot-starter</artifactId>
    			<version>1.3.2</version>
    		</dependency>
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-tomcat</artifactId>
    			<scope>provided</scope>
    		</dependency>
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-test</artifactId>
    			<scope>test</scope>
    		</dependency>
    		
    		<!-- mysql -->
    		<dependency>
    		    <groupId>mysql</groupId>
    		    <artifactId>mysql-connector-java</artifactId>
    		    <version>5.1.38</version><!--$NO-MVN-MAN-VER$-->
    		</dependency>
    		
    		<!-- alibaba的druid数据库连接池 -->
    		<dependency>
    			<groupId>com.alibaba</groupId>
    			<artifactId>druid-spring-boot-starter</artifactId>
    			<version>1.1.0</version>
    		</dependency>
    		
    		<!-- 热部署模块 -->
    		<dependency>
    		    <groupId>org.springframework.boot</groupId>
    		    <artifactId>spring-boot-devtools</artifactId>
    		    <optional>true</optional> <!-- 这个需要为 true 热部署才有效 -->
    		</dependency>
    	</dependencies>
    
    	<build>
    		<finalName>demo</finalName>
    		<plugins>
    			<plugin>
    				<groupId>org.springframework.boot</groupId>
    				<artifactId>spring-boot-maven-plugin</artifactId>
    			</plugin>
    			<!-- mybatis generator 自动生成代码插件 -->
    			<plugin>
    				<groupId>org.mybatis.generator</groupId>
    				<artifactId>mybatis-generator-maven-plugin</artifactId>
    				<version>1.3.2</version>
    				<configuration>
    					<configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile>
    					<overwrite>true</overwrite>
    					<verbose>true</verbose>
    				</configuration>
    			</plugin>
    		</plugins>
    	</build>
    
    </project>
    
    <!-- generatorConfig.xml -->
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE generatorConfiguration
            PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
            "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
    <generatorConfiguration>
        <!-- 数据库驱动:选择你的本地硬盘上面的数据库驱动包-->
        <classPathEntry  location="E:RepMavenmysqlmysql-connector-java5.1.38mysql-connector-java-5.1.38.jar"/>
        <context id="mysql"  targetRuntime="MyBatis3">
            <!--数据库链接URL,用户名、密码 -->
            <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql:///demosql" userId="root" password="root">
            </jdbcConnection>
            <javaTypeResolver>
                <property name="forceBigDecimals" value="false"/>
            </javaTypeResolver>
            <!-- 生成模型的包名和位置-->
            <javaModelGenerator targetPackage="com.example.entity" targetProject="src/main/java">
                <property name="enableSubPackages" value="true"/>
                <property name="trimStrings" value="true"/>
            </javaModelGenerator>
            <!-- 生成映射文件的包名和位置-->
            <sqlMapGenerator targetPackage="com.example.mapper.mapping" targetProject="src/main/java">
                <property name="enableSubPackages" value="true"/>
            </sqlMapGenerator>
            <!-- 生成DAO的包名和位置-->
            <javaClientGenerator type="XMLMAPPER" targetPackage="com.example.mapper" targetProject="src/main/java">
                <property name="enableSubPackages" value="true"/>
            </javaClientGenerator>
            <!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名-->
            <table tableName="t_user" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>
        </context>
    </generatorConfiguration>
    

    创建数据库和表(手动创建- -)。

    执行mybatis-generator:generate命令即可。

    3. 编写源码以及启动项目

    package com.example.controller;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    import com.example.entity.User;
    import com.example.service.UserService;
    
    @RequestMapping("/hjj")
    @Controller
    public class UserController {
    	@Autowired
    	private UserService userService;
    
    	@RequestMapping("test")
    	public String test(){
    		return "test";
    	}
    	
    	@ResponseBody
    	@RequestMapping("/getUserById/{id}")
    	public User getUserById(@PathVariable("id")Integer id){
    		return userService.getUserById(id);
    	}
    }
    
    package com.example.service;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import com.example.entity.User;
    import com.example.mapper.UserMapper;
    
    @Service
    public class UserService {
    
    	@Autowired
    	private UserMapper userMapper;
    	
    	public User getUserById(Integer id){
    		return userMapper.selectByPrimaryKey(id);
    	}
    }
    

    将项目放到Tomcat就可以启动运行了。


    注意:Maven打包项目时,在src/main/java目录下的Java文件会被编译成class文件,而其他类型的文件会被忽略。
    下载源码:https://pan.baidu.com/s/1uTapGFlPpKnrmwVA6woKGg 提取码:9wsn

  • 相关阅读:
    登录注册测试用例
    礼盒抽奖测试点
    jmeter性能测试
    selenium的常用API及案例演示
    jmeter+ant+jenkins接口自动化测试框架
    开源性能测试工具jmeter
    Jmeter响应断言,性能测试,定时器,cookie
    Charles的介绍,配置与使用
    异常捕获以及文件的相关操作
    函数封装及面向对象
  • 原文地址:https://www.cnblogs.com/gzhjj/p/10120483.html
Copyright © 2011-2022 走看看