概 述

Spring Boot工程集成 MyBatis来实现 MySQL访问的示例我们见过很多,而最近用到了微软的 SQL Server数据库,于是本文则给出一个完整的 Spring Boot + MyBatis + SQL Server 的工程示例。

注: 本文首发于 My Personal Blog:CodeSheep·程序羊,欢迎光临 小站


工程搭建

  • 新建 Spring Boot工程
  • pom.xml 中添加 MyBatis和 SQL Server相关的依赖
<!--for mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency> <!--for SqlServer-->
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>sqljdbc4</artifactId>
<version>4.0</version>
</dependency>
复制代码
  • 配置 application.properties

这里同样主要是对于 MyBatis 和 SQL Server连接相关的配置

server.port=89

# mybatis 配置
mybatis.type-aliases-package=cn.codesheep.springbt_mybatis_sqlserver.entity
mybatis.mapper-locations=classpath:mapper/*.xml
mybatis.configuration.map-underscore-to-camel-case=true ## ------------------------------------------------- ## SqlServer 配置
spring.datasource.url=jdbc:sqlserver://xxxx:1433;databasename=MingLi
spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.datasource.username=xxxx
spring.datasource.password=xxxx
复制代码

建立 SQL Server数据表和实体类

  • 首先在 SQL Server数据库中新建数据表 user_test作为测试用表
DROP TABLE [demo].[user_test]
GO
CREATE TABLE [dbo].[user_test] (
[user_id] int NOT NULL ,
[user_name] varchar(50) NOT NULL ,
[sex] tinyint NOT NULL ,
[created_time] varchar(50) NOT NULL
) GO
复制代码
  • 然后在我们的工程中对应建立的 User实体类

其字段和实际数据表的字段一一对应

public class User {

    private Long userId;
private String userName;
private Boolean sex;
private String createdTime; public Long getUserId() {
return userId;
} public void setUserId(Long userId) {
this.userId = userId;
} public String getUserName() {
return userName;
} public void setUserName(String userName) {
this.userName = userName;
} public Boolean getSex() {
return sex;
} public void setSex(Boolean sex) {
this.sex = sex;
} public String getCreatedTime() {
return createdTime;
} public void setCreatedTime(String createdTime) {
this.createdTime = createdTime;
}
}
复制代码

Mybatis Mapper映射配置

  • MyBatis映射配置的 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="cn.codesheep.springbt_mybatis_sqlserver.mapper.UserMapper"> <resultMap id="userMap" type="cn.codesheep.springbt_mybatis_sqlserver.entity.User">
<id property="userId" column="user_id" javaType="java.lang.Long"></id>
<result property="userName" column="user_name" javaType="java.lang.String"></result>
<result property="sex" column="sex" javaType="java.lang.Boolean"></result>
<result property="createdTime" column="created_time" javaType="java.lang.String"></result>
</resultMap> <select id="getAllUsers" resultMap="userMap">
select * from user_test
</select> <insert id="addUser" parameterType="cn.codesheep.springbt_mybatis_sqlserver.entity.User">
insert into user_test ( user_id, user_name, sex, created_time ) values ( #{userId}, #{userName}, #{sex}, #{createdTime} )
</insert> <delete id="deleteUser" parameterType="cn.codesheep.springbt_mybatis_sqlserver.entity.User">
delete from user_test where user_name = #{userName}
</delete> </mapper>
复制代码
  • 与此同时,这里也给出对应 XML的 DAO接口
public interface UserMapper {
List<User> getAllUsers();
int addUser( User user );
int deleteUser( User user );
}
复制代码

为了试验起见,这里给出了 增 / 删 / 查 三个数据库操作动作。


编写 Service 和测试Controller

  • 上面这些准备工作完成之后,接下来编写数据库 CRUD的 Service类
@Service
@Primary
public class UserServiceImpl implements IUserService { @Autowired
private UserMapper userMapper; @Override
public List<User> getAllUsers() {
return userMapper.getAllUsers();
} @Override
public int addUser(User user) {
SimpleDateFormat form = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
user.setCreatedTime( form.format(new Date()) );
return userMapper.addUser( user );
} @Override
public int deleteUser(User user) {
return userMapper.deleteUser( user );
}
}
复制代码

这里的 Service功能同样主要关于数据表的 增 / 删 / 查 三个数据库操作动作。

  • 对照着上面的Service,我们编写一个对应接口测试的Controller
@RestController
public class UserController { @Autowired
private IUserService userService; @RequestMapping(value = "/getAllUser", method = RequestMethod.GET)
public List<User> getAllUser() {
return userService.getAllUsers();
} @RequestMapping(value = "/addUser", method = RequestMethod.POST)
public int addUser( @RequestBody User user ) {
return userService.addUser( user );
} @RequestMapping(value = "/deleteUser", method = RequestMethod.POST)
public int deleteUser( @RequestBody User user ) {
return userService.deleteUser( user );
} }
复制代码

实验测试

  • 插入数据

依次用 POSTMAN通过 Post /addUser接口插入三条数据:

{"userId":1,"userName":"刘能","sex":true}
{"userId":2,"userName":"赵四","sex":false}
{"userId":3,"userName":"王大拿","sex":true}
复制代码

插入完成后去 SQL Server数据库里看一下数据插入情况如下:

  • 查询数据

调用 Get /getAllUser接口,获取刚插入的几条数据

  • 删除数据

调用 Post /deleteUser接口,可以通过用户名来删除对应的用户


后 记

作者:CodeSheep
链接:https://juejin.im/post/5c1837ff6fb9a049d1320d76

Spring Boot 集成 MyBatis和 SQL Server实践的更多相关文章

  1. spring boot集成mybatis只剩两个sql 并提示 Cannot obtain primary key information from the database, generated objects may be incomplete

    前言 spring boot集成mybatis时只生成两个sql, 搞了一个早上,终于找到原因了 找了很多办法都没有解决, 最后注意到生成sql的时候打印了一句话: Cannot obtain pri ...

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

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

  3. spring boot集成mybatis(1)

    Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 sp ...

  4. spring boot集成mybatis(2) - 使用pagehelper实现分页

    Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 sp ...

  5. Spring Boot集成MyBatis开发Web项目

    1.Maven构建Spring Boot 创建Maven Web工程,引入spring-boot-starter-parent依赖 <project xmlns="http://mav ...

  6. 详解Spring Boot集成MyBatis的开发流程

    MyBatis是支持定制化SQL.存储过程以及高级映射的优秀的持久层框架,避免了几乎所有的JDBC代码和手动设置参数以及获取结果集. spring Boot是能支持快速创建Spring应用的Java框 ...

  7. 【spring boot】【mybatis】spring boot中mybatis打印sql语句

    spring boot中mybatis打印sql语句,怎么打印出来?[参考:https://www.cnblogs.com/sxdcgaq8080/p/9100178.html] 在applicati ...

  8. spring boot集成mybatis(3) - mybatis generator 配置

    Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 sp ...

  9. spring boot集成MyBatis 通用Mapper 使用总结

    spring boot集成MyBatis 通用Mapper 使用总结 2019年 参考资料: Spring boot集成 MyBatis 通用Mapper SpringBoot框架之通用mapper插 ...

随机推荐

  1. [转帖]overlay文件系统解析

    overlay文件系统解析 来源:http://dockone.io/article/1511 原作者: 陈爱珍 布道师@七牛云 一个 overlay 文件系统包含两个文件系统,一个 upper 文件 ...

  2. Longest Increasing Subsequence的两种解法

    问题描述: 给出一个未排序队列nums,如[10, 9, 2, 5, 3, 7, 101, 18].找出其中最长的增长序列,但不是连续增长序列,如[2, 3, 7, 101]就是对应的最长增长序列LI ...

  3. 第219天:Angular---过滤器

    在Angular中,过滤器的功能主要是格式化数据表达式,且可以自定义过滤器.作用域(scope)主要服务于页面模板,在控制器和页面中起桥梁作用,保存模板中的数据对象,为模板中的元素提供方法和属性. 一 ...

  4. P2617 Dynamic Rankings

    题目描述 给定一个含有n个数的序列a[1],a[2],a[3]……a[n],程序必须回答这样的询问:对于给定的i,j,k,在a[i],a[i+1],a[i+2]……a[j]中第k小的数是多少(1≤k≤ ...

  5. shell的sort命令

    sort命令以行为单位对文本进行排序. 命令语法: sort [-b/d/f/g/i/M/n/r] [InFile] 参数解释: -b: ignore-leading-blanks,忽略前面空格符部分 ...

  6. Business Cards UVALive - 4384(画图看图。。)

    只能由三种情况 都横着放  都竖着放  横和竖交错放 那就去判断好了... 具体看代码 #include <iostream> #include <cstdio> #inclu ...

  7. python之冒泡排序

    重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成.def Bubble_Sort(lists): ...

  8. 【poj2406】 Power Strings

    http://poj.org/problem?id=2406 (题目链接) 题意 给定一个字符串 L,已知这个字符串是由某个字符串 S 重复 R 次而得到的, 求 R 的最大值. Solution 后 ...

  9. BZOJ 2878 【NOI2012】 迷失游乐园

    题目链接:迷失游乐园 这道题也没有传说中的那么难写吗→_→ 似乎有篇博客讲得特详细……附上链接:戳这里 如果这道题不是基环树,而就是一棵树的话,我们来考虑改怎么做.因为树上的路径只有向上.向下两种走法 ...

  10. wazhu之agent manage

      代理生命周期 注册代理 一旦代理程序安装在要监控的计算机上,就必须向Wazuh管理器注册才能建立通信.这可以通过命令行,Authd或RESTful API完成. 注册代理将保留在管理器中,直到用户 ...