SpringBoot学习之路:04.Spring Boot集成Mybatis操作数据库

Stella981
• 阅读 756

        前面说了Spring Boot的使用Jpa操作数据库,今天要说是Spring Boot集目前比较受欢迎的持久层框架Mybatis,我个人对mybatis是比较喜欢的,接下来我们在SpringBoot中集成它,我们依旧使用mysql做例子,编写一个简单的用户模块的CRUD的例子。

1.项目依赖包的引入

org.mybatis.spring.boot

mybatis-spring-boot-starter

1.2.0

2.配置文件写入配置

mybatis:

type-aliases-package: com.maxbill.web.model

mapper-locations: classpath:com/maxbill/web/mapper/*.xml

注意:type-aliases-package配置别名扫描包, mapper-locations配置mapper配置文件

3.设计数据库表结构

SpringBoot学习之路:04.Spring Boot集成Mybatis操作数据库

4.使用Mybatis-Generator生成mapper和model文件

我们使用mybatis-generator插件来生成dao层的mapper文件和用户model类;mybatis-generator使用有三种方式:1.命令行,2.eclipse插件,3.maven插件;我们的工程是使用maven构建的,所以我们使用四三种方式:

1.在pom中引入mybatis-generator插件的依赖:

org.mybatis.generator mybatis-generator-maven-plugin 1.3.5 src/main/resources/mybatis-generator/generatorConfig.xml true true org.mybatis.generator mybatis-generator-core 1.3.2

2.修改插件的配置文件

    <jdbcConnection
            driverClass="com.mysql.jdbc.Driver"
            connectionURL="jdbc:mysql://127.0.0.1:3306/blog"
            userId="root"
            password="admin">
    </jdbcConnection>

    <javaTypeResolver>
        <property name="forceBigDecimals" value="false"/>
    </javaTypeResolver>

    <!-- 生成模型的包名和位置 -->
    <javaModelGenerator targetPackage="com.maxbill.web.model" targetProject="d:\\Data">
        <property name="enableSubPackages" value="true"/>
        <property name="trimStrings" value="true"/>
    </javaModelGenerator>

    <!-- 生成的映射文件包名和位置 -->
    <sqlMapGenerator targetPackage="com.maxbill.web.mapper" targetProject="d:\\Data">
        <property name="enableSubPackages" value="true"/>
    </sqlMapGenerator>

    <!-- 生成DAO的包名和位置 -->
    <javaClientGenerator type="XMLMAPPER" targetPackage="com.maxbill.web.mapper" 

  targetProject="d:\Data">

    <table tableName="s\_user" domainObjectName="User" enableCountByExample="true" 

  enableUpdateByExample="true" enableDeleteByExample="true"   enableSelectByExample="true"   selectByExampleQueryId="true"/>

3.使用maven命令生成代码

SpringBoot学习之路:04.Spring Boot集成Mybatis操作数据库

看到以下的输出日志,编译成功!
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building boot 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- mybatis-generator-maven-plugin:1.3.5:generate (default-cli) @ boot ---
[INFO] Connecting to the Database
[INFO] Introspecting table s_user
[INFO] Generating Example class for table s_user
[INFO] Generating Record class for table s_user
[INFO] Generating Mapper Interface for table s_user
[INFO] Generating SQL Map for table s_user
[INFO] Saving file UserMapper.xml
[INFO] Saving file UserExample.java
[INFO] Saving file User.java
[INFO] Saving file UserMapper.java
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.922 s
[INFO] Finished at: 2017-03-16T20:16:47+08:00
[INFO] Final Memory: 12M/155M
[INFO] ------------------------------------------------------------------------

打开磁盘目录我们看到已经生成了我们需要的文件。

注意:mybatis-generator有人开发了gui版,github地址:https://github.com/astarring/mybatis-generator-gui,需要的可以使用gui版:

SpringBoot学习之路:04.Spring Boot集成Mybatis操作数据库

5.编写service层逻辑代码

用户service接口

package com.maxbill.base.service;

import com.maxbill.base.model.User;

public interface UserService {

int saveUser(User user);

int deleteUser(String userid);

int deleteUser(User user);

User findUserById(String userid);

}

用户service实现类

package com.maxbill.base.service.impl;

import com.maxbill.base.mapper.UserMapper; import com.maxbill.base.model.User; import com.maxbill.base.service.UserService; import org.springframework.stereotype.Service;

/** * @func 用户模块业务逻辑实现层 * @user MaxBill * @date 2017-03-15 * @mail 1370581389@qq.com */ @Service public class UserServiceImpl implements UserService {

private UserMapper userMapper;

/\*\*
 \* 添加用户
 \*/
public int saveUser(User user) {
    return this.userMapper.insertSelective(user);
}

/\*\*
 \* 删除用户
 \*/
public int deleteUser(String userid) {
    return this.userMapper.deleteByPrimaryKey(userid);
}

/\*\*
 \* 更新用户
 \*/
public int updateUser(User user) {
    return this.userMapper.updateByPrimaryKeySelective(user);
}

/\*\*
 \* 按id查新用户
 \*/
public User findUserById(String userid) {
    return this.userMapper.selectByPrimaryKey(userid);
}

}

编写用户控制器接口方法,和上一章中一样,这里不再赘述。

6.在启动器中添加mapper扫描

package com.maxbill;

import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication @MapperScan("com.maxbill.web.mapper")//扫描mapper public class BootApplication {

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

}

启动项目,测试各接口都正常。

以上就是Spring Boot集成Mybatis对数据库的数据的CRUD操作。下一篇主要说一下集成pagehelper分页插件。

MaxBill(2017-03-16)

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Easter79 Easter79
3年前
SpringBoot学习之路:04.Spring Boot集成Mybatis操作数据库
    前面说了SpringBoot的使用Jpa操作数据库,今天要说是SpringBoot集目前比较受欢迎的持久层框架Mybatis,我个人对mybatis是比较喜欢的,接下来我们在SpringBoot中集成它,我们依旧使用mysql做例子,编写一个简单的用户模块的CRUD的例子。1.项目依赖包的引入_<depend
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这