最近开始学习spring boot,先从整合mysql开始,遇到了不少问题,尝试很多方法去解决,一些心得,和大家分享.下面进入正题
第一步:
一路next,这里根据需要,我只是测试mysql 选择的
然后看这里,默认是application.properties,我改成了yml文件,只留一个就可以,如果2个同时存在的情况, yml配置无效
具体的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是具体使用的数据库,也是自己定义
配置好以后,可以启动一下试试,看是否可以正常启动
这个类是自动生成的启动类,进去后右键run as
访问localhost,出现这个404页面,说明服务器已经正常启动,继续
下面写测试代码,首先创建一个实体对象,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创建时间:2018年5月23日下午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创建时间:2018年5月23日下午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"不存在这个用户!";
}
}
直接在地址栏输入,如果页面返回结果就是正确的
该加的注解都加对地方就可以,
注意一点,Restcontroller不能返回页面(其实可以,这里就不详述了),@controller可以返回页面(这里拦截的是log)以下是区别
用SQL数据库建个简单的表,注意先开启授权
Grant all privileges on *.* to ‘root’@’%’ by ‘root’把启动类和其他类放在同级,或是启动类的子包,这点很重要如图:
一步一步来,细心点,大家都可以成功,boot很好用,很方便,有不对的地方希望老鸟们多多指教.