spring boot集成mybatis的详细介绍及代码

 

话不多说 直接上代码

 

 1.配置pom文件。添加对应的jar包

<?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>

  <groupId>cn.et</groupId>
  <artifactId>spring-boot-demo</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>
  
  <!--继承spring-boot的依赖 spring-boot 的核心依赖包  -->
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.9.RELEASE</version>
  </parent>

  <dependencies>
    <!-- springboot 每一个框架的集成都是一个starter  spring-boot-starter-web 加载javaee 内嵌tomcat -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

      <!-- 加了该配置文件 会自动启动数据库 -->
      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-data-jpa</artifactId>
      </dependency>

    <!-- 配置数据库的jar包  spring-boot不会给数据库的架包加载进去-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.44</version>
    </dependency>



    <!-- mybatis 的架包 父项目里面没有版本需要自己定义版本 -->
    <dependency>
      <groupId>org.mybatis.spring.boot</groupId>
      <artifactId>mybatis-spring-boot-starter</artifactId>
      <version>1.3.1</version>
    </dependency>



  </dependencies>

</project>

 

二、编写一个项目启动类:

package cn.et;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

//必须添加 @SpringBootApplication 启动spring的自动配置功能 必须要添加
@SpringBootApplication

//扫描mapper包 一般用于全局 (推荐使用) 或许在每个类上面加 @Mapper注解效果等价
@MapperScan("cn.et.**.mapper")

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

  @SpringBootApplication 这个注解是用来启动springboot的一定要有

@MapperScan("cn.et.**.mapper") 这个注解非常的关键,这个对应了项目中mapper(dao)所对应的包路径,很多同学就是这里忘了加导致异常的

 

三、在application.yml或者application.perproties里配置连接数据库的四要素,这两个文件在resouces目录下,springboot会自动去加载,在这里我是通过application.perproties,配置方式如下

#配置数据库四要素 键不可改变
spring.datasource.url=jdbc:mysql://localhost/test
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=123456

#如果要用xml的方式来写sql 就需要配置
mybatis.mapper-locations=classpath:**/*Mapper.xml

mybatis.mapper-locations:  如果是用xml的方式来写sql,就一定要配置这个,指向xml文件的位置

 

 

四、编写一个对应数据库表的实体类

package cn.et.demo02.model;

public class UserInfo {
    private String id;

    private String name;

    private String age;

    private String sex;

    public String getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }
}

 

五、编写一个持久层,(在这里为了给用注解的方式跟用xml方式都表现出来,我特意给有些方法用注解实现,有的方法用xml的方式实现)

package cn.et.demo02.mapper;

import cn.et.demo02.model.UserInfo;
import org.apache.ibatis.annotations.*;

import java.util.List;
//@Mapper
public interface UserInfoMapper {
    /**
     * 添加
     * @param userInfo
     */
    @Insert("insert into userInfo (uid,uname,uage,usex) VALUE(#{userInfo.id},#{userInfo.name},#{userInfo.age},#{userInfo.sex})")
    void insert(@Param("userInfo") UserInfo userInfo);

    /**
     * 删除
     * @param id
     */
    @Delete("delete from userInfo where uid=#{id}")
    void delete(@Param("id") String id);

    /**
     * 修改
     * @param userInfo
     */
    void update(@Param("userInfo") UserInfo userInfo);

    /**
     * 查询所有
     * @return
     */
    @Results({
        @Result(column = "uid",property = "id"),
        @Result(column = "uname",property = "name"),
        @Result(column = "uage",property = "age"),
        @Result(column = "usex",property = "sex")
    })
    @Select("select * from userInfo")
    List<UserInfo> getUserInfo();

    /**
     * 根据条件查询
     * @param userInfo
     * @return
     */
    List<UserInfo> getUserInfoQuery(@Param("userInfo") UserInfo userInfo);

    /**
     * 根据id查询单个
     * @param id
     * @return
     */
    UserInfo getUserInfoOne(@Param("id") String id);
}

 

六、编写service层。这一层主要是用来实现一些业务逻辑的代码,我这里其实就是一些简单的增删改查,要是觉得麻烦可以不写,可以直接通过controller调用mapper类,不过不推荐这么做

package cn.et.demo02.service;

import cn.et.demo02.model.UserInfo;

import java.util.List;

public interface UserInfoService {
    /**
     * 添加
     * @param userInfo
     */
    void insert(UserInfo userInfo);

    /**
     * 删除
     * @param id
     */
    void delete(String id);

    /**
     * 修改
     * @param userInfo
     */
    void update(UserInfo userInfo);

    /**
     * 查询所有
     * @return
     */
    List<UserInfo> getUserInfo();

    /**
     * 根据条件查询
     * @param userInfo
     * @return
     */
    List<UserInfo> getUserInfoQuery(UserInfo userInfo);

    /**
     * 根据id查询单个
     * @param id
     * @return
     */
    UserInfo getUserInfoOne(String id);
}

 

实现类

package cn.et.demo02.service.impl;

import cn.et.demo02.mapper.UserInfoMapper;
import cn.et.demo02.model.UserInfo;
import cn.et.demo02.service.UserInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
@Service
public class UserInfoSeriviceImpl implements UserInfoService {
    @Autowired
    UserInfoMapper userInfoMapper;


    @Override
    public void insert(UserInfo userInfo) {
        userInfoMapper.insert(userInfo);
    }

    @Override
    public void delete(String id) {
        userInfoMapper.delete(id);
    }

    @Override
    public void update(UserInfo userInfo) {
        userInfoMapper.update(userInfo);
    }

    @Override
    public List<UserInfo> getUserInfo() {
        return userInfoMapper.getUserInfo();
    }

    @Override
    public List<UserInfo> getUserInfoQuery(UserInfo userInfo) {
        return userInfoMapper.getUserInfoQuery(userInfo);
    }

    @Override
    public UserInfo getUserInfoOne(String id) {
        return userInfoMapper.getUserInfoOne(id);
    }
}

 

七、编写控制层

package cn.et.demo02.controller;

import cn.et.demo02.model.UserInfo;
import cn.et.demo02.service.UserInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@RequestMapping("demo02")
public class MybatisController {
    @Autowired
    UserInfoService userInfoService;

    /**
     * 添加
     * @param userInfo
     * @return
     */
    @RequestMapping("insert")
    public String insert(UserInfo userInfo){
        userInfoService.insert(userInfo);
        return "SUCCESS";
    }

    /**
     * 删除
     * @param id
     * @return
     */
    @RequestMapping("delete")
    public String delete(String id){
        userInfoService.delete(id);
        return "SUCCESS";
    }

    /**
     * 修改
     * @param userInfo
     * @return
     */
    @RequestMapping("update")
    public String update(UserInfo userInfo){
        userInfoService.update(userInfo);
        return "SUCCESS";
    }

    /**
     * 查询素有的数据
     * @return
     */
    @RequestMapping("getUserInfo")
    public List<UserInfo> getUserInfo(){
        return userInfoService.getUserInfo();
    }

    /**
     * 根据条件查询
     * @param userInfo
     * @return
     */
    @RequestMapping("getUserInfoQuery")
    public List<UserInfo> getUserInfoQuery(UserInfo userInfo){
        return userInfoService.getUserInfoQuery(userInfo);
    }

    /**
     * 根据id查询单个
     * @param id
     * @return
     */
    @RequestMapping("getUserInfoOne")
    public UserInfo getUserInfoOne(String id){
        return userInfoService.getUserInfoOne(id);
    }
}

 

八、运行效果

 

以上就是pring-boot的全部步骤,有问题的请留言

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值