先创建一张表
CREATE TABLE `account` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) NOT NULL,
`money` double DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
INSERT INTO `account` VALUES ('1', 'aaa', '1000');
INSERT INTO `account` VALUES ('2', 'bbb', '1000');
INSERT INTO `account` VALUES ('3', 'ccc', '1000');
创建SpringBoot工程
这里开发环境选择idea
1 . File –> new –>Project
2 . 选择Spring initializr
3 . 选择加载web依赖
4 . 输入项目名称
5 . 创建完成
引入依赖
在pom文件引入spring-boot-starter-jdbc的依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
引入mysql连接类和连接池:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.29</version>
</dependency>
配置application.yml文件,配置mysql的驱动类,数据库地址,数据库账号、密码信息。
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/mysql
username: root
password: 877392053
创建Account(bean)
public class Account {
private int id;
private String name;
private double money;
public void setId(int id) {
this.id = id;
}
public void setName(String name){
this.name = name;
}
public void setMoney(double money){
this.money = money;
}
public int getId() {
return id;
}
public String getName(){
return name;
}
public double getMoney() {
return money;
}
}
DAO接口
public interface IAccountDAO {
int add(Account account);
int update(Account account);
int delete(int id);
Account findAccountById(int id);
List<Account> findAccountList();
}
数据库服务接口 IAccountService
public interface IAccountService {
int add(Account account);
int update(Account account);
int delete(int id);
Account findAccountById(int id);
List<Account> findAccountList();
}
数据库操作实现类 AccountDaoImpl
@Repository
public class AccountDaoImpl implements IAccountDAO {
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public int add(Account account) {
return jdbcTemplate.update("insert into account(name,money) values(?, ?)",
account.getName(),account.getMoney());
}
@Override
public int update(Account account) {
return jdbcTemplate.update("UPDATE account SET NAME=?,money=?,WHERE id=?",
account.getName(),account.getMoney(),account.getId());
}
@Override
public int delete(int id) {
return jdbcTemplate.update("DELETE from TABLE account where id=?",id);
}
@Override
public Account findAccountById(int id) {
List<Account> list = jdbcTemplate.query("select * from account where id = ?", new Object[]{id}, new BeanPropertyRowMapper(Account.class));
if(list!=null && list.size()>0){
Account account = list.get(0);
return account;
}else{
return null;
}
}
@Override
public List<Account> findAccountList() {
List<Account> list = jdbcTemplate.query("select * from account", new Object[]{}, new BeanPropertyRowMapper(Account.class));
if(list!=null && list.size()>0){
return list;
}else{
return null;
}
}
}
数据库服务实现类 AccountService
@Service
public class AccountService implements IAccountService {
//自动注入实现IAccountDAO接口的AccountDaoImpl类
@Autowired
IAccountDAO accountDAO;
@Override
public int add(Account account) {
return accountDAO.add(account);
}
@Override
public int update(Account account) {
return accountDAO.update(account);
}
@Override
public int delete(int id) {
return accountDAO.delete(id);
}
@Override
public Account findAccountById(int id) {
return accountDAO.findAccountById(id);
}
@Override
public List<Account> findAccountList() {
return accountDAO.findAccountList();
}
}
web控制器 DemoApplication
@SpringBootApplication
@RestController
@RequestMapping("/account")
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@RequestMapping("/hello")
public String hello(){
return "hello";
}
@Autowired
IAccountService accountService;
@RequestMapping(value = "/list",method = RequestMethod.GET)
public List<Account> getAccounts(){
return accountService.findAccountList();
}
@RequestMapping(value = "/{id}",method = RequestMethod.GET)
public Account getAccountById(@PathVariable("id") int id){
return accountService.findAccountById(id);
}
@RequestMapping(value = "/{id}",method = RequestMethod.PUT)
public String updateAccount(@PathVariable("id")int id , @RequestParam(value = "name",required = true)String name,
@RequestParam(value = "money" ,required = true)double money){
Account account=new Account();
account.setMoney(money);
account.setName(name);
account.setId(id);
int t=accountService.update(account);
if(t==1){
return account.toString();
}else {
return "fail";
}
}
@RequestMapping(value = "",method = RequestMethod.POST)
public String postAccount( @RequestParam(value = "name")String name,
@RequestParam(value = "money" )double money){
Account account=new Account();
account.setMoney(money);
account.setName(name);
int t= accountService.add(account);
if(t==1){
return account.toString();
}else {
return "fail";
}
}
}
使用Mybatis 访问 mysql 数据库
先添加mybatis依赖
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
建表:
CREATE TABLE `trackAnalysisResult`(
`id` int(11) NOT NULL AUTO_INCREMENT,
`userid` varchar(32) NOT NULL,
`clusterCenter` varchar(64) DEFAULT NULL,
`lng` varchar(32) DEFAULT NULL,
`lat` varchar(32) DEFAULT NULL,
`pois` varchar(32) DEFAULT NULL,
`symbolized` varchar(32) DEFAULT NULL,
`date` DATE DEFAULT NULL,
PRIMARY KEY(`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
application.properties文件配置
spring.datasource.url = jdbc:mysql://localhost:3306/{你的数据库名}
spring.datasource.username = root
spring.datasource.password = {你的密码}
spring.datasource.driver-class-name = com.mysql.jdbc.Driver
Bean
创建Track
public class Track {
int id;
String userid;
String clusterCenter;
String lng;
String lat;
String pois;
String synbolized;
String date;
public void setId(int id) {
this.id = id;
}
public void setClusterCenter(String clusterCenter) {
this.clusterCenter = clusterCenter;
}
public void setDate(String date) {
this.date = date;
}
public void setLat(String lat) {
this.lat = lat;
}
public void setLng(String lng) {
this.lng = lng;
}
public void setPois(String pois) {
this.pois = pois;
}
public void setSynbolized(String synbolized) {
this.synbolized = synbolized;
}
public void setUserid(String userid) {
this.userid = userid;
}
public int getId() {
return id;
}
public String getClusterCenter() {
return clusterCenter;
}
public String getDate() {
return date;
}
public String getLat() {
return lat;
}
public String getLng() {
return lng;
}
public String getPois() {
return pois;
}
public String getSynbolized() {
return synbolized;
}
public String getUserid() {
return userid;
}
}
Mapper&Dao层
使用mybatis的注解方式,可以使DAO层和Mapper层结合在一起
@Mapper
public interface TrackMapper {
@Insert("insert into trackAnalysisResult(userid,clusterCenter,lng,lat,pois,symbolized,date) values(#{userid},#{clusterCenter},#{lng},#{lat},#{pois},#{symbolized},#{date})")
int insert(@Param("userid")String userid, @Param("clusterCenter")String clusterCenter, @Param("lng")String lng, @Param("lat")String lat, @Param("pois")String pois, @Param("symbolized")String symbolized, @Param("date")String date);
@Delete("delete from trackAnalysisResult where id = #{id}")
int deleteById(@Param("id")int id);
@Delete("delete from trackAnalysisResult where userid = #{userid}")
int deleteByUserid(@Param("userid")String userid);
@Delete("delete from trackAnalysisResult where date = #{date}")
int deleteByDate(@Param("date")String date);
@Update("update trackAnalysisResult set symbolized=#{symbolized} where userid=#{userid} and clusterCenter=#{clusterCenter}")
int update(@Param("symbolized")String symbolized,@Param("userid")String userid,@Param("clusterCenter")String clusterCenter);
@Select("select * from trackAnalysisResult where userid = #{userid}")
List<Track> selectByUserid(@Param("userid")String userid);
@Select("select * from trackAnalysisResult")
List<Track> selectAll();
}
Service层
创建service层进一步隔离数据库操作,解耦
@Service
public class TrackService {
@Autowired
TrackMapper trackMapper;
public int insert(String userid,String clusterCenter,String lng,String lat,String pois,String symbolized,String date){
return trackMapper.insert(userid,clusterCenter,lng,lat,pois,symbolized,date);
}
public int deleteById(int id){
return trackMapper.deleteById(id);
}
public int deleteByUserid(String userid){
return trackMapper.deleteByUserid(userid);
}
public int deleteByDate(String date){
return trackMapper.deleteByDate(date);
}
public int update(String symbolized,String userid,String clusterCenter){
return trackMapper.update(symbolized, userid, clusterCenter);
}
public List<Track> selectAll(){
return trackMapper.selectAll();
}
public List<Track> selectByUserid(String userid){
return trackMapper.selectByUserid(userid);
}
}
Controller层
@RestController
@RequestMapping(value = "/track")
public class TrackController {
@Autowired
TrackService trackService;
@RequestMapping(value = "/insert",method = RequestMethod.POST)
public String Trackinsert(@RequestBody JSONObject reqJson){
String userid = reqJson.getString("userid");
String clusterCenter = reqJson.getString("clusterCenter");
String lng = reqJson.getString("lng");
String lat = reqJson.getString("lat");
String pois = reqJson.getString("pois");
String symbolized = reqJson.getString("symbolized");
String date = reqJson.getString("date");
int t = trackService.insert(userid,clusterCenter,lng,lat,pois,symbolized,date);
if(t==1){
return "success";
}else{
return "fail";
}
}
@RequestMapping(value = "/deleteById",method = RequestMethod.DELETE)
public String TrackDeleteById(@RequestBody JSONObject reqJson){
String id = reqJson.getString("id");
int t = trackService.deleteById(Integer.parseInt(id));
if(t==1){
return "success";
}else{
return "fail";
}
}
@RequestMapping(value = "/deleteByUserid",method = RequestMethod.DELETE)
public String TrackDeleteByUserid(@RequestBody JSONObject reqJson){
String userid = reqJson.getString("userid");
int t = trackService.deleteByUserid(userid);
if(t==1){
return "success";
}else{
return "fail";
}
}
@RequestMapping(value = "/deleteByDate",method = RequestMethod.DELETE)
public String deleteByDate(@RequestBody JSONObject reqJson){
String date = reqJson.getString("date");
int t = trackService.deleteByDate(date);
if(t==1){
return "success";
}else{
return "fail";
}
}
@RequestMapping(value = "/update",method = RequestMethod.POST)
public String update(@RequestBody JSONObject reqJson){
String symbolized = reqJson.getString("symbolized");
String userid = reqJson.getString("userid");
String clusterCenter = reqJson.getString("clusterCenter");
int t = trackService.update(symbolized, userid, clusterCenter);
if(t==1){
return "success";
}else{
return "fail";
}
}
@RequestMapping(value = "/selectAll",method = RequestMethod.POST,produces = "application/json")
public List<Track> selectAll(){
return trackService.selectAll();
}
@RequestMapping(value = "/selectByUserid",method = RequestMethod.POST,produces = "application/json")
public List<Track> selectByUserid(@RequestBody JSONObject reqJson){
String userid = reqJson.getString("userid");
return trackService.selectByUserid(userid);
}
}