Java 捕获 mybatis异常_3 springboot集成mybatis和全局异常捕获

mybatis有两种方式,一种是基于XML,一种是基于注解

springboot集成mybatis

首先先创建表,这里都简化了

DROP TABLE IF EXISTS `user`;

CREATE TABLE `user` (

`id` int(11) NOT NULL auto_increment,

`username` varchar(255) default NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

INSERT INTO `user` VALUES ('1', 'lijia');

然后创建maven项目,在pom.xml中添加

org.springframework.boot

spring-boot-parent

1.5.4.RELEASE

1.8

UTF-8

UTF-8

org.springframework.boot

spring-boot-starter-web

org.mybatis.spring.boot

mybatis-spring-boot-starter

1.3.0

mysql

mysql-connector-java

runtime

org.springframework.boot

spring-boot-devtools

true

com.alibaba

fastjson

1.2.31

org.projectlombok

lombok

provided

org.springframework.boot

spring-boot-maven-plugin

true

XML形式

目录结构是

6f9547e79b2b

application.properties

# jdbc_config

spring.datasource.driver-class-name=com.mysql.jdbc.Driver

spring.datasource.url=jdbc:mysql://172.16.255.69:3306/test?characterEncoding=utf8

spring.datasource.username=root

spring.datasource.password=root

# Mybatis

#mybatis.typeAliasesPackage对应的是实体类位置

mybatis.typeAliasesPackage=org.lijia.bean

#mybatis.mapperLocations查找mybatis配置文件位置

mybatis.mapperLocations=classpath:mybatis/*.xml

实体类User

public class User {

private String id; //用户id

private String username; //用户名

public String getId() {

return id;

}

public void setId(String id) {

this.id = id;

}

public String getUsername() {

return username;

}

public void setUsername(String username) {

this.username = username;

}

}

HelloController :

import com.alibaba.fastjson.JSON;

import com.lijia.bean.User;

import com.lijia.service.HelloService;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestParam;

import org.springframework.web.bind.annotation.ResponseBody;

@Controller

@RequestMapping("/hello")

public class HelloController {

@Autowired

private HelloService helloService;

@RequestMapping("/get")

@ResponseBody

public String get(@RequestParam String username){

User user = helloService.get(username);

if(user!=null){

System.out.println("user.getName():"+user.getUsername());

}

return JSON.toJSONString(user);

}

@RequestMapping("/exception")

@ResponseBody

public String exception(){

throw new RuntimeException();

}

}

HelloService :

import com.lijia.bean.User;

import com.lijia.dao.HelloMapper;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Service;

@Service

//@Transactional

public class HelloService {

@Autowired

private HelloMapper helloMapper;

public User get(String username) {

return helloMapper.findUserByName(username);

}

}

接口HelloMapper :

import com.lijia.bean.User;

public interface HelloMapper {

public User findUserByName(String username);

}

mybatis配置文件:

select * from user where username = #{username}

最后启动类Application:

import org.mybatis.spring.annotation.MapperScan;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication

@MapperScan("com.lijia.dao") //扫描接口

public class Application {

public static void main(String[] args) {

SpringApplication.run(Application.class,args);

}

}

启动Application,输入成功获取数据

6f9547e79b2b

mybatis注解方式

注解方式我感觉太简单了,一般我也是用这个

6f9547e79b2b

没有了mybatis那些配置文件

application.properties:去除了mybatis的东西

spring.datasource.driver-class-name=com.mysql.jdbc.Driver

spring.datasource.url=jdbc:mysql://172.16.255.69:3306/test?characterEncoding=utf8

spring.datasource.username=root

spring.datasource.password=root

启动类Application:也没有了扫描

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication

public class Application {

public static void main(String[] args) {

SpringApplication.run(Application.class,args);

}

}

最主要的是:HelloMapper

import com.lijia.bean.User;

import org.apache.ibatis.annotations.Mapper;

import org.apache.ibatis.annotations.Select;

@Mapper

public interface HelloMapper {

@Select("select * from user where username = #{username}")

public User findUserByName(String username);

}

在接口上加上@Mapper

在方法上面加上@Select里面跟着sql

然后启动Application,结果一样

6f9547e79b2b

全局异常捕获

只要在项目中加上这个类

import com.lijia.common.result.Result;

import com.lijia.common.result.ResultEnum;

import org.springframework.web.bind.annotation.ControllerAdvice;

import org.springframework.web.bind.annotation.ExceptionHandler;

import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;

/**

* Desc:全局异常捕获并返回

*

*/

@RestController

@ControllerAdvice

public class ExceptionHandlerController {

@ExceptionHandler(Exception.class)

public Result defaultExceptionHandler(HttpServletRequest request, Exception e)

throws Exception {

return new Result<>(ResultEnum.SERVER_ERROR, e.getMessage());

}

}

这里面的Result是自定义。

import com.fasterxml.jackson.annotation.JsonInclude;

import lombok.Data;

import lombok.NoArgsConstructor;

@Data

@JsonInclude(JsonInclude.Include.NON_NULL)

@NoArgsConstructor

public class Result {

private int code;

private String desc;

private T data;

public Result(ResultEnum resultEnum) {

this.code = resultEnum.getCode();

this.desc = resultEnum.getDesc();

}

public Result(ResultEnum resultEnum, T data) {

this.code = resultEnum.getCode();

this.desc = resultEnum.getDesc();

this.data = data;

}

}

还有个枚举

public enum ResultEnum {

SUCCESS(200, "success"), SERVER_ERROR(500, "server error");

private int code;

private String desc;

ResultEnum(int code, String desc) {

this.code = code;

this.desc = desc;

}

public int getCode() {

return code;

}

public String getDesc() {

return desc;

}

}

在上面的Controller中已经有异常的方法,启动Application

6f9547e79b2b

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/526300.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java applet 访问文件_使用JavaApplet访问数据库

使用Java Applet访问数据库学习任何的程序语言&#xff0c;当然都得与数据库&#xff0c;Java刚刚诞生的时候&#xff0c;对数据库的支持并不是很好&#xff0c;经过这几年的发展&#xff0c;它对数据库的支持也已经完全达到了成熟的境地。由于这里主要是介绍Java Applet小程序…

与java线程有关的,线程多少和什么有关?大神们表示有话要说!

原标题&#xff1a;线程多少和什么有关&#xff1f;大神们表示有话要说&#xff01;来源&#xff1a;importnew.com/10780.htmlEddie的回答:Charlie Martin的回答:benjismith的回答:Neil Coffey的回答:McGovernTheory在StackOverflow提了这样一个问题:Java虚拟机最多支持多少个…

java 项目 人力资源项目,基于jsp的人力资源系统-JavaEE实现人力资源系统 - java项目源码...

基于jspservletpojomysql实现一个javaee/javaweb的人力资源系统, 该项目可用各类java课程设计大作业中, 人力资源系统的系统架构分为前后台两部分, 最终实现在线上进行人力资源系统各项功能,实现了诸如用户管理, 登录注册, 权限管理等功能, 并实现对各类人力资源系统相关的实体…

matlab最佳拟合的指标是什么意思,Matlab拟合好坏常用指标

Matlab拟合好坏常用指标用过Matlab的拟合、优化和统计等工具箱的网友&#xff0c;会经常遇到下面几个名词&#xff1a;SSE(和方差、误差平方和)&#xff1a;The sum of squares due to errorMSE(均方差、方差)&#xff1a;Mean squared errorRMSE(均方根、标准差)&#xff1a;R…

matlab数字图像处理函数,MATLAB数字图像处理学习(二)|常用函数

以下的学习整理来自《数字图像处理原理与实践(MATLAB版)》im2bw功能&#xff1a;将索引图象、灰度图像和RGB彩色图像转换为二值图像 调用形式&#xff1a; >BW im2bw(I,level) BW im2bw(X,cmap,level) BW im2bw(RGB,level)其中level用于设置阈值。level取值范围[0, 1]。 …

php 实现 model层,Thinkhphp5控制器调用的Model层的方法总结

控制器器里:/*** Created by PhpStorm.* User: Haima* Date: 2018/7/8* Time: 15:58*/namespace app\api\controller\v1;use app\api\model\Banner as BannerModel;use app\api\validate\IDMustBePostiveInt;use app\lib\exception\BannerMissException;class Banner{/*** 获取…

matlab fminimax 例子,Matlab应用实例(8)—fminimax

说明&#xff1a;fminimax用来求最小的最大值&#xff0c;比如城市建设消防站点时&#xff0c;考虑到最主要的因素是到最远的地方的用时(可换算为距离)最小&#xff0c;比如A方案到6个区域的用时为(1&#xff0c;1&#xff0c;1&#xff0c;1&#xff0c;1&#xff0c;12)&…

php://filter利用条件,浅谈php://filter技巧

php://filterphp://filter可以作为一个中间流来处理其他流&#xff0c;具有四个参数:名称描述备注resource指定了你要筛选过滤的数据流必选read可以设定一个或多个过滤器名称&#xff0c;以管道符(|)分隔。可选write可以设定一个或多个过滤器名称&#xff0c;以管道符(|)分隔。…

mplayer-php,mplayer+smplayer 前后端播放器安装

环境&#xff1a;f8模式&#xff1a;mplayer做后端&#xff0c;smplayer做前端说明&#xff1a;如果是自己编译mplayer&#xff0c;后面所讲到的codecs路径就可能发生变化&#xff0c;做适当修改即可&#xff01;以下省略一些解压缩之类的操作步骤&#xff01;安装livna.org的第…

Elasticsearch的分片平衡问题解决

2023年11月份在某电商系统生产中的Elasticsearch&#xff08;以下简称ES&#xff09;集群突然&#xff0c;出现了大量慢查询告警&#xff0c;导致请求堆积。经过几天的排查发现了ES节点主分片和副本分片分布存在不均匀的问题。当然了暂未有定论是由于分片不均衡导致了性能下降&…

linux卸载nomachine,NoMachine 安装与配置及使用

对Linux管理员们来说&#xff0c;远程办公不是什么新鲜事。如果管理员不在服务器跟前&#xff0c;远程办公更是家常便饭。一般而言&#xff0c;图形用户界面(GUI)默认情况下并不安装在Linux服务器上。但是可能有一些Linux管理员还是决定将GUI安装在Linux服务器上。如果你的服务…

linux yum 安装widget,CentOS 7安装Qt5.12.1过程

默认下载在Downloads目录下预安装sudo yum -y install mesa-libGL-devel mesa-libGLU-devel freeglut-devel给下载的文件赋予可执行的权限chmod x qt-opensource-linux-x64-5.12.1.run执行文件&#xff0c;进行安装./qt-opensource-linux-x64-5.12.1.run接下来会进行界面化的安…

usb otg vnc linux,20131126版本后,可以从PC通过USB-OTG VNC到pcDuino

为什么80%的码农都做不了架构师&#xff1f;>>>有些玩家购买pcDuino到手后发现自己没有显示器&#xff0c;没有鼠标键盘&#xff0c;有的只有手机的充电器和数据线。pcDuino开发者了解到粉丝们的郁闷之后&#xff0c;在软件上帮忙大家解决了这个问题。下面就给大家介绍…

linux 镜像错误,VituralBox 使用已有镜像文件报错:E_INVALIDARG (0x80070057)

VituralBox 使用已有镜像文件报错:E_INVALIDARG (0x80070057)&#xff1a;问题描述&#xff1a;UUID已经存在Cannot register the hard disk E:\system_iso\CentOS6.8.vdi {05f096aa-67fc-4191-983d-1ed00fc6cce9}because a hard disk E:\system_iso\centos68_02\centos6.8.vdi…

c语言中123 234 345 456,如何在C中将数字从1123456789格式化为1,123,456,789?

宝慕林4294392您可以按以下方式递归执行此操作(请注意&#xff0c;INT_MIN如果使用二进制补码&#xff0c;则需要额外的代码来管理它)&#xff1a;void printfcomma2 (int n) { if (n < 1000) { printf ("%d", n); return; } printfcomma2…

dos c语言显示符号图案,在DOS命令行窗口中显示出用各种字符拼凑出来的各种图案的实现方法,如本人头像...

注&#xff1a;文中例子是本人刚学C编程语言的时候制作的&#xff0c;实现方法很简单&#xff0c;主要使用for循环语句&#xff0c;无需什么复杂烧脑的算法。由于经常看到各种符号拼成的图案&#xff0c;感觉很有意思&#xff0c;所以自己也弄了个&#xff0c;纯属好玩。(作品-…

android自定义圆圈动画,自定义view实现动画数字圆圈

我们要实现的是如下的效果&#xff0c;1.该view在设置属性之后时候会有数字和圆圈不断增长的效果2.该view在按下和放开状态下显示不同的样式。这种效果逻辑上并不复杂&#xff0c;底层灰色圆圈和蓝色扇形圆圈都是用canvas.drawArc()绘制出来的&#xff0c;中间的数字用drawtext…

android+水滴粘性动画,Android控件实现水滴效果

看到ios版上QQ刷新效果像水滴&#xff0c;然后自己也想着去实现这样的效果&#xff0c;这篇文章暂时没有介绍下拉刷新的效果&#xff0c;只是单独用一个控件来实现这样的水滴效果。效果图如下&#xff1a;一、总体思路1、画两个圆形&#xff0c;其中一个就是上面的大圆&#xf…

第一台鸿蒙手机是,第一台预装鸿蒙OS的手机终于登场。

原标题&#xff1a;第一台预装鸿蒙OS的手机终于登场。千呼万唤始出来&#xff0c;之前大家期待了很久的鸿蒙OS它终于真正到来了。据工业和信息化部公布的消息&#xff0c;搭载鸿蒙OS的新款华为手机正式入网了&#xff0c;这也将是华为第一台预装鸿蒙OS的新款手机。但令人完全没…

html跳转网页为什么网页无法访问,朋友的网站被网址跳转,导致官网无法正常访问...

原标题&#xff1a;朋友的网站被网址跳转&#xff0c;导致官网无法正常访问昨天中午接到客户的一个电话&#xff0c;告知其某个网站打开之后直接跳转到其他的网站。客户的这个网站&#xff0c;不是我们做的&#xff0c;但是关系一直保持的不错&#xff0c;所以就顺带给他解决一…