zoukankan      html  css  js  c++  java
  • SpringBoot+Mybatis整合实例

    前言

    大家都知道springboot有几大特点;能创建独立的Spring应用程序;能嵌入Tomcat,无需部署WAR文件;简化Maven配置;自动配置Spring等等。这里整合mybatis,创建一个简单的springboot实例。

    创建一个springboot项目

    • 按照以下步骤进行


    • 注意:此处只选择web

    • 这时,我们的项目就创建完成了,先测试一下

    • 找到启动类,运行

    • 地址栏查看

    • 我们也可以通过window命令窗口启动

    整合mybatis

    看一下文件的目录结构以及作用



    文件内容

    maven依赖(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>1.5.9.RELEASE</version>
    		<relativePath/> <!-- lookup parent from repository -->
    	</parent>
    	<groupId>com.example</groupId>
    	<artifactId>nikeo</artifactId>
    	<version>0.0.1-SNAPSHOT</version>
    	<name>BootWeb</name>
    	<description>Demo project for Spring Boot</description>
    
    
    	<properties>
    		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    		<version.spring>4.3.14.RELEASE</version.spring>
    		<version.jackson>2.6.5</version.jackson>
    		<java.version>1.8</java.version>
    		<shiro.version>1.4.0</shiro.version>
    		<skiptests>true</skiptests>
    	</properties>
    
    	<dependencies>
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-thymeleaf</artifactId>
    		</dependency>
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-jdbc</artifactId>
    		</dependency>
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-actuator</artifactId>
    		</dependency>
    
    
    		<dependency>
    			<groupId>org.mybatis</groupId>
    			<artifactId>mybatis-spring</artifactId>
    			<version>1.2.2</version>
    		</dependency>
    		<dependency>
    			<groupId>org.mybatis</groupId>
    			<artifactId>mybatis</artifactId>
    			<version>3.2.8</version>
    		</dependency>
    
    		<dependency>
    			<groupId>org.mybatis.spring.boot</groupId>
    			<artifactId>mybatis-spring-boot-starter</artifactId>
    			<version>1.3.1</version>
    		</dependency>
    
    
    		<dependency>
    			<groupId>org.apache.tomcat</groupId>
    			<artifactId>tomcat-jdbc</artifactId>
    		</dependency>
    
    		<dependency>
    			<groupId>mysql</groupId>
    			<artifactId>mysql-connector-java</artifactId>
    			<version>5.1.14</version>
    		</dependency>
    
    	</dependencies>
    
    	<build>
    		<plugins>
    			<plugin>
    				<groupId>org.springframework.boot</groupId>
    				<artifactId>spring-boot-maven-plugin</artifactId>
    			</plugin>
    		</plugins>
    	</build>
    
    	<repositories>
    		<repository>
    			<id>spring-milestone</id>
    			<url>https://repo.spring.io/libs-release</url>
    		</repository>
    	</repositories>
    
    	<pluginRepositories>
    		<pluginRepository>
    			<id>spring-milestone</id>
    			<url>https://repo.spring.io/libs-release</url>
    		</pluginRepository>
    	</pluginRepositories>
    
    </project>
    
    

    核心配置文件(application.properties)也可以命名成yml格式(application.yml)

    server.port=8088
    
    spring.datasource.url=jdbc:mysql://127.0.0.1:3306/sys?useUnicode=true&characterEncoding=utf8
    spring.datasource.username=root
    spring.datasource.password=root
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    
    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
    spring.datasource.poolPreparedStatements=true
    spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
    spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
    spring.datasource.useGlobalDataSourceStat=true
    
    spring.mvc.view.prefix=classpath:/templates/
    spring.mvc.view.suffix=.html
    
    spring.thymeleaf.mode=HTML5
    spring.thymeleaf.encoding=UTF-8
    spring.thymeleaf.content-type=text/html
    spring.thymeleaf.cache=false
    
    spring.thymeleaf.prefix = classpath:/static/
    spring.thymeleaf.suffix = .html
    
    
    

    配置文件(mybatis-config.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>
        <!-- 全局参数 -->
        <settings>
            <!-- 使全局的映射器启用或禁用缓存-->
            <setting name="cacheEnabled" value="true"/>
            <!-- 是否可以使用列的别名 (取决于驱动的兼容性) default:true -->
            <setting name="useColumnLabel" value="true"/>
            <!-- 使用驼峰命名法转换字段-->
            <setting name="mapUnderscoreToCamelCase" value="true"/>
    
            <setting name="callSettersOnNulls" value="true"/>
    
            <setting name="defaultStatementTimeout" value="25000" />
    
        </settings>
    
    </configuration>
    

    Controller类

    package com.example.nikeo.controller;
    
    import com.example.nikeo.entity.Student;
    import com.example.nikeo.service.StudentService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.http.ResponseEntity;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import java.util.List;
    
    /**
     * Created by nikeodong on 2018/8/24.
     */
    @RestController
    public class StudentController {
    
        @Autowired
        private StudentService studentService;
    
        @RequestMapping("/list")
        public ResponseEntity<?> list(){
            List<Student> student = studentService.list();
            return ResponseEntity.ok(student);
        }
    }
    
    

    Service类

    package com.example.nikeo.service;
    
    import com.example.nikeo.entity.Student;
    import com.example.nikeo.mapper.StudentMapper;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import java.util.List;
    
    /**
     * Created by nikeodong on 2018/8/24
     */
    @Service
    public class StudentService {
    
        @Autowired
        StudentMapper studentMapper;
    
        public List<Student> list(){
            return studentMapper.list();
        }
    }
    
    

    映射类

    package com.example.nikeo.mapper;
    
    import com.example.nikeo.entity.Student;
    import org.springframework.stereotype.Repository;
    
    import java.util.List;
    
    /**
     * Created by nikeodong on 2018/8/24
     */
    @Repository
    public interface StudentMapper {
        List<Student> list();
    }
    
    

    映射文件

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.2//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
    
    <mapper namespace="com.example.nikeo.mapper.StudentMapper">
        <select id="list" resultType="Student">
            SELECT * FROM student;
        </select>
    </mapper>
    

    实体类

    package com.example.nikeo.entity;
    
    /**
     * Created by nikeodong on 2018/8/24
     */
    public class Student {
    
        private Integer id;
        private String name;
        private String address;
        private Integer age;
    
        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 String getAddress() {
            return address;
        }
    
        public void setAddress(String address) {
            this.address = address;
        }
    
        public Integer getAge() {
            return age;
        }
    
        public void setAge(Integer age) {
            this.age = age;
        }
    }
    
    

    调整心跳类

    package com.example.nikeo;
    
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.mybatis.spring.SqlSessionFactoryBean;
    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.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.core.io.ClassPathResource;
    import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
    import org.springframework.jdbc.datasource.DataSourceTransactionManager;
    import org.springframework.transaction.PlatformTransactionManager;
    
    import javax.sql.DataSource;
    
    @MapperScan(basePackages = {"com.example.nikeo.mapper"})
    @SpringBootApplication
    @EnableAutoConfiguration
    @ComponentScan
    public class BootWebApplication {
    
    	public static void main(String[] args) {
    		SpringApplication.run(BootWebApplication.class, args);
    	}
    
    	@Bean
    	@ConfigurationProperties(prefix="spring.datasource")
    	public DataSource dataSource() {
    		return new org.apache.tomcat.jdbc.pool.DataSource();
    	}
    
    	@Bean
    	public SqlSessionFactory sqlSessionFactoryBean() throws Exception {
    		SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
    		sqlSessionFactoryBean.setConfigLocation(new ClassPathResource("config/mybatis-config.xml"));
    		sqlSessionFactoryBean.setTypeAliasesPackage("com.example.nikeo.entity");
    		sqlSessionFactoryBean.setDataSource(dataSource());
    		PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
    		sqlSessionFactoryBean.setMapperLocations(resolver.getResources("classpath:/mybatis/*.xml"));
    		return sqlSessionFactoryBean.getObject();
    	}
    
    	@Bean
    	public PlatformTransactionManager transactionManager() {
    		return new DataSourceTransactionManager(dataSource());
    	}
    
    }
    
    

    测试

  • 相关阅读:
    Elasticsearch:用户安全设置
    Elasticsearch:significant terms aggregation
    Elastic:Elastic部署架构介绍
    Elasticsearch:Smart Chinese Analysis plugin
    Elasticsearch:ICU分词器介绍
    新版本中的hits.total匹配数说明
    Elasticsearch:fuzzy 搜索 (模糊搜索)
    Elasticsearch:运用search_after来进行深度分页
    Elasticsearch:运用scroll接口对大量数据实现更好的分页
    Elasticsearch:search template
  • 原文地址:https://www.cnblogs.com/nikeodong/p/10768824.html
Copyright © 2011-2022 走看看