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 : ...
随机推荐
- PalletOne调色板Token PTN跨链转网的技术原理
之前一直在忙于通用跨链公链PalletOne的研发,没有怎么做技术分享的博客,最近PalletOne主网上线也有几个月的时间了,即将进行PTN(PalletOne上面的主Token)从ERC20到主网 ...
- windows 下安装beego
好久没写博客了,最近忙于一些杂事,看见有几个博友留言了,未能及时回复,稍后晚点回复诸位博友.不多说了,windows安装beego(请先确保git环境已安装并设置了git环境变量.这个简单网上很多教程 ...
- [browser navigator 之plugins] 写了一个检测游览器插件
检测IE插件 function hasIEPlugin(name){ try{ new ActiveXObject(name); return true; }catch(ex){ return fal ...
- MySQL基础之常用函数
数学函数的使用 常用数学函数 函数 作用 函数 作用 ceil() 进一取整 abs() 取绝对值 floor() 舍掉小数部分 power() 幂运算 round() 四舍五入 pi() 圆周率 t ...
- MongoDB 不在开源了,使用 Homebrew 安装只能玩社区版了
使用了大半年的 mongodb ,最近在公司的新项目中应用,在 mac 上安装 mongodb 时发现始终安装不了,一直在报下面这样的错误: brew install mongodb 升级 brew ...
- Ubuntu下doxygen+graphviz使用概录
关键词:doxygen.Doxyfile.doxywizard.dot.graphviz等等. 使用doxygen从源码注释生成帮助文档或者SDK,输出格式有多种比如htmp.Latex等等. 如果想 ...
- UML工具-1-StarUML下载及破解
UML工具-StarUML 下载地址 http://staruml.io/
- Spring Cloud中五大神兽总结(Eureka/Ribbon/Feign/Hystrix/zuul)
Spring Cloud中五大神兽总结(Eureka/Ribbon/Feign/Hystrix/zuul) 1.Eureka Eureka是Netflix的一个子模块,也是核心模块之一.Eureka是 ...
- 201871010109-胡欢欢《面向对象程序设计(java)》第一周学习总结
<面向对象程序设计(java)>第一周学习总结 正文开头: 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 ...
- python的imread、newaxis
一:imread 用来读取图片,返回一个numpy.ndarray类型的多维数组,具有两个参数: 参数1 filename, 读取的图片文件名,可以使用相对路径或者绝对路径,但必须带完整的文件扩展名( ...