springBoot 集成Mysql数据库
springBoot 集成Mysql数据库
- 采用JDBC直接链接
- 采用JdbcTemplate链接
- 采用SpringDataJPA链接
- 通过其他框架链接
//第一个dependency,是添加的mysql链接java的驱动程序
//第二个dependency,是支持通过JDBC链接数据库。和C#的ADO一样,都是基于ODBC链接的。
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
###mysql 连接信息,test是数据库名
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test
###用户名
spring.datasource.username=root
###密码
spring.datasource.password=sa
###驱动
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
CREATE TABLE `ay_user` (
`id` varchar(32) NOT NULL,
`name` varchar(10) DEFAULT NULL COMMENT '用户名',
`password` varchar(32) DEFAULT NULL COMMENT '密码'
) ENGINE=InnoDB DEFAULT CHARSET=utf8
public class AyUser {
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
private String id;
private String name;
private String password;
}
@Resource
private JdbcTemplate jdbcTemplate;
@Test
public void mySqlTest(){
String sql = "select id,name,password from ay_user ";
//query(),查询方法,传入sql语句和RowMapper对象,返回对象List。
//RowMapper对象,将查询出来的每一行数据封装成用户定义的类
List<AyUser> userList = (List<AyUser>) jdbcTemplate.query(sql, new RowMapper<AyUser>() {
@Override
public AyUser mapRow(ResultSet re, int rowNum) throws SQLException {
AyUser user = new AyUser();
user.setId(re.getString("id"));
user.setName(re.getString("name"));
user.setPassword(re.getString("password"));
return user;
}
});
System.out.println("查询成功:");
for (AyUser user:userList){
System.out.println("[id]:"+user.getId()+";[name]:"+user.getName());
}
}
@Resource
private JdbcTemplate jdbcTemplate;

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
public interface AyUserRepository extends JpaRepository<AyUser,String> {
//自定义内容
List<AyUser> findByName(String name);
List<AyUser> findByNameLike(String name);
List<AyUser> findByIdIn(Collection<String> ids);
}
@Entity//每个持久化POJO类都是一个实体Bean,通过此注解申明
@Table(name="ay_user")//对象映射到数据库的表,如果没有,Spring会根据class的名字进行寻找
public class AyUser {
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Id//表示表的主键
private String id;
private String name;
private String password;
}
public interface AyUserService {
AyUser findById(String id);
List<AyUser> findAll();
AyUser save(AyUser ayUser);
void delete(String id);
//Pageable是一个分页接口,Page是一个分页查询结果借口
Page<AyUser> findAll(Pageable pageable);
List<AyUser> findByName(String name);
List<AyUser> findByNameLike(String name);
List<AyUser> findByIdIn(Collection<String> ids);
}
@Service//服务类注解,和@Component起到类似的作用:自动扫描并注册到Spring容器中
public class AyUserServiceImpl implements AyUserService {
@Resource//自动扫描AyUserRepository并注册
private AyUserRepository ayUserRepository;
@Override
public AyUser findById(String id) {
return ayUserRepository.findById(id).get();
}
@Override
public List<AyUser> findAll() {
return ayUserRepository.findAll();
}
@Override
public AyUser save(AyUser ayUser) {
return ayUserRepository.save(ayUser);
}
@Override
public void delete(String id) {
ayUserRepository.deleteById(id);
}
//翻页
@Override
public Page<AyUser> findAll(Pageable pageable) {
return ayUserRepository.findAll(pageable);
}
@Override
public List<AyUser> findByName(String name) {
return ayUserRepository.findByName(name);
}
@Override
public List<AyUser> findByNameLike(String name) {
return ayUserRepository.findByNameLike(name);
}
@Override
public List<AyUser> findByIdIn(Collection<String> ids) {
return ayUserRepository.findByIdIn(ids);
}
}
@Resource
private AyUserService ayUserService;
@Test
public void testRepository(){
List<AyUser> userList = ayUserService.findAll();
System.out.println("findAll():"+userList.size());
List<AyUser> userList2 = ayUserService.findByName("文鹏");
System.out.println("findByName():"+userList2.size());
Assert.isTrue(userList2.get(0).getName().equals(("文鹏")));
List<AyUser> userList3 = ayUserService.findByNameLike("文%");
System.out.println("findByNameLike():"+userList3.size());
Assert.isTrue(userList3.get(0).getName().equals(("文鹏")));
List<String> ids = new ArrayList<String>();
ids.add("1");
ids.add("2");
List<AyUser> userList4 = ayUserService.findByIdIn(ids);
System.out.println("findByIdIn:"+userList4.size());
PageRequest pageRequest = PageRequest.of(0,10);
Page<AyUser> userList5 = ayUserService.findAll(pageRequest);
System.out.println("page findAll:"+userList5.getTotalPages()+"/"+userList5.getSize());
List<AyUser> userList6 = ayUserService.findByNameLike("%国%");
System.out.println("findByNameLike():"+userList6.size());
Assert.isTrue(userList6.get(0).getName().equals(("文国平")));
AyUser ayUser = new AyUser();
ayUser.setId("4");
ayUser.setName("李国正");
ayUser.setPassword("123");
ayUserService.save(ayUser);
List<AyUser> userList7 = ayUserService.findByNameLike("%国%");
System.out.println("findByNameLike():"+userList7.size());
Assert.isTrue(userList7.get(0).getName().equals(("文国平")));
ayUserService.delete("4");
List<AyUser> userList8 = ayUserService.findByNameLike("%国%");
System.out.println("findByNameLike():"+userList8.size());
Assert.isTrue(userList8.get(0).getName().equals(("文国平")));
}
@Transactional
@Service
public class AyUserServiceImpl implements AyUserService {
@Transactional
@Override
public void delete(String id) {
ayUserRepository.deleteById(id);
String e = null;
e.split("/");
}
}
@Transactional(propagation=Propagation.REQUIRED) //控制事务传播。默认是Propagation.REQUIRED
@Transactional(isolation=Isolation.DEFAULT) //控制事务隔离级别。默认跟数据库的默认隔离级别相同
@Transactional(readOnly=false) //控制事务可读写还是只可读。默认可读写
@Transactional(timeout=30) //控制事务的超时时间,单位秒。默认跟数据库的事务控制系统相同,又说是30秒
@Transactional(rollbackFor=RuntimeException.class) //控制事务遇到哪些异常才会回滚。默认是RuntimeException
@Transactional(rollbackForClassName=RuntimeException) //同上
@Transactional(noRollbackFor=NullPointerException.class) //控制事务遇到哪些异常不会回滚。默认遇到非RuntimeException不会回滚
@Transactional(noRollbackForClassName=NullPointerException)//同上
springBoot 集成Mysql数据库的更多相关文章
- 关于springboot 连接mysql 数据库报错问题
springboot连接MySQL运行报错: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more ...
- 【SpringBoot】SpringBoot集成jasypt数据库密码加密
一.为什么要使用jasypt库? 目前springboot单体应用项目中,甚至没有使用外部配置中心的多服务的微服务架构的项目,开发/测试/生产环境中的密码往往是明文配置在yml或properties文 ...
- SpringBoot配置MySql数据库和Druid连接池
1.pom文件增加相关依赖 <dependency> <groupId>mysql</groupId> <artifactId>mysql-connec ...
- springboot集成巨杉数据库
springboot倾向于约定优于配置,所以大大简化了搭建项目的流程,包括各种数据源的配置,接下来就和大家分享下最近用到的巨杉数据源连接池的配置 1.现在配置文件中定义巨杉连接池的各种连接信息,至于每 ...
- springboot连接mysql数据库,JdbcTemplate和spring JPA方式
SQL部分 CREATE TABLE test( id ) primary key, name ) not null, age ), address ) ); ,,'bj'); ,,'sh'); ,, ...
- SpringBoot使用Druid数据库加密链接完整方案
网上的坑 springboot 使用 Druid 数据库加密链接方案,不建议采用网上的一篇文章<springboot 结合 Druid 加密数据库密码遇到的坑!>介绍的方式来进行加密链接实 ...
- SpringBoot框架与MyBatis集成,连接Mysql数据库
SpringBoot是一种用来简化新Spring应用初始搭建及开发过程的框架,它使用特定方式来进行配置,使得开发人员不再需要定义样板化的配置.MyBatis是一个支持普通SQL查询.存储和高级映射的持 ...
- SpringBoot 集成Mybatis 连接Mysql数据库
记录SpringBoot 集成Mybatis 连接数据库 防止后面忘记 1.添加Mybatis和Mysql依赖 <dependency> <groupId>org.mybati ...
- 通用mapper版+SpringBoot+MyBatis框架+mysql数据库的整合
转:https://blog.csdn.net/qq_35153200/article/details/79538440 开发环境: 开发工具:Intellij IDEA 2017.2.3 JDK : ...
随机推荐
- windows7使用vhd虚拟磁盘
操作系统 : windows7_x64 创建vhd 磁盘管理 --> 操作 --> 创建vhd 挂载vhd 脚本: rem 挂载VHD @echo off (echo select vdi ...
- 5面终于拿到了字节跳动offer! 鬼知道我经历了啥...
坐标北京,某211本科毕业生,之前学校活动有去过字节跳动公司总部参观,所以一直以来就蛮想进入字节工作的,被字节的企业文化和工作氛围所影响.字节作为发展速度最快的互联网公司,旗下的很多产品的用户都比肩B ...
- 你的首个golang语言详细入门教程 | your first golang tutorial
本文首发于个人博客https://kezunlin.me/post/a0fb7f06/,欢迎阅读最新内容! your first golang tutorial go tutorial version ...
- Fiddler使用过程中容易忽略的小技巧
fiddler的基本使用,在之前的一篇博文中有详细介绍,可参见Fiddler抓包工具使用详解,今天来分享几个容易忽略的小技巧. 1.ios机装了证书,依然抓不到包 近期总被同事问及ios机装了证书,但 ...
- js基本操作
js操作页面三步骤 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> < ...
- 利用 Docker Compose 搭建 SpringBoot 运行环境(超详细步骤和分析)
0.前言 相信点进来看这篇文章的同学们已经对 Docker Dompose 有一定的了解了,下面,我们拿最简单的例子来介绍如何使用 Docker Compose 来管理项目. 本文例子: 一个应用服务 ...
- 【转载】作为Android开发者,你真的熟悉Activity吗?
学过android的人都知道,activity是最常用的四大组件之一,但你真的了解透彻activity了吗?接下来,本人将从activity的正常和异常生命周期.启动模式.IntentFilter匹配 ...
- 从零开始的SpringBoot项目搭建
前言 今天是我加入博客园的第一天今天刚好学习到SpringBoot,就顺便记录一下吧 一.创建项目 1.创建工程 ① 通过File > New > Project,新建工程,选择Sprin ...
- JUC-4-CopyOnWriteArrayList
什么是CopyOnWrite容器 CopyOnWrite容器即写时复制的容器.通俗的理解是当我们往一个容器添加元素的时候,不直接往当前容器添加,而是先将当前容器进行Copy,复制出一个新的容器,然后新 ...
- 算法设计与分析 2.5 Joyvan的难题
★题目描述 Joyvan最近遇到了一个难题,对于一个包含 N个整数的序列a1,a2,--,aN,定义:f(i,j)=(j-i)2+(j∑k=i+1 ak)2 现在Joyvan想要你帮他计算所有 f(i ...