springboot 之整合 mybatis

本文详细介绍如何在SpringBoot项目中整合MyBatis,包括配置数据库连接、编写POJO、Mapper、Service及Controller,实现数据的增删改查操作,并介绍全局异常处理的设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上一篇介绍了springBoot的基本概念,启动得方式以及它的一些核心注解,这篇会将之与mybatis整合做一个简单得demo,

接下来直接看代码,我们首先来看看它应该加载那些pom文件:

<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>com.kfit</groupId>  
<artifactId>spring-boot-mybatis</artifactId>
<version>0.0.1-SNAPSHOT</version>  
<packaging>jar</packaging>

<name>spring-boot-mybatis</name>  
<url>http://maven.apache.org</url>
  
<!-- spring boot parent节点,引入这个之后,在下面和spring boot相关的就不需要引入版本了;-->    <parent>        
<groupId>org.springframework.boot</groupId>        
<artifactId>spring-boot-starter-parent</artifactId>        <version>1.5.9.RELEASE</version>    
</parent>

  <dependencies>                
<!-- web⽀支持: 1、web mvc; 2、restful; 3、jackjson⽀支持; 4、aop ........ -->        <dependency>            
<groupId>org.springframework.boot</groupId>            
<artifactId>spring-boot-starter-web</artifactId>        
</dependency>
                
<!-- mysql 数据库驱动. -->        
<dependency>                
<groupId>mysql</groupId>                
<artifactId>mysql-connector-java</artifactId>        
</dependency>                   
<!-- spring-boot mybatis依赖:请不不要使⽤用1.0.0版本,因为还不不⽀支持拦截器件,            1⼤大家使⽤用新版本即可 -->
      
<dependency>            
<groupId>org.mybatis.spring.boot</groupId>            
<artifactId>mybatis-spring-boot-starter</artifactId>            <version>1.3.1</version>        
</dependency>
                        
<!-- MyBatis提供了拦截器接口,我们可以实现⾃⼰的拦截器, 将其作为一个plugin装入到SqlSessionFactory中。  Github上有位开发者写了了一个分页插件,我觉得使用起来还可以,挺⽅便的。  Github项目地址: https://github.com/pagehelper/Mybatis-PageHelper
它同时提供了 springboot 的快速模式
      
<dependency>          
<groupId>com.github.pagehelper</groupId>          <artifactId>pagehelper</artifactId>          
<version>5.0.2</version>      
</dependency>     -->

 <!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelperspring-boot-starter   pagerhelper的springboot 配置方式 -->      

<dependency>          
<groupId>com.github.pagehelper</groupId>          
<artifactId>pagehelper-spring-boot-starter</artifactId>          <version>1.2.3</version>      
</dependency>
          
</dependencies> 
</project>




之后我们来看一下有关于数据库得一些配置,我们放在application.properties 文件当中

spring.datasource.url = jdbc:mysql://localhost:3306/test 
spring.datasource.username = root 
spring.datasource.password = qishimeiyoumima 
spring.datasource.driverClassName = com.mysql.jdbc.Driver 
spring.datasource.max-active=20 spring.datasource.max-idle=8 
spring.datasource.min-idle=8 spring.datasource.initial-size=10 spring.http.encoding.charset= UTF-8

下面我们建立一个简单得pojo

public class Demo {    

private long id;    
private String name;    

public long getId() {        
return id;    
}    

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

public String getName() {        
return name;    
}    

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

}

之后是mapper文件,mybatis在 springboot 项⽬中可以通过注解的方式使用 sql 语句

具体如下所示:创建一个mapper文件

public interface DemoMappper {        

//#{name}:参数占位符    
@Select("select *from Demo where name=#{name}")    
public List<Demo> likeName(String name);            

@Select("select *from Demo where id = #{id}")    
public Demo getById(long id);        

@Select("select name from Demo where id = #{id}")    
public String getNameById(long id);
        
/**     * 保存数据.     */    
@Insert("insert into Demo(name) values(#{name})")    
@Options(useGeneratedKeys=true,keyProperty="id",keyColumn="id")    
public void save(Demo demo);

}

//注意在实际得项目当中mapper文件一般是和静态资源文件一样 一起放在resources文件夹下的

service文件 :

 

@Service 
public class DemoService {

//在service当中将创建好的mapper自动注入到我们得service当中
    
@Autowired    
private DemoMappper demoMappper; 

 public List<Demo> likeName(String name){        
return demoMappper.likeName(name);    
}        

@Transactional//添加事务,在⽅方法上⾯面是给当前⽅方法添加,在类中是给类中的所有⽅方法添加    public void save(Demo demo){        
demoMappper.save(demo);    
}    

}

最后是 controller

@RestController//声明式⼀一个 rest ⻛风格的 controller 

public class DemoController {        

//将之前建立好的service注入进来
@Autowired    
private DemoService demoService;        

@RequestMapping(value = "/likeName/{name}")    
public List<Demo> likeName(@PathVariable("name") String name){        
/** 第⼀个参数:第几页;         
* 第⼆个参数:每页获取的条数.         */        

PageHelper.startPage(1, 2);        
return demoService.likeName(name);    

}        

@RequestMapping("/save")    
public Demo save(){        

Demo demo = new Demo();        
demo.setName("张三");        
demoService.save(demo);        
return demo;    
}    

}

我们将启动类建立在最外层得包下,关于启动得方式大家可以去看上一篇博文,spring回去扫描和入口类在同一个包下得所有文件,这样就会为其自动得创建对象,从而我们得自动注入会生效;

最后我们来测试一下

访问http://localhost:8080/save

结果如下图所示 : 


 访问 http://localhost:8080/likeName/张三

 

 

当然我们也可以去配置全局地异常捕获:

要捕获全局异常只需要以下⼏几步即可

1. 创建⼀个类,在类上面添加@ControllerAdvice注解

2.编写任意⼀一个方法,参数是HttpServletRequest和Exception,在方法上面添加@ExceptionHandler 注解,方法返回值如果是字符串,则还需啊添加@ResponseBody,如果返回的是页面,则返回 ModelAndView 对象

3.按照自己的业务逻辑决定返回什么

下面是一个例子:

@ControllerAdvice 
public class GloablExceptionHandler {    

@ExceptionHandler    
@ResponseBody    
public String exceptionHandler(HttpServletRequest request, Exception e){        
return "错误";    
} 
}

好了以上就是与mybatis得结合以及基本得异常处理得建立。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值