springcloud結合mybatis寫一個增刪改查小例子

前幾天因爲一同事讓練習使用springcloud結合mybatis來寫一個demo,於是慢慢的花了一天的時間一點點的整理下來,最後感覺達到自己預想的結果,不過感覺這方面還是需要多看書,多看資料總結。

我用的是ecplise+maven開發,

首先,創建一個父工程,在在創建三個子工程,其中common-api主要存放實體類,common-provider提供服務,common-consumer作爲消費者。

工程目錄:

common-provider

 common-consumer

common-api

父工程的pom.xml文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.csq.study</groupId>
  <artifactId>common</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>pom</packaging>
  <modules>
  	<module>common-api</module>
  	<module>common-consumer</module>
  	<module>common-provider</module>
  </modules>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>com.csq.study</groupId>
				<artifactId>common-api</artifactId>
				<version>0.0.1</version>
			</dependency>
 
			<dependency>	
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Dalston.SR1</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
			<dependency>	
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-dependencies</artifactId>
				<version>1.5.4.RELEASE</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
			<dependency>
				<groupId>mysql</groupId>
				<artifactId>mysql-connector-java</artifactId>
				<version>5.0.4</version>
			</dependency>
			<dependency>
				<groupId>com.alibaba</groupId>
				<artifactId>druid</artifactId>
				<version>1.0.31</version>
			</dependency>
			<dependency>
				<groupId>org.mybatis.spring.boot</groupId>
				<artifactId>mybatis-spring-boot-starter</artifactId>
				<version>1.3.0</version>
			</dependency>
		</dependencies>
	</dependencyManagement>
	<build>
		<finalName>common</finalName>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<configuration>
					<source>${jdk.version}</source>
					<target>${jdk.version}</target>
					<encode>${project.build.sourceEncoding}</encode>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

common-provider的pom.xml如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>com.csq.study</groupId>
    <artifactId>common</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <artifactId>common-provider</artifactId>
  <properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>
	<dependencies>
		<dependency>
			<groupId>com.csq.study</groupId>
			<artifactId>common-api</artifactId>
			 <version>0.0.1-SNAPSHOT</version>
		</dependency>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
		</dependency>
		<dependency> 
			<groupId>com.alibaba</groupId>
			<artifactId>druid</artifactId>
		</dependency>
		<dependency>
			<groupId>ch.qos.logback</groupId>
			<artifactId>logback-core</artifactId>
		</dependency>
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-jetty</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>springloaded</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
		</dependency>
	</dependencies>
</project>

common-consumer的pom.xml如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>com.csq.study</groupId>
    <artifactId>common</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <artifactId>common-consumer</artifactId>
  <dependencies>
		<dependency>
			<groupId>com.csq.study</groupId>
			<artifactId>common-api</artifactId>
			 <version>0.0.1-SNAPSHOT</version>
		</dependency>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-jetty</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
        	</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>springloaded</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
		</dependency>
	</dependencies>
</project>

common-api中主要就放實體類:

package com.csq.study;

import java.io.Serializable;

public class User implements Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	
	int id;
	String name;
	int age;
	
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	@Override
	public String toString() {
		return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
	}
	

}

sql腳本:

DROP DATABASE IF EXISTS "user" ;
CREATE TABLE `user` (
  `id` INT(11) DEFAULT NULL,
  `name` VARCHAR(255) DEFAULT NULL,
  `age` INT(11) DEFAULT NULL
) ENGINE=INNODB DEFAULT CHARSET=utf8;
INSERT INTO `user` VALUES ('1', '張三', '22'), ('2', '李四', '23'),('3', '王五', '22'), ('4', '趙六', '23');

 

 

common-prodiver的controller代碼:

package com.csq.study.controller;



import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import com.csq.study.Result;
import com.csq.study.User;
import com.csq.study.service.UserService;

@RestController
public class UserController {
	
	   @Autowired
	    UserService userService;
	   
	    @RequestMapping(value="/user/{id}",method=RequestMethod.GET)
	    public User findById(@PathVariable(value="id")int id) {
	    	
			return userService.findById(id);
		}
	    
	    @RequestMapping(value="/user",method=RequestMethod.GET)
		public List<User>findAll(User user) {
			
			return userService.findAll(user);
		}
		
	    @RequestMapping(value="/user",method=RequestMethod.POST)
		public Boolean update(@RequestBody User user) {
			return userService.update(user);
		}
	    @RequestMapping(value="/user",method=RequestMethod.PUT)
		public Boolean save(@RequestBody User user) {
	    	
			return userService.save(user);
		}
	    @RequestMapping(value="/user/{id}",method=RequestMethod.DELETE)
	    	public Boolean delete(@PathVariable(value="id")int id) {
				return userService.delete(id);
			}
	    }


service層:

package com.csq.study.service;

import java.util.List;

import com.csq.study.Result;
import com.csq.study.User;

public interface UserService {
	
    public User findById(int id);
	
	public List<User>findAll(User user);
	
	public Boolean update(User user);
	
	public Boolean save(User user);
	
	public Boolean delete(int  id);

}

serviceImpl:

package com.csq.study.serviceImpl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.csq.study.Result;
import com.csq.study.User;
import com.csq.study.dao.UserDao;
import com.csq.study.service.UserService;

@Service
@Transactional
public class UserServiceImpl implements UserService {
	
	@Autowired
	UserDao userDao;

	public User findById(int id) {
		// TODO Auto-generated method stub
		return userDao.findById(id);
	}

	public List<User> findAll(User user) {
		// TODO Auto-generated method stub
		return userDao.findAll(user);
	}

	public Boolean update(User user) {
		// TODO Auto-generated method stub
		return userDao.update(user);
	}

	public Boolean save(User user) {
		// TODO Auto-generated method stub
		return userDao.save(user);
	}

	public Boolean delete(int id) {
		// TODO Auto-generated method stub
		return userDao.delete(id);
	}

}


	



dao層:

package com.csq.study.dao;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;

import com.csq.study.User;

@Mapper
public interface UserDao {
	
	public User findById(int id);
	
	public List<User>findAll(User user);
	
	public Boolean update(User user);
	
	public Boolean save(User user);
	
	public Boolean delete(int  id);
   
}

快速啓動類:

package com.csq.study;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class ApplicationTest {

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

}

application文件:

server:
  port: 8002
mybatis:
  config-location: classpath:mybatis/mybatis.cfg.xml   
  type-aliases-package: com.csq.study                      
  mapper-locations:                                    
  - classpath:mybatis/mapper/**/*.xml
spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource    
    driver-class-name: org.gjt.mm.mysql.Driver     
    url: jdbc:mysql://localhost:3306/ssm_web?useUnicode=true&characterEncoding=utf-8&useSSL=true      
    username: root                                  
    password: root                               
    dbcp2:                                          
      min-idle: 5                                 
      initial-size: 5                            
      max-total: 5                                 
      max-wait-millis: 200                       
                      

mapper.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.csq.study.dao.UserDao">

    <select id="findById" resultType="User" parameterType="int">
        SELECT * FROM user
            <where>
                id = #{id}
            </where> 
    </select>

   <select id="findAll" resultType="User">
		SELECT id,name,age FROM user ;
	</select>
	

	<update id="update" parameterType="User">
		update user
		<trim prefix="set" suffixOverrides=",">
			<if test="name!=null">name=#{name},</if>
			<if test="age!=null">age=#{age},</if>
		</trim>
		WHERE id=#{id}
	</update>
	<delete id="delete" parameterType="User">
		delete from user where id=#{id};
	</delete>
	<insert id="save" parameterType="User">
		INSERT INTO user(id,name,age)
		VALUES (#{id},#{name},#{age}) ;
	</insert>
</mapper>

mybatis.cfg.xml文件:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration   
    PUBLIC "-//mybatis.org//DTD Config 3.0//EN"   
    "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration> 
	<settings>	
		<setting name="cacheEnabled" value="true"/>
	</settings>
</configuration>

啓動快速啓動類,通過postman 訪問url獲取到json數據 :

1.查詢所有

2.根據id查詢:

 3.更新數據:

查詢數據庫 發現更新成功

4.保存數據:

查詢數據庫發現保存成功

 

5.刪除數據:

查詢數據庫 發現已經刪除成功了

 爲止  ,搭建完成,

下一篇在介紹如何用消費者來消費

 

有不合理之處,還望提出,一定學習改正。謝謝。

當時搭建出現的錯誤,

出現的報錯:1.Description:

Cannot determine embedded database driver class for database type NONE

Action:

If you want an embedded database please put a supported one on the classpath. If you have database settings to be loaded from a particular profile you may need to active it (no profiles are currently active)

原因:配置文件不對,導致的加載不到數據源,解決辦法查看配置文件路徑

2.異常:This application has no explicit mapping for /error, so you are seeing this as a fallback.

原因:我們的啓動類和controller必須保持包含關係。就像下面截圖這樣

希望我的錯誤,可以幫助大家少走點彎路,如果對你有幫助,記得給個暖暖的贊,貼代碼也不容易

 轉載請註明出處: https://blog.csdn.net/FindHuni/article/details/83421478

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章