SpringBoot + Mybatis/JPA
这篇主要讲解SpringBoot结合JPA和Mybatis的使用
SpringBoot作为后端框架,必定要对数据库进行crud操作,JPA和Mybatis把这些操作进行了封装,方便了代码的编写。
JPA
先从比较简单的JPA讲起
第一步,添加依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><dependency><groupId>org.hibernate.javax.persistence</groupId><artifactId>hibernate-jpa-2.1-api</artifactId><version>1.0.0.Final</version></dependency>
一般只要添加前两个,mysql-connector-java无论是jpa还是mybatis还是传统的jdbc都需要添加。
第二步,编写dao类
准确的说应该是一个接口,继承JpaRepository<>的接口
public interface OrderDetailRepository extends JpaRepository<OrderDetail, String> {List<OrderDetail> findByOrderId(String orderId);
}
OrderDetail是数据表对应的实体类,String是主键类型
JpaRepository提供了一系列的操作:
- save()更新和添加
- findAll()
- findById(id)通过id进行查找,返回的是一个Optional对象
还可以在接口中自定义的方法,但是有一定的命名规则,这些命名规则对应的是sql语句中的语法。
Mybatis
Mybatis有两种使用方式:
- 注解
- xml文件
无论使用哪种方式第一步就是先添加依赖
<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.2</version>
</dependency>
先说注解,现在官方推行使用注解的方式
annotation
第一步,建一个mapper包,在里面新建一个接口
第二步,编写方法,在方法上面添加注解
具体的直接看下面的程序
package com.hwy.sell.dataobject.mapper;import com.hwy.sell.dataobject.ProductCategory;
import org.apache.ibatis.annotations.*;import java.util.List;
import java.util.Map;public interface ProductCategoryMapper {@Insert("insert into product_category(category_name, category_type) values (#{category_name, jdbcType=VARCHAR}, #{category_type, jdbcType=INTEGER})")int insertByMap(Map<String, Object> map);@Insert("insert into product_category(category_name, category_type) values (#{categoryName, jdbcType=VARCHAR}, #{categoryType, jdbcType=INTEGER})")int insertByObject(ProductCategory productCategory);@Select("select * from product_category where category_type= #{categoryType}")@Results({@Result(column = "category_type", property = "categoryType"),@Result(column = "category_name", property = "categoryName"),@Result(column = "category_id", property = "categoryId")})ProductCategory findByCategoryType(Integer categoryType);@Select("select * from product_category where category_name= #{categoryName}")@Results({@Result(column = "category_type", property = "categoryType"),@Result(column = "category_name", property = "categoryName"),@Result(column = "category_id", property = "categoryId")})List<ProductCategory> findByCategoryName(String categoryName);@Update("update product_category set category_name = #{categoryName} where category_type = #{categoryType}")int updateByCategoryType(@Param("category_name") String categoryName, @Param("category_type") Integer categoryType);@Update("update product_category set category_name = #{categoryName} where category_type = #{categoryType}")int updateByObject(ProductCategory productCategory);@Delete("delete from product_category where category_type = #{categoryType}")int deleteByCategoryType(Integer categoryType);ProductCategory selectByCategoryType(Integer categoryType);
}
增@Insert 查@Select 删@Delete 改@Update
在括号中编写sql语句,变量用#{}包起来,如果使用实体类作为方法的参数时,sql语句中的变量名要和实体类中的属性名对应起来
当方法的参数列表有多个变量时候要在参数前使用注解@Param("")
要让这个接口起作用,还要在SpringBoot的启动类那里添加一个@MapperScan(basePackages=""),basePackages中填写的是接口所在的包
xml
进行简单了解
第一步就是新建一个xml文件,在文件中写一下内容,下面的代码是以查询语句为例的
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hwy.sell.dataobject.mapper.ProductCategoryMapper"><resultMap id="BaseResultMap" type="com.hwy.sell.dataobject.ProductCategory"><id column="category_id" property="categoryId" jdbcType="INTEGER"/><id column="category_type" property="categoryType" jdbcType="INTEGER"/><id column="category_name" property="categoryName" jdbcType="VARCHAR"/></resultMap><select id="selectByCategoryType" resultMap="BaseResultMap" parameterType="java.lang.Integer">select category_id, category_name, category_typefrom product_categorywhere category_type = #{categoryType, jdbcType=INTEGER}</select>
</mapper>
这里就不做详细讲解
SpringBoot + Mybatis/JPA相关推荐
- 基于vue2+element+springboot+mybatis+jpa+mysql的学籍管理系统
目录 整套系统源码下载 一.开发背景 二.用到的技术 三.开发使用的IDE 四.搭建开发环境 五.启动项目 六.学籍管理系统使用说明 七.结语 八.源码下载 基于vue2+element+spring ...
- 基于vue2+element+springboot+mybatis+jpa+mysql的幼儿园幼儿信息管理系统
目录 整套系统源码下载 一.开发背景 二.用到的技术 三.开发使用的IDE 四.搭建开发环境 五.启动项目 六.幼儿园幼儿信息管理系统使用说明 七.结语 八.整套系统源码下载 整套系统源码下载 基于v ...
- 基于vue2+element+springboot+mybatis+jpa+mysql的小区物业管理系统
目录 一.开发背景 二.用到的技术 三.开发使用的IDE 四.搭建开发环境 五.启动项目 六.物业管理系统使用说明 七.结语 八.整套项目源码下载 一.开发背景 本系统作为vue2初学者的入门系统,通 ...
- Jpa第一话 -- Springboot集成Jpa和Mybatis以及Jpa的最全使用
本文主要记录spring-boot-starter-data-jpa的详细使用. 在做一些小型无并发的项目时,说实话第一个想到的就是Jpa,一个Entity走天下. 1.Spring Jpa的使用 基 ...
- 单手撸了个springboot+mybatis+druid
本文旨在用最通俗的语言讲述最枯燥的基本知识 最近身边的程序员掀起了学习springboot的热潮,说什么学会了springboot在大街上就可以横着走.什么有了springboot妈妈再也不担心我的编 ...
- 单手撸了个springboot+mybatis+druid 1
本文旨在用最通俗的语言讲述最枯燥的基本知识 最近身边的程序员掀起了学习springboot的热潮,说什么学会了springboot在大街上就可以横着走.什么有了springboot妈妈再也不担心我的编 ...
- Springboot整合JPA多数据源(Oracle+Mysql)
Springboot整合JPA多数据源 1. Maven 2. 基本配置 2.1 DataSource 3. 多数据源配置 3.1 JpaConfigOracle 3.2 JpaConfigMysql ...
- 亚信实习笔记总结(SpringBoot + MyBatis)
1.工作内容描述?项目描述? 亚信公司简述 亚信公司主要是给运营商提供支撑服务.运营商包括(电信为主)江苏电信.湖北电信.海南电信.西藏电信.天津电信.黑龙江联通,提供的业务支撑系统包括计费.客户 ...
- Java+Springboot+Mybatis+Mysql+Bootstrap+Maven实现网上商城系统
网上商城系统 一.系统介绍 1.软件环境 2.功能模块图 3.系统功能 4.数据库表 5.SQL语句 6.工程截图 二.系统展示 1.用户-浏览商品 2.用户-注册 3.用户-登录 4.用户-购物车管 ...
最新文章
- 做过十几年程序员,作为当今全世界顶级产品经理,出版第二部重磅作品《启示录2》...
- 【Java从0到架构师(2),Java面试问题
- python【力扣LeetCode算法题库】1162- 地图分析(BFS)
- [C#学习笔记]C#中的decimal类型——《CLR via C#》
- 图像阈值处理cv2.threshold()函数(python)
- Sqlserver中格式化日期作为查询条件的语句写法
- element ui 空格_空格是您的UI朋友。 大量使用它。
- 前端学习(589):在console中调试日志
- wpf 点击按钮弹出选择框_关于WPF的弹出窗口
- Mendix发布全球低代码报告,中国软件与低代码发展远超全球
- 移动硬盘(U盘)病毒对数据的破坏
- java 服务端 处理跨域_javaweb服务端跨域支持
- linux下获取程序所在目录绝对路径
- 图像处理之opencv---mat、cvmat、IplImage之间的转换
- win7系统定时删除数据的批处理命令_简单的批量清除垃圾bat命令
- 六轴传感器MPU6050
- 数据结构——基数排序(经典以空间换时间案例)
- ttest求pvalue_统计中t检验法中P值该怎样计算
- 电脑键盘打字跳转计算机,电脑键盘打字方法
- MATLAB无线计算器
热门文章
- python 键盘输入int_Python编程 Python如何获取数据
- main在c语言中的作用,main函数在C语言中是怎么定义的?有什么作用?
- 2017长春java平均工资_2016年长春在岗职工社会平均工资出炉:66948元,月平均工资5579元...
- 类创建几种java_Java创建对象的几种方式
- python爬虫定时运行_python 每天如何定时启动爬虫任务
- springboot2 war页面放在那_Spring Boot2版的权限管理系统
- PL/SQL Developer将Excel表格数据导入表格
- springBoot项目启动去掉多余的启动日志
- n卡eth挖矿设置_“挖矿”再度兴起,N卡停产遇到ETH大涨,显卡会不会涨到18年那样...
- phpstudy mysql升级5.7