springBoot整合spring、springMVC、mybatis

前文

     1、为什么使用springBoot

              众所周知,spring是Java在搭建后台时非常实用的框架,其整合了市场上几乎所有的主流框架于一体,使后端编程更加高效、快速;

              而SpringBoot更是把spring的优势发挥到了极致,声称零配置,简化版spring,只需要使用几行代码,是一个微服务框架。

              它确实做到了,这也是他的牛逼之处,成功不是没有道理。

搭载环境

      1、IDE工具:Eclipse

        2、JDK版本:1.8+

        3、持久层:Mybaits

        4、数据库:Mysql

步骤

       【01】创建一个简单的maven项目(创建普通项目就可以,可以打包成jar,毕竟SpringBoot是一个微服务框架)

              

如果项目没有 src/main/resources文件夹,请按照链接所示创建文件夹:https://www.cnblogs.com/zhangyuanqiang/p/9183908.html

         【02】加入Springboot、Mybaits、mysql依赖和打包设置,JDK版本

<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>1026</groupId>
	<artifactId>springBoot</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>springBoot</name>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>
	<!-- Spingboot相关jar包版本 -->
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.5.RELEASE</version>
	</parent>

	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>3.8.1</version>
			<scope>test</scope>
		</dependency>
		<!-- Springboot核心jar包 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
		</dependency>
		<!-- web开发包:包含Tomcat和Springmvc -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<!-- spring-boot热部署 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
		</dependency>
		<!-- mysql jar包 -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>6.0.6</version>
		</dependency>
		<!-- mybatis-spring-boot jar包 -->
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>1.3.2</version>
		</dependency>

	</dependencies>
	<build>
		<plugins>
		    <!-- 打包mainClass设置 -->
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<mainClass>com.springBoot.App</mainClass>
				</configuration>
			</plugin>
			<!--JDK版本 -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>2.5.1</version>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
					<encoding>UTF-8</encoding>
					<showWarnings>true</showWarnings>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

  

  【03】设置SpringBoot启动类(这里使用创建初始的类作用启动类),启动类里加上注解用于给出需要扫描的mapper文件路径@MapperScan("XXXX") 

注意:下文App.java为启动类,在com.springBoot这个包下面,之后新建的controller、entity、service都要在这个包下面,不然会报异常:Class not found

  【03】创建配置文件

不使用application.properties文件 而使用更加简洁的application.yml文件。创建application.yml配置文件(备注:其实SpringBoot底层会把application.yml文件解析为application.properties),本文创建了两个yml文件(application.yml和application-dev.yml),分别来看一下内容(-dev是开发环境配置,后续可以新建-prod生产环境配置,通过active节点切换,便于项目管理):

application.yml:

spring:
  profiles:
    active: dev 
   

application-dev.yml(已经设置mysql连接、log日志、mybatis的mapper位置和实体类别名):

server:
  port: 8078
  session-timeout: 30
  tomcat.max-threads: 0
  tomcat.uri-encoding: UTF-8
  
# springboot-mybatis dateSource options
spring:
  datasource:
    username: root
    password: HZBhzb1237763522-1
    url: jdbc:mysql://localhost:3306/TestDB?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
    driver-class-name: com.mysql.jdbc.Driver
    
# mybatis mapping propreties
mybatis:
  mapper-locations: classpath:mapping/*Mapper.xml
  type-aliases-package: com.springBoot.domain
 
# showSql
logging:
  level:
    com:
      springBoot:
        mapper : debug

  【04】完整的目录结构

完整代码:

 App.java

package com.springBoot;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
/**
 *项目启动类
 */

@MapperScan("com.springBoot.mapper") //扫描的mapper
@SpringBootApplication
public class App extends SpringBootServletInitializer 
{
    public static void main( String[] args )
    {
        SpringApplication.run(App.class, args);  //关键代码
    }
    
    @Override//为了打包springboot项目
    protected SpringApplicationBuilder configure(
            SpringApplicationBuilder builder) {
        return builder.sources(this.getClass());
    }
}
View Code

UserController.java

package com.springBoot.controller;



import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.springBoot.domain.UserBean;
import com.springBoot.service.UserService;
@SuppressWarnings("all")
@Controller
@RequestMapping(value="/springBoot")
public class UserController {
    
    @Autowired
    UserService UserServiceImpl;
    
    @RequestMapping(value="/User")
    @ResponseBody
    public void hello(HttpServletRequest request,HttpServletResponse response) throws Exception{
        String Name=request.getParameter("UserName");
        UserBean user=UserServiceImpl.checkUser(Name,"");
        if(null==user) 
            response.getWriter().write("Login was failed!");
        else
            response.getWriter().write("Login was successed!");
    }
    
}
View Code

UserBean.java

package com.springBoot.domain;

public class UserBean {
     private String rowid;
     private String col_userName;
     private String col_password;
     private String col_email;
     private String col_createdOn;
     private String col_createdBy;
     private String col_modifiedOn;
     private String col_modifiedBy;
     
     
    public String getRowid() {
        return rowid;
    }
    public void setRowid(String rowid) {
        this.rowid = rowid;
    }
    public String getCol_userName() {
        return col_userName;
    }
    public void setCol_userName(String col_userName) {
        this.col_userName = col_userName;
    }
    public String getCol_password() {
        return col_password;
    }
    public void setCol_password(String col_password) {
        this.col_password = col_password;
    }
    public String getCol_email() {
        return col_email;
    }
    public void setCol_email(String col_email) {
        this.col_email = col_email;
    }
    public String getCol_createdOn() {
        return col_createdOn;
    }
    public void setCol_createdOn(String col_createdOn) {
        this.col_createdOn = col_createdOn;
    }
    public String getCol_createdBy() {
        return col_createdBy;
    }
    public void setCol_createdBy(String col_createdBy) {
        this.col_createdBy = col_createdBy;
    }
    public String getCol_modifiedOn() {
        return col_modifiedOn;
    }
    public void setCol_modifiedOn(String col_modifiedOn) {
        this.col_modifiedOn = col_modifiedOn;
    }
    public String getCol_modifiedBy() {
        return col_modifiedBy;
    }
    public void setCol_modifiedBy(String col_modifiedBy) {
        this.col_modifiedBy = col_modifiedBy;
    }
    @Override
    public String toString() {
        return "UserBean [rowid=" + rowid + ", col_userName=" + col_userName + ", col_password=" + col_password
                + ", col_email=" + col_email + ", col_createdOn=" + col_createdOn + ", col_createdBy=" + col_createdBy
                + ", col_modifiedOn=" + col_modifiedOn + ", col_modifiedBy=" + col_modifiedBy + "]";
    }
     
     
}
View Code

UserMapper.java

package com.springBoot.mapper;

import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Service;

import com.springBoot.domain.UserBean;
@Service
public interface UserMapper {
    /**
     * check user 
     * @param userName
     * @param password
     * @param UserBean object
     * */
    UserBean checkUser(@Param(value="userName") String userName,@Param(value="password") String password);
}
View Code

UserService.java

package com.springBoot.service;

import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import org.springframework.stereotype.Service;

import com.springBoot.domain.UserBean;
public interface UserService {
    /**
     * check user 
     * @param userName
     * @param password
     * @param UserBean object
     * */
    UserBean checkUser( String userName,String password);
}
View Code

UserServiceImpl.java

package com.springBoot.service.impl;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.springBoot.domain.UserBean;
import com.springBoot.mapper.UserMapper;
import com.springBoot.service.UserService;
@Service
public class UserServiceImpl implements UserService {

    @Autowired 
    UserMapper userMapper;
    

    @Override
    public UserBean checkUser(String userName, String password) {
        // TODO Auto-generated method stub
        return userMapper.checkUser(userName, password);
    }

}
View Code

ClientMapper.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="com.springBoot.mapper.UserMapper">
    <resultMap type="UserBean" id="ClientList">
        <id property="rowid" column="rowid" />
        <result property="col_userName" column="col_userName" />
        <result property="col_password" column="col_password" />
        <result property="col_email" column="col_email" />
        <result property="col_createdOn" column="col_createdOn" />
        <result property="col_createdBy" column="col_createdBy" />
        <result property="col_modifiedOn" column="col_modifiedOn" />
        <result property="col_modifiedBy" column="col_modifiedBy" />

    </resultMap>

    <!-- 查询 -->
    <select id="checkUser" resultMap="ClientList" >
        select *
        from tb_user
        WHERE
        col_userName=#{userName}
    </select>
    
</mapper>
View Code

application.yml

spring:
  profiles:
    active: dev  # use properties by application-dev.yml
   
View Code

application-dev.yml

server:
  port: 8078
  session-timeout: 30
  tomcat.max-threads: 0
  tomcat.uri-encoding: UTF-8
  
# springboot-mybatis dateSource options
spring:
  datasource:
    username: root
    password: HZBhzb1237763522-1
    url: jdbc:mysql://39.108.217.125:3306/TestDB?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
    driver-class-name: com.mysql.jdbc.Driver
    
# mybatis mapping propreties
mybatis:
  mapper-locations: classpath:mapping/*Mapper.xml
  type-aliases-package: com.springBoot.domain
 
# showSql
logging:
  level:
    com:
      springBoot:
        mapper : debug
View Code

测试:

http://localhost:8078/springBoot/User?UserName=root

原文地址:https://www.cnblogs.com/hzb462606/p/11189414.html