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背景图片加上组件_关于 java swing组件加背景图片的问题

最近自己做了一个小的进销存软件,背景图片加上后不能最大化。尝试了好几种方法 最后终于把问题解决了。下面把自己写的实例 分享一下&#xff1a;一个是在JFrame窗体中加如背景图片一个是在Jpanel 面板中加入背景图片都可以伸缩铺满整个屏幕&#xff0c;算是自己的一个小心得。…

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

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

java ip 范围内打卡_定位地理位置PHP判断员工打卡签到经纬度是否在打卡之内

具体代码如下所述&#xff1a;/* 计算两组经纬度坐标之间的距离* param $lat1 纬度1* param $lng1 经度1* param $lat2 纬度2* param $lng2 经度2* param int $len_type 返回值类型(1-m 2-km)* param int $decimal 保留小数位数* return float*/public function getDistance($l…

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

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

php正则表达式 匹配数字,正则表达式之匹配数字范围

最近有个需求就是根据产品编号批量下架产品&#xff0c;需要下架日期为16-31号之间的产品&#xff0c;比如编号为B201607280023匹配表达式如下:^201607(1[6-9]|2[0-9]|3[0-1]).逻辑很简单&#xff0c;如果是必须是1或2或3开头&#xff0c;如果是1开头则后面范围为6-9&#xff0…

php中带?错误,参考-此错误在PHP中意味着什么?

这是什么&#xff1f;这是有关警告&#xff0c;错误和注意事项的许多答案&#xff0c;这些警告&#xff0c;错误和注意事项在您对PHP进行编程时可能会遇到&#xff0c;并且不知道如何解决它们。这也是一个社区Wiki&#xff0c;因此邀请所有人参与添加并维护此列表。为什么是这样…

yiilite.php,YII Framework学习教程-YII的V-view的render若干函数-2011-11-17 | 学步园

YII中&#xff0c;在action可以通过$this->render来指定它的view。其实还其他一$this->render开头的函数。yiilite.php中有这么几个函数。public function renderText($text,$returnfalse){if(($layoutFile$this->getLayoutFile($this->layout))!false)$text$this-…

php生成链接列表,根据URL链接和抛文本生成链接a标签的PHP函数

这个函数可以为组成一个链接&#xff0c;第一个参数是链接的URL&#xff0c;第二个参数是抛文本。最后生成抛文本function parseurl($url, $text) {if(!$url && preg_match("/((https?|ftp|gopher|news|telnet|rtsp|mms|callto|bctp|ed2k|thunder|synacast){1}:\…

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

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

php阿拉伯语字符串,按字母顺序命名阿拉伯语名称Mysql和php

我试图用阿拉伯语对 alphabetical order 中的结果进行排序&#xff0c;但出于某种原因 not sorting correctly ..$ d1 mysqli_query($ connector&#xff0c;“SELECT * FROM article where type 1ORDER BY name ASC”); while($ a1 mysqli_fetch_array($ d1)){echo“$ a1 [n…

matlab里inline定义矩阵,Matlab中的inline函数_matlab中inline函数

Matlab中的inline函数1&#xff0e;有时为了描述某个数学函数的方便&#xff0c;可以用inline()函数来直接编写该函数&#xff0c;形式相当于M-函数&#xff0c;但无编写一个真正的MATLAB文件&#xff0c;就可以描述出某种数学关系。其调用格式为funinline(‘函数内容’,自变量…

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

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

matlab保存并关闭excel文件夹,[转载]Matlab批量操作目标文件夹下的Excel文件

本程序主要使matlab批量操作Excel表&#xff0c;其中用到了parfor并行计算加快处理速度。相同效果&#xff0c;速度上和Excel vba是有差距的。%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%tic;clear;dirsdir(E:我的文…

php html标签自定义属性,浅谈JS读取DOM对象(标签)的自定义属性

DOM对象对于js来说&#xff0c;是个很基础的元素&#xff0c;我们写js一般来说&#xff0c;都一定会对它进行操作。我们可以很方便地给它加上自定义的属性&#xff0c;比如&#xff1a;var test document.getElementById("test");test.adang "adang";ale…

如何使用matlab的siso,利用Matlab内建程式SISODesignTool完成系统分析(Matlab61)开启.PDF...

利用Matlab内建程式SISODesignTool完成系统分析(Matlab61)开启.PDF利用 Matlab 內建程式 SISO Design Tool 完成系統分析(Matlab 6.1) &#xff1a;開啟 Matlab (6.x 以上版本) &#xff0c;如下圖一左方視窗中點選Control System Toolbox 並執行 SISO Design Tool &#xff0c…

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{/*** 获取…

matlab6.0序列号,MFC软件获取USB设备的制造商、产品、序列号

PVOID buf malloc(100);char * buf1 (char *)malloc(100);PVOID buf2 malloc(100);char * buf3 (char *)malloc(100);PVOID buf4 malloc(100);char * buf5 (char *)malloc(100);int num 0;int num1 0;int num2 0;PHIDD_ATTRIBUTES a;UpdateData(false); //更新界面int…

matlab中多边形滤波器,几种常见空间滤波器MATLAB实现

本文链接&#xff1a;https://blog.csdn.net/LYduring/article/details/80443573一、目的实现算术均值滤波器、几何均值滤波器、中值滤波器、修正的阿尔法均值滤波器、自适应中值滤波器&#xff0c;并比较不同滤波器的降噪结果。二、代码代码的思路如下&#xff1a;(1)先对原始…

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

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