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

猜你喜欢

转载自blog.csdn.net/FindHuni/article/details/83421478