SpringBoot整合MyBatis

在这里插入图片描述
                       星光下的赶路人star的个人主页

                      碰到好的欢喜的东西,总是要留得一份清淡余地,才会有中正的缘分

文章目录

  • 1、业务开发
    • 1.1 前端页面
    • 1.2 MVC
    • 1.3Bean
    • 1.4 Dao(Mapper)
    • 1.5 Service
    • 1.6 Controller
  • 2、整合MyBatis
    • 2.1 依赖整合
    • 2.2 配置整合
    • 2.3 使用日志打印SQL
    • 3、常用注解

1、业务开发

根据提供的web页面吗,完成对Employee的增删改查功能

1.1 前端页面

前端页面不需要懂,只需要拷贝到Resource目录下的static目录中就可以啦

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>员工操作</title>
</head>
<body><form action="/emp" ><input type="radio" name="op" value="select">查询<input type="radio" name="op" value="insert">新增<input type="radio" name="op" value="delete">删除<input type="radio" name="op" value="update">更新</br>id: <input name="id" value=""> </br>name:<input name="lastname" value="">  </br>gender:<input name="gender" value="">   </br>email:<input name="email" value="">   </br><input  value="操作" type="submit"></form><a href="/getAllEmp">查询所有员工</a>
</body>
</html>

在这里插入图片描述

1.2 MVC

MVC(model view controller)是一个web应用开发时要遵守的开发规范

在这里插入图片描述
在这里插入图片描述

1.3Bean

@Data 
@AllArgsConstructor
@NoArgsConstructor
public class Employee
{private Integer id;private String lastName;private String gender;private String email;}

1.4 Dao(Mapper)

@Mapper
public interface EmployeeMapper {//增删改查Employee getEmployeeById(Integer id);void insertEmployee(Employee employee);void updateEmployee(Employee employee);void deleteEmployeeById(Integer id);// 查询所有List<Employee> getAll();}

为每个方法提供对应的sql语句:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!-- namespace是dao层所在类的类路径-->
<mapper namespace="com.zhm.springwebdemo.mappers.EmployeeMapper"><!--每个dao层的方法名 对应这一个标签,标签名是方法名--><select id="getEmployeeById" resultType="com.zhm.springwebdemo.beans.Employee">select * from employee where id = #{fjhaoleilfhaiolfja;}</select><select id="getAll" resultType="com.zhm.springwebdemo.beans.Employee">select * from employee</select><delete id="deleteEmployeeById">delete  from employee where id=#{id}</delete><insert id="insertEmployee">insert  into employee(last_name,gender,email) values(#{lastName},#{gender},#{email})</insert><update id="updateEmployee">update employee set last_name=#{lastName} , gender=#{gender} ,email=#{email}where id = #{id}</update>
</mapper>

1.5 Service

public interface EmployeeService {//必须至少提供5种方法对应用户的5种操作//增删改查Employee getEmployeeById(Integer id);void insertEmployee(Employee employee);void updateEmployee(Employee employee);void deleteEmployeeById(Integer id);// 查询所有List<Employee> getAll();
}
@Service
public class EmployeeServiceImpl implements EmployeeService {//声明Dao@Autowiredprivate EmployeeMapper employeeMapper;@Overridepublic Employee getEmployeeById(Integer id) {System.out.println("操作之前do something....");Employee employee = employeeMapper.getEmployeeById(id);System.out.println("操作之后do something....");return employee;}@Overridepublic void insertEmployee(Employee employee) {System.out.println("操作之前do something....");employeeMapper.insertEmployee(employee);System.out.println("操作之后do something....");}@Overridepublic void updateEmployee(Employee employee) {System.out.println("操作之前do something....");employeeMapper.updateEmployee(employee);System.out.println("操作之后do something....");}@Overridepublic void deleteEmployeeById(Integer id) {System.out.println("操作之前do something....");employeeMapper.deleteEmployeeById(id);System.out.println("操作之后do something....");}@Overridepublic List<Employee> getAll() {System.out.println("操作之前do something....");List<Employee> all = employeeMapper.getAll();System.out.println("操作之后do something....");return all;}
}

1.6 Controller

@RestController
public class EmployeeController
{// employeeService= new EmployeeServiceImpl()@Autowired // =  自动从容器中找标注了次注解 的类型的对象,找到就赋值private EmployeeService employeeService;@RequestMapping(value = "/emp")public Object handle1(String op,Integer id,String lastname,String gender,String email){//封装数据模型Employee employee = new Employee(id, lastname, gender, email);switch (op){case "select": if (id == null){return "必须传入员工id!";}else {Employee e = employeeService.getEmployeeById(id);return e == null ? "查无此人!" : e;}case "insert" : employeeService.insertEmployee(employee);return "操作完成!";case "update": if (id == null){return "必须传入员工id!";}else {employeeService.updateEmployee(employee);return  "操作完成!";}case "delete": if (id == null){return "必须传入员工id!";}else {employeeService.deleteEmployeeById(id);return  "操作完成!";}default: return "请正确操作";}}@RequestMapping(value = "/getAllEmp")public Object handle2(){List<Employee> all = employeeService.getAll();return all;}
}

2、整合MyBatis

2.1 依赖整合

搭建一个SpringBoot的web工程,之后在pom.xml中添加如下依赖

<!--springBoot 启动器--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.1.1</version></dependency>
<!--德鲁伊连接池--><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.10</version></dependency>
<!--mysql驱动包--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.38</version></dependency>

2.2 配置整合

在application.yml(如果没有,可以自己建,要建在项目的Resource路径下)中增加数据库环境配置信息

spring:datasource:name: mydbtype: com.alibaba.druid.pool.DruidDataSourceurl: jdbc:mysql://hadoop104:3306/Mybatis?useSSL=false&useUnicode=true&characterEncoding=UTF-8username: rootpassword: "000000"driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:mapper-locations: classpath*:/mappers/*Mapper.xmlconfiguration:mapUnderscoreToCamelCase: true

2.3 使用日志打印SQL

在application.yml中添加如下配置,其中格式为logging.level.mapper接口所在包名=日志级别
所以红色部分请替换为自己的mapper所在包名。

logging:level:com:atguigu:springbootdemo:mapper: debug

3、常用注解

注解常见标注位置作用
@Controller控制器类标识一个控制器类
@Service服务类标识一个业务模型类
@ResponseBody方法将方法的返回值作为响应体返回,如果返回值为字面量则直接返回,如果为非字面量则转为json后返回
@RequestBody参数用于将前台传入的json格式数据转换为Bean或Map
@RestController控制器类作用等于@Controller+为此类的所有方法都默认添加@ResponseBody注解
@Autowired属性从容器中找到和此属性类型一致的Bean找到就赋值,找不到就报错
@RequestMapping方法指定当前方法所处理的url
@GetMapping方法指定当前方法只处理指定的url的Get请求
@PostMapping方法指定当前方法只处理指定url的Post请求

在这里插入图片描述
                      您的支持是我创作的无限动力

在这里插入图片描述
                      希望我能为您的未来尽绵薄之力

在这里插入图片描述
                      如有错误,谢谢指正;若有收获,谢谢赞美

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

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

相关文章

CentOS7安装jq命令

1. 安装依赖 yum install gmp-devel mpfr-devel libmpc-devel -y2. 安装gcc 2.1 离线环境 wget https://ftp.gnu.org/gnu/gcc/gcc-10.3.0/gcc-10.3.0.tar.gz tar -xzf gcc-10.3.0.tar.gz编译安装 yum -y install gcc c --skip-broken./configure --disable-multilib --enab…

linux文本三剑客

linux文本三剑客 1、grep2、sed 1、grep 过滤 参数用法作用-igrep -i STRING xxx.txt从xxx.txt文件查找不区分大小写STRING-wgrep -w STRING xxx.txt精确匹配STRING-egrep -e STRING1 -e STRING2 xxx.txt查找多个STRING行-ngrep -n STRING xxx.txt查看STRING 在第几行-vgrep …

运算放大器发展史

在内部集成了一个补偿电容 MPS公司OP07推出后&#xff0c;大受欢迎。各家厂商都推出了自己的 这4款都是可以替换的

蓝蓝设计ui设计公司作品--泛亚高科-光伏电站控制系统界面设计

泛亚高科(北京)科技有限公司&#xff08;以下简称“泛亚高科”&#xff09;&#xff0c;一个以实时监控、高精度数值计算为基础的科技公司&#xff0c; 自成立以来&#xff0c;组成了以博士、硕士为核心的技术团队&#xff0c;整合了华北电力大学等高校资源&#xff0c;凭借在电…

HarmonyOS学习路之方舟开发框架—学习ArkTS语言(状态管理 四)

Observed装饰器和ObjectLink装饰器&#xff1a;嵌套类对象属性变化 上文所述的装饰器仅能观察到第一层的变化&#xff0c;但是在实际应用开发中&#xff0c;应用会根据开发需要&#xff0c;封装自己的数据模型。对于多层嵌套的情况&#xff0c;比如二维数组&#xff0c;或者数…

ROS通信机制之话题(Topics)的发布与订阅以及自定义消息的实现

我们知道在ROS中&#xff0c;由很多互不相干的节点组成了一个复杂的系统&#xff0c;单个的节点看起来是没起什么作用&#xff0c;但是节点之间进行了通信之后&#xff0c;相互之间能够交互信息和数据的时候&#xff0c;就变得很有意思了。 节点之间进行通信的一个常用方法就是…

同款爱心Python代码版来了

同款爱心就是一个动态的♥型效果&#xff0c;主要 Python 代码实现如下&#xff1a; def __init__(self, generate_frame20): # 原始爱心坐标集合 self._points set() # 边缘扩散效果点坐标集合 self._edge_diffusion_points set() # 中心扩散效果点坐标集合 self._cent…

SpringIoC基于注解配置

目录 一、Bean注解标记和扫描 (IoC) 二、组件&#xff08;Bean&#xff09;作用域和周期方法注解 三、Bean属性赋值&#xff1a;引用类型自动装配 (DI) 四、Bean属性赋值&#xff1a;基本类型属性赋值 (DI) 一、Bean注解标记和扫描 (IoC) 一、注解方式介绍 1.注解介绍 和…

行业追踪,2023-08-24

自动复盘 2023-08-24 凡所有相&#xff0c;皆是虚妄。若见诸相非相&#xff0c;即见如来。 k 线图是最好的老师&#xff0c;每天持续发布板块的rps排名&#xff0c;追踪板块&#xff0c;板块来开仓&#xff0c;板块去清仓&#xff0c;丢弃自以为是的想法&#xff0c;板块去留让…

VIT Swin Transformer

VIT&#xff1a;https://blog.csdn.net/qq_37541097/article/details/118242600 Swin Transform&#xff1a;https://blog.csdn.net/qq_37541097/article/details/121119988 一、VIT 模型由三个模块组成&#xff1a; Linear Projection of Flattened Patches(Embedding层) Tran…

AR室内导航技术之技术说明与效果展示

随着科技的飞速发展&#xff0c;我们周围的环境正在经历着一场数字化的革命。其中&#xff0c;AR室内导航技术以其独特的魅力&#xff0c;为我们打开了一扇通往全新数字化世界的大门。本文将为您详细介绍这一技术的实现原理、工具应用以及成品展示&#xff0c;带您领略AR室内导…

供应链 | 大数据报童模型:基于机器学习的实践见解

论文解读&#xff1a;李欣 马玺渊 作者&#xff1a;Gah-Yi Ban, Cynthia Rudin 引用&#xff1a;Ban, Gah-Yi and Cynthia Rudin. The big data newsvendor: Practical insights from machine learning. Operations Research 67.1 (2019): 90-108. 文章链接&#xff1a;https…