文档章节

崛起于Springboot2.X之Mybatis-xml方式操作mysql数据库(3)

木九天
 木九天
发布于 06/22 18:09
字数 1399
阅读 188
收藏 9

序言:当第一篇讲道Mybatis的时候,只要使用过mybatis的java程序员100%都会知道这种方式,因为这是最广泛最全面的编写sql操作mysql数据库的方式,高级sql的编写往往通过xml方式,接下来进入正题。

1、创建Springboot2.0 项目

1.1 new Project

 1.2 选择创建springboot项目

 1.3 命名,然后默认Maven构建项目(如果你熟悉Gradle,建议使用Gradle) 

1.4 选择2.0 以上的版本,同时Web一栏勾选Web

  1.5 在SQL上勾选Mysql 和Mybatis

 1.6 点击Next,然后选择自己的项目位置目录,最后确认后成功,等待下载对应的jar

 1.7 创建项目目录结构图

        但是此时不能成功的启动项目,因为我们刚刚把Mysql和Mybatis那两个勾选了,如果我们不勾选的话,就像上一篇博客一样直接运行最后成功,如果你想不直接运行的话,可以到pom.xml文件中删除mysql和mybatis的依赖,

<dependency>
   <groupId>org.mybatis.spring.boot</groupId>
   <artifactId>mybatis-spring-boot-starter</artifactId>
   <version>1.3.2</version>
</dependency>

<dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
   <scope>runtime</scope>
</dependency>

你把这个删除掉,然后右击pom.xml文件,出现如图,选择report,那么就会刷新maven的依赖

 

这个时候你运行,我们springboot项目与传统项目启动方式不一样。切记!

运行它,如图成功如图,启动成功

然后我们把刚刚在pom文件中删掉的那两个依赖撤回,继续保留在pom文件中,这个时候需要对mybatis和mysql添加配置文件以及属性

2、配置集成mysql

2.1 在application.properties中添加配置属性(也可以用application.yml,两者在使用上有点小区别,配置少的话,我觉得yml听好看的,但是属性配置多的话,太乱了,更喜欢properties的直观)

#mysql:
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/ds
spring.datasource.username=root
spring.datasource.password=xiaonengweiwu
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.max-idle=10
spring.datasource.max-wait=10000
spring.datasource.min-idle=5
spring.datasource.initial-size=5

application.properties如图

如果你想使用application.yml文件的话,更改下他的后缀名,改为yml就好,属性配置如图,,类似于一个树形图,记住冒号后面需要有空格(‘:’ 需要有空格,才能显示颜色),而且要有层级关系

我们随意选择一种配置方式就好,喜欢那种都可以,这样mysql集成的springboot就成功了

3、集成Mybatis的xml方式,操作Mysql,进行增删改查(CRUD操作)

      3.1 在项目主目录创建层次目录,controller、dao(mapper)、service、model(entity)如图,创建四个空的文件夹,创建java类,然后在Resource目录下创建mapper文件夹,用于放*.xml文件

mappings.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>
    <typeAliases>
        <typeAlias alias="Integer" type="java.lang.Integer" />
        <typeAlias alias="Long" type="java.lang.Long" />
        <typeAlias alias="HashMap" type="java.util.HashMap" />
        <typeAlias alias="LinkedHashMap" type="java.util.LinkedHashMap" />
        <typeAlias alias="ArrayList" type="java.util.ArrayList" />
        <typeAlias alias="LinkedList" type="java.util.LinkedList" />
    </typeAliases>
</configuration>

        3.2 创建表结构

CREATE TABLE `user` (
  `id` varchar(50) DEFAULT NULL,
  `username` varchar(30) NOT NULL,
  `password` varchar(40) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1

        3.3 创建 实体类,在entity文件夹下

public class User implements Serializable {
    private String id;
    private String username;
    private String password;

    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
}

不过如果大家觉得麻烦的话,可以使用lombok插件,现在入门,就不先讲那些所谓的插件了

        3.4 创建UserMapper

@Mapper
public interface UserMapper {
    User getUser(String id);
    void delUser(String id);
    void addUser(User user);
    void updateUser(User user);
}

        3.5 创建UserService

@Service("userService")
public class UserService {
    @Resource
    UserMapper userMapper;

    public User getUser(String id){
        return userMapper.getUser(id);
    }

    @Transactional(isolation = Isolation.DEFAULT,propagation = Propagation.MANDATORY,readOnly = true)
    public void addUser(User user){
        userMapper.addUser(user);
    }
    public void delUser(String id){
        userMapper.delUser(id);
    }
    public void updateUser(User user){
        updateUser(user);
    }
}

这样,我们创建UserService成功,但是一般情况下,我们引入的userMapper出现红色下划线,是因为配置的原因,这里也能够正常运行,IDEA在编辑时提示could not autowire, 解决办法 File-Project Structure 页面 Facets下删掉 Spring(直接右键Delete)

        3.6 接下来我们创建userMapper.xml 操作数据库,路径在Resource下面mapper/entity/UserMapper.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.springboot2.mjt01.mapper.UserMapper">

    <resultMap id="gainUsers" type="com.springboot2.mjt01.entity.User">
        <id property="id" column="id" jdbcType="VARCHAR" />
        <result property="username" column="username" jdbcType="VARCHAR" />
        <result property="password" column="password" jdbcType="VARCHAR" />
    </resultMap>

    <select id="getUser" parameterType="string" resultType="com.springboot2.mjt01.entity.User">
        select * from user
        where
        <if test="id != null">
            id = #{id}
        </if>

    </select>

    <insert id="addUser" parameterType="com.springboot2.mjt01.entity.User">
        INSERT INTO
        USER (id,username,password)
        VALUES
        (#{id},#{username,jdbcType=VARCHAR},#{password,jdbcType=VARCHAR})
    </insert>
    <insert id="addUsers" parameterType="java.util.List">
        INSERT INTO
        USER
        (id,username,password)
        VALUES
        <foreach collection="list" item="user" index="index" separator="" open="" close="">
          (#{id},#{username},#{password})
        </foreach>
    </insert>

    <delete id="delUser" parameterType="string">
        DELETE
        FROM USER
        WHERE
        id = #{id}
    </delete>

    <update id="updateUser" parameterType="com.springboot2.mjt01.entity.User">
        UPDATE
        USER
        SET
        id = #{id},
        username = #{username,jdbcType=VARCHAR},
        password = #{password,jdbcType=VARCHAR}
    </update>
</mapper>

        3.7 创建UserController

@Controller
public class UserController {
    @Autowired
    UserService userService;

    @GetMapping(value = "/mjt/user/getUser",produces = "application/json")
    @ResponseBody
    public String getUser(){
        String id  = "3fa444d0-c149-48b1-bc3e-cbe1bdcda300";
        User user = userService.getUser(id);
        System.out.println(user.getPassword());
        System.out.println(user.getUsername());
        return user.getPassword()+user.getUsername();
    }
}

        3.8 application.properties配置属性

#mybatis:
mybatis.mapper-Locations=classpath:mapper/entity/*.xml
mybatis.type-aliases-package=com.com.springboot2.mjt01.entity
mybatis.config=classpath:mapper/mappings.xml

运行成功截图:

三种方法测试:1、浏览器,不过只能支持Get方法 

                        2、PostMan工具

                        3、Curl工具,你可以在gitBash上面也可以直接使用0

我先往数据库添加了数据,测试正常

© 著作权归作者所有

共有 人打赏支持
木九天

木九天

粉丝 95
博文 191
码字总数 127707
作品 0
海淀
程序员
私信 提问
加载中

评论(2)

木九天
木九天

引用来自“chenhaiwu”的评论

idea自带rest测试工具

好,回去我看看
chenhaiwu
chenhaiwu
idea自带rest测试工具
崛起于Springboot2.X之集成FastMybatis操作mysql(8)

序言:fastMybatis是一个更加快捷的框架,搭建更加快捷以及使用简单方便,简化Mybatis的开发,码云地址,fastMybatis码云地址。 1、特点 1.1 支持mysql,sqlserver,oracle,postgresql,sqli...

木九天
06/26
0
0
崛起于Springboot2.X之generator逆向工程生成代码(9)

1、创建springboot项目,勾选Web,mysql,mybatis,我的是2.0.3版本 2、创建文件夹,mapper、model、mapper/entity,目录结构如下图 3、generatorConfig.xml文件放到resource下 <?xml versio...

木九天
06/27
0
0
崛起于Springboot2.X之mysql读写分离升级版(22)

介绍:本人之前写了一篇博客关于mysql的读写分离,那个需要配置多个类,如今读写分离升级了,我们不需要配置任何java配置文件类就可以,因为有人为我们封装了,我们只管添加依赖就好了 注意:...

木九天
07/19
0
0
崛起于Springboot2.X之Mysql读写分离(6)

序言:这个读写分离摘自于Springboot多数据源快速启动器,读写分离的话并不是按照传统方式的springmvc看方法命名那样,而是在每个方法上加注解或者类上添加注解表明选用的数据源。支持事物!...

木九天
06/26
0
0
MyBatis入门学习教程 MyBatis快速入门1-8(1)

一、Mybatis介绍      MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用...

筱飞
2016/07/21
200
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 钱不还,我就当你人不在了

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子 :分享Bigleaf的单曲《小鹿》 《小鹿》- Bigleaf 手机党少年们想听歌,请使劲儿戳(这里) 周日在家做什么? 做手工呀, @poorfis...

小小编辑
58分钟前
24
3
EOS docker开发环境

使用eos docker镜像是部署本地EOS开发环境的最轻松愉快的方法。使用官方提供的eos docker镜像,你可以快速建立一个eos开发环境,可以迅速启动开发节点和钱包服务器、创建账户、编写智能合约....

汇智网教程
今天
17
0
《唐史原来超有趣》的读后感优秀范文3700字

《唐史原来超有趣》的读后感优秀范文3700字: 作者:花若离。我今天分享的内容《唐史原来超有趣》这本书的读后感,我将这本书看了一遍之后就束之高阁了,不过里面的内容一直在在脑海中回放,...

原创小博客
今天
23
0
IC-CAD Methodology知识图谱

CAD (Computer Aided Design),计算机辅助设计,指利用计算机及其图形设备帮助设计人员进行设计工作,这个定义同样可以用来近似描述IC公司CAD工程师这个岗位的工作。 早期IC公司的CAD岗位最初...

李艳青1987
今天
28
0
CompletableFuture get方法一直阻塞或抛出TimeoutException

问题描述 最近刚刚上线的服务突然抛出大量的TimeoutException,查询后发现是使用了CompletableFuture,并且在执行future.get(5, TimeUnit.SECONDS);时抛出了TimeoutException异常,导致接口响...

xiaolyuh
今天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部