spring boot 整合 mysql

最近开始学习spring boot,先从整合mysql开始,遇到了不少问题,尝试很多方法去解决,一些心得,和大家分享.下面进入正题

第一步:

spring boot 整合 mysql


一路next,这里根据需要,我只是测试mysql 选择的

spring boot 整合 mysql



然后看这里,默认是application.properties,我改成了yml文件,只留一个就可以,如果2个同时存在的情况,  yml配置无效

spring boot 整合 mysql 

 具体的application.yml文件配置,关键都在这!


server:

 port:9090                         

 tomcat:

   uri-encoding:UTF-8 

spring:

 datasource:

   url:jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8

   username:root

   password:root

   driver-class-name:com.mysql.jdbc.Driver

 jpa:

   database:MYSQL

   show-sql:true

   hibernate:

     ddl-auto:update

     naming-strategy: org.hibernate.cfg.ImprovedNamingStrategy

   properties:

     hibernate:

       dialect:org.hibernate.dialect.MySQL5Dialect


其中port:9090 可以自己定义, localhost:3306/test这里的test是具体使用的数据库,也是自己定义

配置好以后,可以启动一下试试,看是否可以正常启动

spring boot 整合 mysql


这个类是自动生成的启动类,进去后右键run as 

访问localhost,出现这个404页面,说明服务器已经正常启动,继续


spring boot 整合 mysql


下面写测试代码,首先创建一个实体对象,Pojo(Entity)类

package com.example.demo;

 import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.GenerationType;

import javax.persistence.Id;

import javax.persistence.Table;

 /**

* @author作者 E-mail:

* @version创建时间:2018523下午2:18:05

* 类说明

*/

@Table(name="table_user")

@Entity

publicclassUser {

 @GeneratedValue(strategy=GenerationType.AUTO)

 @Id

 long id;

  String username;

  String password;

 

  public long getId() {

     returnid;

  }

 

  public void setId(longid) {

     this.id = id;

  }

 

  public String getUsername() {

     returnusername;

  }

 

  public void setUsername(String username) {

     this.username = username;

  }

 

  public String getPassword() {

     return password;

  }

 

  public void setPassword(String password) {

     this.password = password;

  }

 

  @Override

  public String toString() {

     return"User [id="+ id + ", username="+ username+ ", password=" + password+ "]";

  }

 

  public User() { }

public User(longid, String username, String password) {

     super();

     this.id = id;

     this.username = username;

     this.password = password;

  } 

}


--------------------------------------

下面创建Dao层

package com.example.demo;

import org.springframework.data.repository.CrudRepository;

import org.springframework.transaction.annotation.Transactional;

 /**

* @author作者 E-mail:

* @version创建时间:2018523下午2:21:48

* 类说明

*/

@Transactional

public interface UserDao extends CrudRepository<User, Long>{

   public User findByusername(Stringusername);

}

-------------------------------------------

然后是controller控制层

package com.example.demo;

importorg.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Controller;

importorg.springframework.web.bind.annotation.RequestMapping;

importorg.springframework.web.bind.annotation.ResponseBody;

 

/**

* @author 作者 E-mail:

* @version 创建时间:2018年5月23日 下午2:24:13

* 类说明

*/

@Controller

public class UserController {

      @Autowired

     UserDao userDao; 

     @RequestMapping("/log")

     public String index () {

       return"log";

     }

 @ResponseBody

     @RequestMapping("/find")

     public String find(String username) {

 

       StringuserId;

 

       Useruser = userDao.findByusername(username);

 

     if(user!=null){

 

       userId= String.valueOf(user.getId()+user.getPassword());

      

       return"存在用户:"+user.getUsername()+"    密码 :"+user.getPassword()+"" ;

     }

 

     return"不存在这个用户!";

 

     }

 

}


直接在地址栏输入,如果页面返回结果就是正确的


spring boot 整合 mysql

该加的注解都加对地方就可以,


注意一点,Restcontroller不能返回页面(其实可以,这里就不详述了),@controller可以返回页面(这里拦截的是log)以下是区别


spring boot 整合 mysql



spring boot 整合 mysql


spring boot 整合 mysql


用SQL数据库建个简单的表,注意先开启授权

Grant all privileges on *.* to ‘root’@’%’ by ‘root’

spring boot 整合 mysql



spring boot 整合 mysql


把启动类和其他类放在同级,或是启动类的子包,这点很重要如图:

spring boot 整合 mysql


一步一步来,细心点,大家都可以成功,boot很好用,很方便,有不对的地方希望老鸟们多多指教.