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 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 findAll(){
List 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没加载进去,或者加载进去了,但位置是不对的,也会出现这种错误。
解决方法:pom.xml加入如下配置,不加这些配置导致的后果,你在编译完之后会发现target文件夹下面没有你的xxx.xml文件,原因是因为我们的mapper配置文件是放在java下的,如果你放在resouce文件下是没问题的,能加载。放在java下需要配置,通知它编译到classes里面去,因为程序运行走的是编译后的字节文件。编译完后,xml也编译了。第二个就是需要看下你编译后文件的位置是否与你配置的位置一致,如果一致,就可以正常访问。
以上是mybatis整合需要注意的地方。
其次就是关于注解的学习,大部分跟springmvc的rest风格相似,有些注解需要以后实际开发中学习。
@MapperScan("com.example.demo.dao")
扫描这个包下mapper接口,同时也可以扫描多个接口。
@RestController
控制器标识,所有请求响应格式为json