1、上一篇学习了服务提供者provider,但是并不是单单就学习了服务提供者。中间还穿插使用了Hikari数据源和spring cloud整合mybatis。但是上篇使用mybatis时还是沿用了老的方式,需要配置mapper对应的xml文件。先来看看上篇使用mybatis的主要步骤

一、 pom.xml文件引用

<dependency>

<groupId>org.mybatis</groupId>

<artifactId>mybatis-spring</artifactId>

<version>1.3.2</version>

</dependency>

<dependency>

<groupId>org.mybatis.spring.boot</groupId>

<artifactId>mybatis-spring-boot-starter</artifactId>

<version>1.3.2</version>

</dependency>

二、application.yml配置文件加入mybtias配置项

mybatis:

mapperLocations: classpath:sc/provider/dao/*.xml

#configLocation: classpath:mybatis-config.xml

三、编写mapper文件user-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="sc.provider.dao.UserDao" >

<select id="getUser" parameterType="java.lang.Long"  resultType="sc.provider.model.User">

select id, userName, age, position from t_user where id = #{id,jdbcType=INTEGER}

</select>

<select id="listUser" resultType="sc.provider.model.User">

select id, userName, age, position from t_user

</select>

<insert id="addUser" parameterType="sc.provider.model.User">

insert into t_user (

id, userName, age, position

) values (

#{id,jdbcType=INTEGER},

#{userName,jdbcType=VARCHAR},

#{age,jdbcType=INTEGER},

#{position,jdbcType=VARCHAR}

)

</insert>

<update id="updateUser" parameterType="sc.provider.model.User">

update t_user set

userName = #{userName,jdbcType=VARCHAR},

age = #{age,jdbcType=INTEGER},

position = #{position,jdbcType=VARCHAR}

where id = #{id,jdbcType=INTEGER}

</update>

<delete id="deleteUser" parameterType="java.lang.Long">

delete from t_user

where id = #{id,jdbcType=INTEGER}

</delete>

</mapper>

四、编写UserDao.java

package sc.provider.dao;

import java.util.List;

import sc.provider.model.User;

public interface UserDao {

User getUser(Long id);

List<User> listUser();

int addUser(User user);

int updateUser(User user);

int deleteUser(Long id);

}

五、 在ProviderApplication.java添加@MapperScan(basePackages="sc.provider.dao")

经过上面五个步骤才能使用mybatis。本篇将和大家看看不能简化spring cloud 整合mybatis的步骤(在sc-eureka-client-provider工程上改造)

一、 依赖必不可少

<dependency>

<groupId>org.mybatis</groupId>

<artifactId>mybatis-spring</artifactId>

<version>1.3.2</version>

</dependency>

<dependency>

<groupId>org.mybatis.spring.boot</groupId>

<artifactId>mybatis-spring-boot-starter</artifactId>

<version>1.3.2</version>

</dependency>

二、 删除application.yml关于mybatis的配置

三、 删除mapper文件user-mapper.xml文件

四、改造UserDao.java类

package sc.provider.dao;

import java.util.List;

import org.apache.ibatis.annotations.Delete;

import org.apache.ibatis.annotations.Insert;

import org.apache.ibatis.annotations.Mapper;

import org.apache.ibatis.annotations.Select;

import org.apache.ibatis.annotations.Update;

import sc.provider.model.User;

@Mapper

public interface UserDao {

@Select(value="select id, userName, age, position from t_user where id = #{id,jdbcType=INTEGER}")

User getUser(Long id);

@Select(value="select id, userName, age, position from t_user")

List<User> listUser();

@Insert(value="insert into t_user (id, userName, age, position) values ( #{id,jdbcType=INTEGER},#{userName,jdbcType=VARCHAR},#{age,jdbcType=INTEGER},#{position,jdbcType=VARCHAR})")

int addUser(User user);

@Update(value="update t_user set userName = #{userName,jdbcType=VARCHAR},age = #{age,jdbcType=INTEGER},position = #{position,jdbcType=VARCHAR} where id = #{id,jdbcType=INTEGER}")

int updateUser(User user);

@Delete(value=" delete from t_user where id = #{id,jdbcType=INTEGER}")

int deleteUser(Long id);

}

五、 @MapperScan注解必不可少

package sc.provider;

import org.mybatis.spring.annotation.MapperScan;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

@SpringBootApplication

@EnableEurekaClient

@MapperScan(basePackages="sc.provider.dao")

public class ProviderApplication {

public static void main(String[] args) {

SpringApplication.run(ProviderApplication.class, args);

}

}

经过以上步骤就把使用xml方式的mybatis改造成使用annotation方式的mybatis了。

2、启动注册中心sc-eureka-server,启动sc-eureka-client-provider-annotation(使用sc-eureka-client-provider项目改造),验证是否改造成功

方式一:

方式二:

圈住的名字是在application.yml配置的

3、使用postman方法相应restful接口,这里就不一一访问了,可以参考上一篇文章的访问方式

添加:

http://127.0.0.1:8300/user/addUser

查询:

http://127.0.0.1:8300/user/getUser/4

列表:

http://127.0.0.1:8300/user/listUser

更新:

http://127.0.0.1:8300/user/updateUser

删除:

http://127.0.0.1:8300/user/deleteUser/2

5、springcloud整合mybatis注解方式的更多相关文章

  1. Spring Boot整合Mybatis(注解方式和XML方式)

    其实对我个人而言还是不够熟悉JPA.hibernate,所以觉得这两种框架使用起来好麻烦啊. 一直用的Mybatis作为持久层框架, JPA(Hibernate)主张所有的SQL都用Java代码生成, ...

  2. SpringBoot整合Mybatis注解版---update出现org.apache.ibatis.binding.BindingException: Parameter 'XXX' not found. Available parameters are [arg1, arg0, param1, param2]

    SpringBoot整合Mybatis注解版---update时出现的问题 问题描述: 1.sql建表语句 DROP TABLE IF EXISTS `department`; CREATE TABL ...

  3. MyBatis从入门到精通(第3章):MyBatis注解方式的基本使用

    MyBatis 注解方式就是将 SQL 语句直接写在DAO层的接口上. 在黑马录制的2018年双元视频课:\08 SSM整合案例[企业权限管理系统]\07.订单操作  有使用MyBatis注解进行多表 ...

  4. SpringBoot数据访问之整合mybatis注解版

    SpringBoot数据访问之整合mybatis注解版 mybatis注解版: 贴心链接:Github 在网页下方,找到快速开始文档 上述链接方便读者查找. 通过快速开始文档,搭建环境: 创建数据库: ...

  5. mybatis源码学习--spring+mybatis注解方式为什么mybatis的dao接口不需要实现类

    相信大家在刚开始学习mybatis注解方式,或者spring+mybatis注解方式的时候,一定会有一个疑问,为什么mybatis的dao接口只需要一个接口,不需要实现类,就可以正常使用,笔者最开始的 ...

  6. springboot整合mybatis(注解)

    springboot整合mybatis(注解) 1.pom.xml: <?xml version="1.0" encoding="UTF-8"?> ...

  7. 【spring boot】14.spring boot集成mybatis,注解方式OR映射文件方式AND pagehelper分页插件【Mybatis】pagehelper分页插件分页查询无效解决方法

    spring boot集成mybatis,集成使用mybatis拖沓了好久,今天终于可以补起来了. 本篇源码中,同时使用了Spring data JPA 和 Mybatis两种方式. 在使用的过程中一 ...

  8. SpringBoot 2.x (9):整合Mybatis注解实战

    SSM框架再熟悉不过了,不过以前通常是使用XML写SQL语句 这里用SpringBoot整合Mybatis并且使用注解进行开发 依赖: <!-- Mybatis --> <depen ...

  9. MyBatis从入门到精通(五):MyBatis 注解方式的基本用法

    最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 1. @Select 注解 1.1 使 ...

随机推荐

  1. python删除某一行

    整理了网络上的一些方法,一般有两种方法:第一种:是先把文件读入内存,在内存中修改后再写入源文件. 例子:将内容包含“123”的所有行删去: with open('C:/Users/lai/Deskto ...

  2. JavaScript寻找最长的单词算法

    返回提供的句子中最长的单词的长度. 返回值应该是一个数字. 第一步,使用String.prototype.split()方法将字符串转换成数组 function findLongestWord(str ...

  3. .net Core在过滤器中获取 系统接口方法(以IMemoryCache 为例) 及HttpContext 获取系统接口

    public   Class  SysActionAttribute :Attribute, IActionFilter      //  Attribute  用于控制器中 特性控制,当在控制器或控 ...

  4. 2018-2-13-win10-uwp-HttpClient-post错误

    title author date CreateTime categories win10 uwp HttpClient post错误 lindexi 2018-2-13 17:23:3 +0800 ...

  5. 分支结构case 语句举例

  6. 安装JDK,并检测JDK是否安装成功

    方法/步骤   首先,我们需要先安装好我们的JDK软件,安装好之后,我们需要对我们的电脑进行环境变量配置的设置,这样我们安装的JDK才能真正起到作用.   第一步:我们需要将光标放在“计算机”上面,然 ...

  7. matplotlib不显示图片

    import matplotlib.pyplot as plt 绘制好图像之后,需要使用plt.show()才会显示出图片.

  8. boost库:智能指针

    1. C98里的智能指针 std::auto_ptr ,本质上是一个普通的指针,通过地址来访问你一个动态分配的对象,初始化时需要传递一个由new操作符返回的对象地址. std::auto_ptr的析构 ...

  9. Python--多态与多态性、绑定方法与非绑定方法

    多态与多态性 多态 多态指的是一类事物有多种形态,(一个抽象类有多个子类,因而多态的概念依赖于继承) 1. 序列类型有多种形态:字符串,列表,元组. s='hello' l=[,,] t=('a',' ...

  10. bzoj 2435

    http://www.lydsy.com/JudgeOnline/problem.php?id=2435 noi 你为什么那么diao, 这种世纪水题刷一道少一道啊... 我原来还以为是两边的联通块大 ...