springboot整合mybatis实现增删改查流程以及易错点

Springboot+mybatis+mysql实现增删改查操作。

在昨天学习的springboot的入门程序上进行扩展开发。首先建立好项目目录结构,如图:

整个流程类似ssm整合,controller—》service—》dao ,接口访问xml。这个写完的结构如下:

   

里面具体源码跟ssm写的差不多,我大概贴出一些

这是入口,@MapperScan注解是扫描mapper接口的意思。

package com.example.demo;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;


@SpringBootApplication
@MapperScan("com.example.demo.dao")
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

mapper接口,@Mapper注解是标识,能够自动加载被扫描。

package com.example.demo.dao;

import com.example.demo.pojo.Person;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;
@Mapper
public interface PersonMapper {
    void insert(Person person);
    Person select(Integer id);
    int update(Person person);
    int delete(Integer id);
    List<Person> findAll();
}

Controller类,@RestController注解,所有返回都为json

package com.example.demo.controller;

import com.example.demo.dao.PersonMapper;
import com.example.demo.pojo.Person;
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
public class Controller01 {

    @Autowired(required = false)
    private PersonMapper mapper;

    @RequestMapping("/insert")
    public String insert(){
        Person p=new Person();
        p.setName("www");
        p.setTel("12315");
        mapper.insert(p);
        return "success";
    }

    @RequestMapping("/findAll")
    public List<Person> findAll(){
        List<Person> personList=mapper.findAll();
        return personList;
    }

    @RequestMapping("/select")
    public Person select(Integer id){
        Person p=mapper.select(id);
        return p;
    }

    @RequestMapping("delete")
    public int delete(Integer id){
        int i=mapper.delete(id);
        return i;
    }

    @RequestMapping("/update")
    public String  update(Person p){
        mapper.update(p);
        return "SUCCESS";
    }

}

至于xml文件自己编写即可。大概流程和注解就是这样,springboot工程就是不用手动配置那么多信息,通过注解就行。流程简单,也会出错。

springboot有如下几点还是非常值得注意的。

把基本模块全部写完之后,会考虑spring依赖注入的问题。在spring中有一个容器,那个用的是一个application.xml来配置数据源,事务,数据工厂一系列的配置。Springboot基本上完全自动把服务做好了,这里需要配置的就是数据源,文件位置application.property。整合mybatis还需要把xml的位置配置到里面,不然当你请求时它会报错,报错就是说找不到这个配置文件,Invalid bound statement (not found):这个原因就是你的xml没加载进去,或者加载进去了,但位置是不对的,也会出现这种错误。http://static.oschina.net/uploads/img/201608/02093607_K6lF.jpg

解决方法:pom.xml加入如下配置,不加这些配置导致的后果,你在编译完之后会发现target文件夹下面没有你的xxx.xml文件,原因是因为我们的mapper配置文件是放在java下的,如果你放在resouce文件下是没问题的,能加载。放在java下需要配置,通知它编译到classes里面去,因为程序运行走的是编译后的字节文件。编译完后,xml也编译了。第二个就是需要看下你编译后文件的位置是否与你配置的位置一致,如果一致,就可以正常访问。

 

以上是mybatis整合需要注意的地方。

其次就是关于注解的学习,大部分跟springmvc的rest风格相似,有些注解需要以后实际开发中学习。

@MapperScan("com.example.demo.dao")

扫描这个包下mapper接口,同时也可以扫描多个接口。

@RestController

控制器标识,所有请求响应格式为json

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值