spring boot初步学习

目录结构

 

pom.xml

  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.2.3.RELEASE</version>
    <relativePath />
  </parent>

  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    
    <dependency>  
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
  </dependencies>

p.s 一开始,maven下载jar包的速度实在是太慢了。

     后来查资料重新配了一下maven,速度有所提升。

     具体操作:maven/config目录下的settings.xml文件中添加镜像地址。           

    <mirror>      
      <id>daocloud-lbp0200</id>      
      <name>daocloud-lbp0200</name>      
      <url>http://lbp0200-maven.daoapp.io/maven2</url>      
      <mirrorOf>central</mirrorOf>    
    </mirror>    
    <mirror>        
      <id>clojars.org</id>        
      <name>clojars-daocloud</name>        
      <url>http://lbp0200-maven.daoapp.io/repo</url>        
      <mirrorOf>clojars</mirrorOf>    
    </mirror>

 

  Application.java

提供主入口,启动程序

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

 

 Example.java

控制器,具体实现

@RestController  
@EnableAutoConfiguration
public class Example {  
      
    @RequestMapping("/")  
    String home() {  
        return "Hello World!";  //地址栏输入localhost:8080 即可访问
    }  
      
    @RequestMapping("/hello/{myName}")  
    String index(@PathVariable String myName) {  
        return "Hello "+myName+"!!!";  //地址栏输入 localhost:8080/hello/{myName} 即可访问
    }  
    
    @RequestMapping("/hello/{myName}/{age}")
    String register(@PathVariable String myName, @PathVariable String age){
        return myName + "is" + age;
    }
}  

 

结合数据库(mySql)

添加依赖

    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
    </dependency>

application.properties

# ===============================
# = DATA SOURCE
# ===============================

# Set here configurations for the database connection

# Connection url for the database "XXX"
spring.datasource.url = jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=UTF-8

# Username and password
spring.datasource.username = 用户名
spring.datasource.password = 密码

# 配置一个连接在池中最小生存的时间
spring.datasource.testWhileIdle = true
spring.datasource.validationQuery = SELECT 1

# ===============================
# = JPA / HIBERNATE
# ===============================

# Use spring.jpa.properties.* for Hibernate native properties (the prefix is
# stripped before adding them to the entity manager).

# Show or not log for each sql query
spring.jpa.show-sql = true

# Hibernate DDL自动(创建,更新):“更新数据库”
# 根据项目中发现的实体类自动更新
spring.jpa.hibernate.ddl-auto = update

# Naming strategy
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy

# Allows Hibernate to generate SQL optimized for a particular DBMS
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect

# 更改代码后不需要重新启动
spring.thymeleaf.cache=false

Entity层

@Entity //标记实体??
@Table(name = "locations") //表名
public class Locations {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO) //标记自增
    private long id;
    
    private String device_id;  //加上@NotNull 表示为非空
    
    private String lat_stream;
    
    private String lng_stream;
    
    private String heading;
    
    private String velocity;
    
    @Column(name = "TIME")
    @Temporal(TemporalType.DATE) 
    private Date time;

    public long getId() {
        return id;
    }

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

    public String getDevice_id() {
        return device_id;
    }

    public void setDevice_id(String device_id) {
        this.device_id = device_id;
    }

    public String getLat_stream() {
        return lat_stream;
    }

    public void setLat_stream(String lat_stream) {
        this.lat_stream = lat_stream;
    }

    public String getLng_stream() {
        return lng_stream;
    }

    public void setLng_stream(String lng_stream) {
        this.lng_stream = lng_stream;
    }

    public String getHeading() {
        return heading;
    }

    public void setHeading(String heading) {
        this.heading = heading;
    }

    public String getVelocity() {
        return velocity;
    }

    public void setVelocity(String velocity) {
        this.velocity = velocity;
    }

    public Date getTime() {
        return time;
    }

    public void setTime(Date time) {
        this.time = time;
    }
    
    public String toString(){
        return "Locations{" +  
                "id=" + id +  
                ", device_id='" + device_id + '\'' +  
                ", lat_stream='" + lat_stream + '\'' +
                ", lng_stream='" + lng_stream + '\'' +
                ", heading='" + heading + '\'' +
                ", velocity='" + velocity + '\'' +
                ", time=" + time +
                '}';
    }
}

Dao层

@Transactional
public interface LocationsDao extends CrudRepository<Locations, Long>{
    public Locations findById(long id);
}

继承CrudRepository接口, 新增简单的增删改查操作。

我发现根据某一条件查询时,方法命名必须为findByXXX(XXX为在数据库中的名字),否则就会报错。(也许有改进的方法??)

写注解的方式

@Query("SELECT t FROM User t WHERE " + "LOWER(t.email) LIKE LOWER(CONCAT('%',:searchTerm, '%')) OR " 
+ "LOWER(t.name) LIKE LOWER(CONCAT('%',:searchTerm, '%'))") List<User> findBySearchTerm(@Param("searchTerm") String searchTerm);

p.s 使用这种方式进行update 或者 delete 语句时,需要添加 modifying 注解修饰  

@Query(value="delete from Locations",nativeQuery=true)  
@Modifying  
public void deleteAllBySql();

 

结合页面

js,css等静态文件放在src/main/resources下面的static目录下,就可直接访问。

路径控制

@Controller
public class PageController {    
    @RequestMapping("/heatMap")
    public String heatMap(ModelMap map){
        return "heatMap";
    }
}

这样在地址栏输入localhost:8080/heatMap 可以访问到src/main/resources/templates下的heatMap.html页面

另一种方法:直接将页面放在src/main/webapp目录下在地址栏输localhost:8080/heatMap.html也可访问

posted @ 2016-10-08 13:56  码码怡  阅读(1447)  评论(0编辑  收藏  举报