文档章节

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

木九天
 木九天
发布于 06/22 18:09
字数 1399
阅读 27
收藏 9
点赞 0
评论 2

序言:当第一篇讲道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

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

© 著作权归作者所有

共有 人打赏支持
木九天
粉丝 56
博文 139
码字总数 86288
作品 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读写分离(6)

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

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

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

筱飞
2016/07/21
200
0
崛起于Springboot2.X之配置文件详解(10)

序言:针对公司开发配置文件的一些基础常识 1、核心配置文件 springboot框架也被我认为一个工具,它的主要核心文件为application.properties,又可以命名为application.yml亦或者application...

木九天
前天
0
0
MyBatis学习手记(二)MyBatis缓存机制

MyBatis学习手记二 前:MyBatis官方学习(中文)文档 http://mybatis.github.io/mybatis-3/zh/index.html 一,首先,要使用MyBatis必须使用官方提供的MyBatis的JAR包 链接:https://github.com...

xiaolei123
2015/09/15
1K
4
MyBatis学习手记(一)MaBatis入门

MyBatis学习手记一 前:MyBatis官方学习(中文)文档 http://mybatis.github.io/mybatis-3/zh/index.html 一,首先,要使用MyBatis必须使用官方提供的MyBatis的JAR包 链接:https://github.com...

xiaolei123
2015/09/13
139
0
MyBatis:快速入门实例 HelloWorld

一、简介 MyBatis是一个轻量级的持久层框架,它可以帮我们省去繁杂的JDBC操作,包括获取数据库连接、设置参数、处理结果集、事务管理等等。通过XML配置或注解,即可实现简单的完成原本复杂的...

kolbe
2015/09/18
3.1K
0
呸呸呸/mybatis-mapper

#MyBatis通用Mapper ##方便的使用MyBatis单表的增删改查 为啥要写这个? 因为我最近做了个项目,必须用mybatis,重点是我不想写重复的sql 通用mapper有好多了,为啥要重新写一个? 本来是不想写的...

呸呸呸
2016/11/14
0
0
崛起于Springboot2.X之事务管理(12)

1、开启事务 启动类上添加注解@EnableTransactionManagement,默认开启事务,注解事务管理,等同于xml配置方式的 <tx:annotation-driven /> 接下来就可以直接在service方法上添加@Transactio...

木九天
昨天
0
2

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Java日志框架-logback配置文件多环境日志配置(开发、测试、生产)(原始解决方法)

说明:这种方式应该算是最通用的,原理是通过判断标签实现。 <!-- if-then form --> <if condition="some conditional expression"> <then> ... </then> </if> ......

浮躁的码农
21分钟前
1
0
FTP传输时的两种登录方式和区别

登录方式 匿名登录 用户名为: anonymous。 密码为:任何合法 email 地址。 授权登录 用户名为:用户在远程系统中的用户帐号。 密码为:用户在远程系统中的用户密码。 区别 匿名登录 只能访问...

寰宇01
22分钟前
0
0
plsql developer 配置监听(不安装oracle客户端)

plsql developer 配置监听(不安装oracle客户端)

微小宝
30分钟前
0
0
数据库(分库分表)中间件对比

本人的宗旨就是,能copy的,绝对不手写。 分区:对业务透明,分区只不过把存放数据的文件分成了许多小块,例如mysql中的一张表对应三个文件.MYD,MYI,frm。 根据一定的规则把数据文件(MYD)和索...

奔跑吧代码
33分钟前
2
0
Netty与Reactor模式详解

在学习Reactor模式之前,我们需要对“I/O的四种模型”以及“什么是I/O多路复用”进行简单的介绍,因为Reactor是一个使用了同步非阻塞的I/O多路复用机制的模式。 I/O的四种模型 I/0 操作 主要...

hutaishi
40分钟前
1
0
【2018.07.16学习笔记】【linux高级知识 20.16-20.19】

20.16/20.17 shell中的函数 20.18 shell中的数组 20.19 告警系统需求分析

lgsxp
45分钟前
0
0
用 D3.js 画一个手机专利关系图, 看看苹果,三星,微软间的专利纠葛

用 D3.js 画一个手机专利关系图, 看看苹果,三星,微软间的专利纠葛 前言 本文灵感来源于Mike Bostock 的一个 demo 页面 原 demo 基于 D3.js v3 开发, 笔者将其使用 D3.js v5 进行重写, 并改为...

ssthouse_hust
49分钟前
17
0
oracle查看表空间大小及表数量

一,查看数据库表空间大小 select tablespace_name ,sum(bytes) / 1024 / 1024 as MB from dba_data_files group by tablespace_name; 二,查看数据库中表的总数 select count(*) from use......

源哥L
59分钟前
0
0
debian 9 下 MySQLdb mysql_config not found

需要说明的是debian9 下MySQL 变成了mariadb. apt install libmariadbd18 apt install libmariadbd-dev apt install mysql-community-client...

idoz
今天
0
0
中介者设计模式

1、用一个中介者对象封装一系列的对象交互 中介者使各对象不需要显示地相互作用,从而使耦合松散,而且可以独立地改变它们之间的交互 中介者模式又称为调停者模式 2、为什么要使用中介者模式...

职业搬砖20年
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部