Springboot集成Mybatis

Springboot 集成mybatis

 

  一、导入Mybatis、JDBC、MySQL的starter

      

   二、导入dbcp2或者c3p0的连接池依赖

  <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-dbcp2</artifactId>
        </dependency>

  三、在application.properties中设置相关的属性

    

#Mysql服务器属性配置
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/myschedule?serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=250019

#Mysql连接池
spring.datasource.type=org.apache.commons.dbcp2.BasicDataSource
spring.datasource.dbcp2.initial-size=10
spring.datasource.dbcp2.max-total=30
spring.datasource.dbcp2.max-wait-millis=1000
spring.datasource.dbcp2.max-idle=10

#mybatis 配置信息
mybatis.mapper-locations=classpath:mapper/*.xml
#转换驼峰与下划线命名法
mybatis.configuration.map-underscore-to-camel-case=true
mybatis.configuration.use-generated-keys=true
mybatis.type-aliases-package=com.snapshot2.demo.entiry
mybatis.type-handlers-package=com.snapshot2.demo.typehandler

 

  四、创建mapper接口层,使用@Repository注解声明这是Mapper接口

    

@Repository
public interface LocationDao {

    /**
     * 根据UserId 获得Location
     * @param userId long
     * @return Location
     */
    public Location getLocationByUserId(long userId);

    /**
     * 给一个User 插入一个 Location
     * @param userId long
     * @param country String
     * @param province String
     * @param city String
     * @return int 操作成功(1),失败(0)
     */
    public int addLocation(@Param("userId")long userId,
                          @Param("country")String country,
                          @Param("province")String province,
                          @Param("city")String city);

}

  五、创建entity实体类层,与数据库中的每张表对应     

    entity 层的创建,映射数据库里的表信息(entity使用驼峰,数据库中使用下划线,保证字段两者相对应)可以使用@Alias来创建别名

    

package com.snapshot2.demo.entiry;

import org.apache.ibatis.type.Alias;

@Alias("location")
public class Location {
    private long user_id;
    private String country;
    private String province;
    private String city;

    public long getUser_id() {
        return user_id;
    }

    public void setUser_id(long user_id) {
        this.user_id = user_id;
    }

    public String getCountry() {
        return country;
    }

    public void setCountry(String country) {
        this.country = country;
    }

    public String getProvince() {
        return province;
    }

    public void setProvince(String province) {
        this.province = province;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }
}

  六、在resource下创建一个mapper文件夹,存放mapper.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.snapshot2.demo.dao.LocationDao">
    <select id="getLocationByUserId" resultType="Location" parameterType="long">
        select user_id, country, province, city
        from location
        where user_id = #{userId}
    </select>

    <insert id="addLocation" keyProperty="userId" keyColumn="user_id" >
      insert into location (user_id,country,province,city)
      values (#{userId},#{country},#{province},#{city})
    </insert>
</mapper>

   七、在程序启动入口使用@MapperSacn注解扫描mapper接口的包

      

    

package com.snapshot2.demo;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.stereotype.Repository;
//扫描Mapper接口
@MapperScan(basePackages = "com.snapshot2.demo.dao",annotationClass = Repository.class)
@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);

    }
}

 

 

      

posted @ 2018-12-22 19:50  Weeeeew  阅读(406)  评论(0编辑  收藏  举报