SpringBoot-JPA入门
SpringBoot-JPA入门
JPA就是Spring集成了hibernate感觉。
注解,方法仓库(顾名思义的方法,封装好了,还有自定义的方法)。
案例:
spring:
datasource:
url: jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver
#指定数据库连接池类型
type: org.apache.commons.dbcp2.BasicDataSource
dbcp2:
#最大等待连接中的数量,设0位没有限制
max-idle: 10
#最大连接活动数
max-total: 50
#最大等待毫秒数,单位为ms,超过时间会出错误信息
max-wait-millis: 10000
#数据库连接初始化连接数
initial-size: 5
jpa:
database-platform: org.hibernate.dialect.MySQLDialect
show-sql: true
hibernate:
ddl-auto: update
package com.lanqiao.springbootjdbc.pojo; import com.lanqiao.springbootjdbc.converter.SexConverter;
import com.lanqiao.springbootjdbc.enumeration.SexEnum;
import lombok.Data; import javax.persistence.*; /**
* @author DeepSleeping
* @date 2019/5/28 16:17
* @description
*/
@Data
@Entity(name = "user")
@Table(name = "t_user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id = null;
@Column(name = "user_name")
private String userName = null;
@Convert(converter = SexConverter.class)
private SexEnum sex = null;
private String note = null;
}
package com.lanqiao.springbootjdbc.dao; import com.lanqiao.springbootjdbc.pojo.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query; import java.util.List; public interface JpaUserRepository extends JpaRepository<User, Long> { @Query("from user where user_name like concat('%',?1,'%') and note like concat('',?2,'%') ")
public List<User> findUsers(String userName, String note); /**
* @description 按用户名称模糊查询
* @author DeepSleeping
* @date 2019/5/28 19:40
*/
List<User> findByUserNameLike(String userName); /**
* @description 根据主键查询
* @author DeepSleeping
* @date 2019/5/28 19:41
*/
User getUserById(Long id); /**
* @description 按照用户名称或者备注进行模糊查询
* @author DeepSleeping
* @date 2019/5/28 19:42
*/
List<User> findByUserNameLikeOrNoteLike(String userName, String note);
}
package com.lanqiao.springbootjdbc.service.impl; import com.lanqiao.springbootjdbc.enumeration.SexEnum;
import com.lanqiao.springbootjdbc.pojo.User;
import com.lanqiao.springbootjdbc.service.JdbcTmplUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Service; import java.sql.ResultSet;
import java.sql.Statement;
import java.util.List; /**
* @author DeepSleeping
* @date 2019/5/28 16:28
* @description
*/
@Service
public class JdbcTmplUserServiceImpl implements JdbcTmplUserService { @Autowired
private JdbcTemplate jdbcTemplate; /**
* @description 获取映射关系
* @author DeepSleeping
* @date 2019/5/28 16:29
*/
private RowMapper<User> getUserMapper() {
RowMapper<User> userRowMapper = (ResultSet rs, int rownum) -> {
User user = new User();
user.setId(rs.getLong("id"));
user.setUserName(rs.getString("user_name"));
int setId = rs.getInt("sex");
SexEnum sex = SexEnum.getEnumById(setId);
user.setSex(sex);
user.setNote(rs.getString("note"));
return user;
};
return userRowMapper;
} @Override
public User getUser(Long id) {
String sql = "select id,user_name,sex,note from t_user where id = ?";
//参数
Object[] params = new Object[]{id};
User user = jdbcTemplate.queryForObject(sql, params, getUserMapper());
return user;
} @Override
public List<User> findUsers(String userName, String note) {
String sql = "select id,user_name,sex,note from t_user where user_name like concat('%',?,'%') and note like concat('%',?,'%')";
Object[] params = new Object[]{userName, note};
List<User> userList = jdbcTemplate.query(sql, params, getUserMapper());
return userList;
} @Override
public int insertUser(User user) {
String sql = "insert into t_user (user_name,sex,note) values(?,?,?)";
return jdbcTemplate.update(sql, user.getNote(), user.getSex().getId(), user.getNote());
} @Override
public int updateUser(User user) {
String sql = "update t_user set user_name = ?,sex=?,note=? where id = ?";
return jdbcTemplate.update(sql, user.getUserName(), user.getSex().getId(), user.getNote(), user.getId());
} @Override
public int deleteUser(Long id) {
String sql = "delete from t_user where id = ?";
return jdbcTemplate.update(sql, id);
} public User getUser2(Long id) {
User result = this.jdbcTemplate.execute((Statement stmt) -> {
String sql1 = "select count(*) total from t_user where id = " + id;
ResultSet rs1 = stmt.executeQuery(sql1);
while (rs1.next()) {
int total = rs1.getInt("total");
System.out.println(total);
} String sql2 = "select id,user_name,sex,note from t_user where id = " + id;
ResultSet rs2 = stmt.executeQuery(sql2);
User user = null;
while (rs2.next()) {
int rowNum = rs2.getRow();
user = getUserMapper().mapRow(rs2, rowNum);
}
return user;
});
return result;
}
}
package com.lanqiao.springbootjdbc.controller; import com.lanqiao.springbootjdbc.dao.JpaUserRepository;
import com.lanqiao.springbootjdbc.pojo.User;
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.ResponseBody;
import sun.nio.cs.US_ASCII; import java.util.List;
import java.util.Optional; /**
* @author DeepSleeping
* @date 2019/5/28 17:05
* @description
*/
@Controller
@RequestMapping("/jpa")
public class JpaController {
//注入jpa接口,这里不需要使用实现类 @Autowired
private JpaUserRepository jpaUserRepository = null; @RequestMapping("/getUser")
@ResponseBody
public User getUser(Long id) {
//使用JPA接口查询对象
Optional<User> user = jpaUserRepository.findById(id);
return user.get();
} @RequestMapping("/getUserById")
@ResponseBody
public User getUserById(Long id) {
//使用JPA接口查询对象
User user = jpaUserRepository.getUserById(id);
return user;
} @RequestMapping("/findByUserNameLike")
@ResponseBody
public List<User> findByUserNameLike(String userName) {
//使用JPA接口查询对象
List<User> userList = jpaUserRepository.findByUserNameLike("%" + userName + "%");
return userList;
} @RequestMapping("/findByUserNameOrNoteLike")
@ResponseBody
public List<User> findByUserNameOrNoteLike(String userName, String note) {
String userNameLike = "%" + userName + "%";
String noteLike = "%" + note + "%";
//使用JPA接口查询对象
List<User> userList = jpaUserRepository.findByUserNameLikeOrNoteLike(userNameLike, noteLike);
return userList;
}
}
package com.lanqiao.springbootjdbc.converter; import com.lanqiao.springbootjdbc.enumeration.SexEnum; import javax.persistence.AttributeConverter; /**
* @author DeepSleeping
* @date 2019/5/28 17:00
* @description
*/
public class SexConverter implements AttributeConverter<SexEnum, Integer> { /**
* @description 将枚举转换为数据库列
* @author DeepSleeping
* @date 2019/5/28 17:01
*/
@Override
public Integer convertToDatabaseColumn(SexEnum sex) {
return sex.getId();
} @Override
public SexEnum convertToEntityAttribute(Integer id) {
return SexEnum.getEnumById(id);
}
}
package com.lanqiao.springbootjdbc; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories; @SpringBootApplication
@EnableJpaRepositories(basePackages = "com.lanqiao.springbootjdbc.dao")
@EntityScan(basePackages = "com.lanqiao.springbootjdbc.pojo")
public class SpringbootJdbcApplication { public static void main(String[] args) {
SpringApplication.run(SpringbootJdbcApplication.class, args);
} }
参考书籍:《深入浅出SpringBoot2.x》
SpringBoot-JPA入门的更多相关文章
- SpringBoot Jpa入门案例
版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons) 我们先来了解一下是什么是springboot jpa,springboo ...
- SpringData 基于SpringBoot快速入门
SpringData 基于SpringBoot快速入门 本章通过学习SpringData 和SpringBoot 相关知识将面向服务架构(SOA)的单点登录系统(SSO)需要的代码实现.这样可以从实战 ...
- SpringBoot 初入门
SpringBoot 初入门 关于介绍什么之类的就不讲了,主要做一下学习记录. 1. 启动方式 IDEA 启动 命令行启动: mvn spring-boot:run 部署到服务器启动: 先进行打包, ...
- SpringBoot基础篇-SpringBoot快速入门
SpringBoot基础 学习目标: 能够理解Spring的优缺点 能够理解SpringBoot的特点 能够理解SpringBoot的核心功能 能够搭建SpringBoot的环境 能够完成applic ...
- Spring Data Jpa 入门学习
本文主要讲解 springData Jpa 入门相关知识, 了解JPA规范与Jpa的实现,搭建springboot+dpringdata jpa环境实现基础增删改操作,适合新手学习,老鸟绕道~ 1. ...
- IDEA SpringBoot+JPA+MySql+Redis+RabbitMQ 秒杀系统
先放上github地址:spike-system,可以直接下载完整项目运行测试 SpringBoot+JPA+MySql+Redis+RabbitMQ 秒杀系统 技术栈:SpringBoot, MyS ...
- JPA入门例子(采用JPA的hibernate实现版本) 转
JPA入门例子(采用JPA的hibernate实现版本) jpahibernate数据库jdbcjava框架(1).JPA介绍: JPA全称为Java Persistence API ,Java持久化 ...
- 补习系列(19)-springboot JPA + PostGreSQL
目录 SpringBoot 整合 PostGreSQL 一.PostGreSQL简介 二.关于 SpringDataJPA 三.整合 PostGreSQL A. 依赖包 B. 配置文件 C. 模型定义 ...
- 【原】无脑操作:IDEA + maven + Shiro + SpringBoot + JPA + Thymeleaf实现基础授权权限
上一篇<[原]无脑操作:IDEA + maven + Shiro + SpringBoot + JPA + Thymeleaf实现基础认证权限>介绍了实现Shiro的基础认证.本篇谈谈实现 ...
- 【原】无脑操作:IDEA + maven + Shiro + SpringBoot + JPA + Thymeleaf实现基础认证权限
开发环境搭建参见<[原]无脑操作:IDEA + maven + SpringBoot + JPA + Thymeleaf实现CRUD及分页> 需求: ① 除了登录页面,在地址栏直接访问其他 ...
随机推荐
- mac-chrome下手动安装vue-devtools
原文链接:https://blog.csdn.net/weixin_44868003/article/details/89457089 废话就不多说,直接上安装步骤,一步一步来 => succe ...
- shell生成指定范围随即整数
#!/bin/bash function rand(){ min=$ max=$(($-$min+)) num=$( | cksum | awk -F ' ' '{print $1}') echo $ ...
- Redis查询_Tips
基础知识——介绍 Redis简介 REmote Dictionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统. Redis是一个完全 ...
- JAVA 基础编程练习题48 【程序 48 加密】
48 [程序 48 加密] 题目:某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密 规则如下:每位数字都加上 5,然后用和除以 10 的余数代替该数字,再将第一位和第四位交 ...
- Spring Boot连接DB2查询结果时报错“java.lang.AbstractMethodError: com.ibm.db2.jcc.t4.b.isValid(I)Z”的解决办法
关于在maven项目中如何添加DB2的坐标的详细,见:https://www.cnblogs.com/zifeiy/p/7918554.html Spring Boot项目中的application. ...
- 简单记录一下虚拟机中安装Linux的流程以及部分软件的安装命令
一,虚拟机使用的是VMware9 ,linux使用的是服务器中用的比较多的CentOS6.4.稍后我会把这两个版本放到网盘中,需要的朋友可以去下载: 网盘地址: 二,VM的安装比较简单,基本上按照网上 ...
- OpenCV 例程
采集图片显示视频: #include <iostream> #include <opencv2/opencv.hpp> using namespace std; using n ...
- 【编程开发】CMake相关注意事项
[编程开发]CMake相关注意事项 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ CMake是一个非常常用的跨平台移植的工具,CMake可用来生成不同平台下 ...
- ZoomEye
* https://www.zoomeye.org/ *类似工具 IVRE 1. 摄像头漏洞 (1)http://www.2cto.com/Article/201401/269458.html (2) ...
- CentOS7编译安装libc++和libc++abi
本文介绍了如何在CentOS 7中构建C++11构建环境 Clang的定制C++库是libc++(libcxx).然后,libcxx还需要一个ABI库,libc++abi(libcxxabi).不幸的 ...