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及分页> 需求: ① 除了登录页面,在地址栏直接访问其他 ...
随机推荐
- Projects: Linux scalability: Accept() scalability on Linux 惊群效应
小结: 1.不必要的唤醒 惊群效应 https://github.com/benoitc/gunicorn/issues/792#issuecomment-46718939 https://www.c ...
- 七天学会ASP.NET MVC
地址一: http://www.cnblogs.com/powertoolsteam/p/MVC_one.html http://www.cnblogs.com/powertoolsteam/p/MV ...
- jQuery的html()、text()和val()的使用和区别
.html():读取和修改一个元素的HTML内容 .text():读取和修改一个元素的文本内容 .val():读取和修改一个表单元素的value字段值
- 读写Session
读写Session Session是保存在服务端的字典 Session与Cookie有些类似,都是通过字典管理key-value对,只不过Cookie是保存在客户端的字典,而Session是保存在服务 ...
- idea-配置文件提示红色
Idea建立spring配置文件首行红色 提示URI is not registered 复制出现红色字体的路径...File - Settings - schemas and DtDs 点击加号 ...
- 攻防世界CRYPTO新手练习
0x01 base64 直接base64 Decode 得到flag cyberpeace{Welcome_to_new_World!} 0x02 Caesar key为12 的恺撒密码,解密德fla ...
- upload上传通关游戏
第一关:后缀名限制,抓包改一下后缀. 前端脚本检测文件扩展名.当客户端选择文件点击上传的时候,客户端还没有向服务器发送任何消 息,前端的 js 脚本就对文件的扩展名进行检测来判断是否是可以上传的类型 ...
- PHP根据IP判断地区名信息的示例代码
<?php header("Content-type: text/html; charset=utf-8"); function getIP(){ if (isset($_S ...
- python初学第一节课
### python的基础 推荐学习python的一些资料, 首先就是书籍<Python从入门到实践>, 这本书评分很高, 主要是对Python讲解的比较清楚, 后面还有具体的实战项目 推 ...
- 【SVN】总结:svn“Previous operation has not finished; run 'cleanup' if it was interrupted“
svn执行clean up命令时报错“Previous operation has not finished; run 'cleanup' if it was interrupted”.无论你到那个父 ...