Spring boot 初学教程(二)

好的,写了初学教程,就顺手写一下关于数据库使用这里的,说实话我也是边学边写的。如果有些问题的话,也希望大家可以指出。哈哈。

一.首先说说关于配置文件:
1 Spring Boot 提供的 SpringApplication 类会搜索并加载 application.properties 文件来获取配置属性值。

上一章讲述了项目的生成。在项目生成后,application.properties这个文件的位置是在resources下的。
这里写图片描述
在这文件里,可以设置一些环境变量以及配置。例如这样

#这些是配置文件
spring.datasource.url = jdbc:mysql://localhost:3306/hello
spring.datasource.username = root
spring.datasource.password = root
spring.datasource.driverClassName = com.mysql.jdbc.Driver
# Specify the DBMS
spring.jpa.database = MYSQL
# Show or not log for each sql query
spring.jpa.show-sql = true
# Hibernate ddl auto (create, create-drop, update)
spring.jpa.hibernate.ddl-auto = update
# Naming strategy
#spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy

# stripped before adding them to the entity manager)
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect


#这个是环境变量 
name=zhangsan

环境变量可以这样用:

 @Value("${name}")
    private String name;

    @RequestMapping("/b")
    String home() {
        return String.format("Hello %s !", name);
    }

二.好了,下来说说关于数据库连接的:
所有的项目,倘若没有数据交互,那基本上已经是一个废项目了(就像一个咸鱼一样)。在上边的数据库配置填完之后,就可以来做数据库的相关操作了。

首先来创建一个实体对象,在这里,要和数据库的表所关联。
其中有个细节的地方,在name和desc上,没有直接用名称,因为其在数据库中的名称是关键字,不能直接使用,所以就加上了 那两个`

package com.meizu.example.entity;


import javax.persistence.*;

/**
 * Created by yangrui1 on 2016/11/21.
 */
@Entity
@Table(name = "member")
public class Member {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;
    @Column(name = "`name`")
    private String name;

    private int age;

    private String password;

    @Column(name = "`DESC`")
    private String desc;


    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }

    public Member() {

    }

    public Member(Integer id) {
        this.id = id;
    }

    @Override
    public String toString() {
        return "Member{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", passward='" + password + '\'' +
                ", desc='" + desc + '\'' +
                '}';
    }
}

接下来就要有与之对应的dao层:

package com.meizu.example.dao;

import com.meizu.example.entity.Member;
import org.springframework.data.repository.CrudRepository;
import org.springframework.transaction.annotation.Transactional;

/**
 * Created by yangrui1 on 2016/11/21.
 */
@Transactional
public interface MemberDao extends CrudRepository<Member, Integer> {
    //通过desc查询
    public Member getByDesc(String desc);

}

dao是一个interface,继承了CrudRepository,并要填上自己的实体的对象类型。来一起看看CrudRepository这个类

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//

package org.springframework.data.repository;

import java.io.Serializable;
import org.springframework.data.repository.NoRepositoryBean;
import org.springframework.data.repository.Repository;

@NoRepositoryBean
public interface CrudRepository<T, ID extends Serializable> extends Repository<T, ID> {
    <S extends T> S save(S var1);

    <S extends T> Iterable<S> save(Iterable<S> var1);

    T findOne(ID var1);

    boolean exists(ID var1);

    Iterable<T> findAll();

    Iterable<T> findAll(Iterable<ID> var1);

    long count();

    void delete(ID var1);

    void delete(T var1);

    void delete(Iterable<? extends T> var1);

    void deleteAll();
}

这些方法都是可以不用去写的。自动有实现,除非要定制一些特殊的方法才要去写。
如果要用某个字段去查询,就这样

    //通过desc查询
    public Member getByDesc(String desc);

完全不用谢实现类,贼尼玛方便、、、
而增加删除直接调用接口就好了。 至于修改update,仍然是save方法,只是在这里就需要填入一个id了。有id是修改,没有id就是新增。。。

有的时候需要自定义一些语句怎么办呢?
查询的是这样的

   /**
     * 通过desc和name查询
     *
     * @param desc
     * @param name
     * @return
     */
    @Query(value = "select * from member m where `desc`=?1 and `name`=?2 ", nativeQuery=true)
    public Member getByDescAndName(String desc, String name);

如果是增删改,那么就要再加上一个
@Modifying

 // 使用query 注解进行update 或者 delete 语句时,需要添加 modifying 注解修饰  
    @Query(value="delete from member",nativeQuery=true)  
    @Modifying  
    public void deleteAllBySql();  

三.修改端口:
值得一提的是,如果想要对端口启动进行修改。不像以前的的要在配置文件里修改,现在直接在那个主controller里修改即可。但是要要实现EmbeddedServletContainerCustomizer类

@RestController
@SpringBootApplication
public class SpringBootDemoApplication  implements EmbeddedServletContainerCustomizer {

    public static void main(String[] args) {
        SpringApplication.run(SpringBootDemoApplication.class, args);
    }

    @Override
    public void customize(ConfigurableEmbeddedServletContainer container) {
        container.setPort(80);
    }
}
### 关于Spring Boot初学教程 对于希望入门Spring Boot的开发者而言,可以从多个角度入手学习。以下是针对初学者的一些推荐资源和方法: #### 推荐的学习资源 1. **freeCodeCamp 的 Spring Boot 教程** 这是一个非常受欢迎的免费在线课程,时长仅为两小时且无广告干扰,非常适合快速上手 Spring Boot 基础知识[^1]。 2. **Baeldung 的 Spring Boot 学习系列** Baeldung 提供了一套全面的 Spring Boot 学习资料,涵盖了从初级到高级的内容。这套材料不仅适合新手,还能够作为后续开发中的参考资料[^3]。 3. **JetBrains Reactive Spring 教程** 如果您对响应式编程感兴趣,可以尝试 JetBrains 提供的相关教程。虽然它更偏向于进阶主题,但对于理解现代 Web 应用程序架构仍然很有帮助。 4. **中文入门实战指南** 对于国内开发者来说,“Spring MVC & Spring Boot 入门实战” 是一本不错的书籍或文章。通过实际操作创建一个 Spring Boot 工程并配置所需依赖项,可以帮助加深对框架的理解[^2]。 5. **官方文档与参考手册** 官方文档始终是最权威的信息源之一。尽管可能稍显枯燥,但它提供了最详尽的功能描述和技术细节说明。建议在遇到具体问题时查阅官方文档获取解答。 #### 初步实践步骤 为了更好地掌握 Spring Boot 技能,在理论学习之外还需要动手练习。下面给出一些简单的项目想法: - 构建 RESTful API 服务端接口。 - 实现基于 Thymeleaf 或其他模板引擎渲染页面的小型网站。 - 将数据库连接引入应用中完成 CRUD 操作演示。 ```java @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } ``` 以上代码展示了如何定义一个基本的应用入口类来启动您的第一个 Spring Boot 程序实例。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值