6_3.springboot2.x数据整合Mybatis(注解和非注解)

1、配置文件

pom.xml

导入mybatis提供的启动器

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

 

application.yml

spring:
  datasource:
    username: root
    password: 123456
    url: jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone = GMT
    driver-class-name: com.mysql.cj.jdbc.Driver
    initialization-mode: always
    type: com.alibaba.druid.pool.DruidDataSource
    #   数据源其他配置
    initialSize: 5
    minIdle: 5
    maxActive: 20
    maxWait: 60000
    timeBetweenEvictionRunsMillis: 60000
    minEvictableIdleTimeMillis: 300000
    validationQuery: SELECT 1 FROM DUAL
    testWhileIdle: true
    testOnBorrow: false
    testOnReturn: false
    poolPreparedStatements: true
    #   配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
    filters: stat,wall,log4j
    maxPoolPreparedStatementPerConnectionSize: 20
    useGlobalDataSourceStat: true
    connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500

Druid数据源配置:

package com.spboot.springboot.config;

import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.sql.DataSource;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

@Configuration
public class DruidConfig {
    @ConfigurationProperties("spring.datasource")
    @Bean
    public DataSource druid(){
        return new DruidDataSource();
    }
    //配置Druid监控
    //1.配置一个管理后台的servlet
    @Bean
    public ServletRegistrationBean StatViewServlet(){
        ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
        Map<String,String> initParams = new HashMap<String ,String >();
        initParams.put("loginUsername","admin");
        initParams.put("loginPassword","123456");
        initParams.put("allow","");//默认允许所有
        initParams.put("deny","192.168.1.1");
        bean.setInitParameters(initParams);
        return bean;
    }

    //2.配置一个web监控的filter
    @Bean
    public FilterRegistrationBean WebStatFilter(){

        FilterRegistrationBean bean = new FilterRegistrationBean();
        bean.setFilter(new WebStatFilter());
        Map<String,String> initParams = new HashMap<String ,String >();
        initParams.put("exclusions","*.js,*.css,/druid/*");
        bean.setInitParameters(initParams);
        bean.setUrlPatterns(Arrays.asList("/*"));
        return bean;
    }



}

 

2、注解版

1、pojo类

package com.spboot.springboot.pojo;

public class Department {
    private Integer id;
    private String DepartmentName;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getDepartmentName() {
        return DepartmentName;
    }

    public void setDepartmentName(String departmentName) {
        DepartmentName = departmentName;
    }
}

2、新建Mybatis配置类

自定义MyBatis的配置规则;给容器中添加一个ConfigurationCustomizer

package com.spboot.springboot.config;

import org.apache.ibatis.session.Configuration;
import org.mybatis.spring.annotation.MapperScan;
import org.mybatis.spring.boot.autoconfigure.ConfigurationCustomizer;
import org.springframework.context.annotation.Bean;

@MapperScan(value = "com.spboot.springboot.mapper")
@org.springframework.context.annotation.Configuration
public class MybatisConfig {

    @Bean
    public ConfigurationCustomizer configurationCustomizer() {
        return new ConfigurationCustomizer() {
            @Override
            public void customize(Configuration configuration) {
                configuration.setMapUnderscoreToCamelCase(true);
            }

        };

    }

}

如果使用@MapperScan(value = "com.spboot.springboot.mapper")注解,则会扫描mapper包下的所有mapper接口,也可以单独在mapper接口类中一一配置。

3、mapper接口

package com.spboot.springboot.mapper;

import com.spboot.springboot.pojo.Department;
import org.apache.ibatis.annotations.*;

//告诉这是一个操作数据库的mapper
//@Mapper
public interface DepartmentMapper {

    @Select("select * from department where id=#{id}")
    public Department getDeptById(Integer id);

    @Delete("delete from department where id=#{id}")
    public int deleteDepartmentById(Integer id);

    @Options(useGeneratedKeys = true,keyProperty = "id")
    @Insert("insert into department(department_name) values(#{department_name})")
    public int insertDepart(Department department);

    @Update("update department set department_name=#{department_name} where id=#{id}")
    public int updateDept(Department department);
}

4、controller

@RestController
public class controller {
    @Autowired
    DepartmentMapper mapper;

    @RequestMapping("/dept/{id}")
    public Department getDepartment(@PathVariable("id") Integer id){

       return mapper.getDeptById(id);
    }
    @RequestMapping("/dept")
    public Department insertDepartment(Department department){
        mapper.insertDepart(department);
        return department;

    }
}

测试:

3、配置文件版

1、pojo

package com.spboot.springboot.pojo;

public class Employee {
    private Integer id;
    private String lastName;
    private Integer gender;
    private String email;
    private Integer dId;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public Integer getGender() {
        return gender;
    }

    public void setGender(Integer gender) {
        this.gender = gender;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public Integer getdId() {
        return dId;
    }

    public void setdId(Integer dId) {
        this.dId = dId;
    }
}

2、mapper接口

package com.spboot.springboot.mapper;

import com.spboot.springboot.pojo.Employee;

//将接口扫描到容器中 @mapper
public interface EmployeeMapper {

    public Employee getEmpById(Integer id);

    public void insertEmpty(Employee employee);
}

3、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="mapUnderscoreToCamelCase" value="true"/>
</settings>
    </configuration>
<setting name="mapUnderscoreToCamelCase" value="true"/>启用从数据库列名A_COLUMN到驼峰式经典Java属性名aColumn的自动映射

 

4、EmployeeMapper.xml

mapper映射文件

<?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.spboot.springboot.mapper.EmployeeMapper">

    <select id="getEmpById" resultType="com.spboot.springboot.pojo.Employee">
    SELECT * FROM employee WHERE id = #{ID}
    </select>

    <insert id="insertEmpty">
    INSERT Into employee (lastName,email,gender,d_id) values (#{lastName},#{email},#{gender},#{d_id})
    </insert>

</mapper>

 

注意关键一步:在application.yml加载mybaits配置文件包括(mybatis-config.xml和*Mapper.xml)

5、controller

  @Autowired
    EmployeeMapper employeeMapper;

    @RequestMapping("/emp/{id}")
    public Employee getEmp(@PathVariable("id") Integer id){
        return employeeMapper.getEmpById(id);
    }

 

测试:

 

 

ok 完成!

 

posted @ 2019-10-06 11:34  杰醍奋  阅读(244)  评论(0编辑  收藏  举报