1. 概述
springboot是最近非常火的基于spring的微服务框架,它简化了使用springmvc非常繁琐的配置信息管理,让开发者专注于实现自己的业务逻辑。
2. 使用
2.1 新建一个springboot项目
下面以intellij idea工具为例讲解如何创建一个访问数据库的springboot微服务。
在IDE里面 NEW->PROJECT 然后依次如下来配置选项。
最后点击完成生成如下的springboot目录结构。
创建过程问题:
1. 如果在对应的包下面新建java文件时,看不到java代码选项,可以将java目录设置为source roots
如此以来,就可以在对应的包下新建包或者java代码,但是会带来另外一个问题, 就是发现了部分文件里面会提示“can not resolve springframework”信息, 此问题可以通过以下方式来解决。
2.2 数据库相关配置
编辑application.properties文件,添加如下内容设置数据库相关配置信息:
spring.datasource.url = jdbc:mysql://localhost:3306/test // 修改为自己的数据库
spring.datasource.username = root
spring.datasource.password = 1234
spring.datasource.driverClassName = com.mysql.jdbc.Driver
3. 数据库处理逻辑代码
在数据库中建立一种用户表,如下:
字段 | 类型 | 描述 |
id | bigint(20) | 主键id |
name | varchar(64) | 姓名 |
age | int(11) | 年龄 |
city | varchar(64) | 所在城市 |
然后,创建controller、service、dao、mapper包,并添加对应的代码。
在dao层下面新建UserDao类
package com.windyman.dao;
import java.util.Locale;
public class UserDao {
/**
* 主键id
*/
private long id;
/**
* 姓名
*/
private String name;
/**
* 年龄
*/
private int age;
/**
* 城市
*/
private String city;
/**
* @param id
*/
public void setId(long id) {
this.id = id;
}
/**
* @return
*/
public long getId() {
return this.id;
}
/**
*
* @param name
*/
public void setName(String name) {
this.name = name;
}
/**
*
* @return
*/
public String getName() {
return this.name;
}
/**
*
* @param age
*/
public void setAge(int age) {
this.age = age;
}
/**
*
* @return
*/
public int getAge() {
return this.age;
}
/**
*
* @param city
*/
public void setCity(String city) {
this.city = city;
}
/**
*
* @return
*/
public String getCity() {
return this.city;
}
}
在mapper包下面新建UserMapper接口
package com.windyman.mapper;
import com.windyman.dao.*;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Insert;
public interface UserMapper {
@Select("SELECT * FROM user WHERE id = #{id}")
public UserDao getById(@Param("id") long id);
@Insert("INSERT INTO user(name, age, city) VALUES(#{name}, #{age}, #{city})")
public int insert(@Param("name") String name, @Param("age") Integer age, @Param("city") String city);
}
在service下面新建UserService类
package com.windyman.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.windyman.dao.UserDao;
import com.windyman.mapper.UserMapper;
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public UserDao getUserById(long id) {
return userMapper.getById(id);
}
public int insertUser(String name, int age, String city) {
return userMapper.insert(name, age, city);
}
}
在controller下面新建UserController类
package com.windyman.controller;
//import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import com.windyman.dao.UserDao;
import com.windyman.service.UserService;
import java.util.HashMap;
@RestController
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/userinfo")
public UserDao getUser(long id) {
return userService.getUserById(id);
}
@RequestMapping(value="/useradd", method = RequestMethod.GET)
public HashMap userAdd(@RequestParam("name") String name,
@RequestParam("age") String age,
@RequestParam("city") String city) {
int intAge = Integer.parseInt(age);
int id = userService.insertUser(name, intAge, city);
HashMap response = new HashMap();
response.put("status", 0);
response.put("msg", "success");
response.put("data", id);
return response;
}
}
最后修改程序的入口类
package com.windyman;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("com.windyman.mapper")
public class LearnspringbootApplication {
public static void main(String[] args) {
SpringApplication.run(LearnspringbootApplication.class, args);
}
}
启动程序, 访问http://localhost:8080/userinfo?id=5 得到json返回数据
访问http://localhost:8080/useradd?name=张三&age=20&city=上海