springboot整合mybatis

这篇博客介绍了如何在SpringBoot项目中整合Mybatis,包括初始化项目、配置数据库、使用Mybatis Generator自动生成代码,以及运行测试。作者提供了一个完整的项目流程,包括配置文件、数据库表创建、实体类、Mapper接口、XML文件生成,以及Controller和Service层的代码示例,鼓励读者通过实践学习并解决可能出现的问题。

Mybatis初学(springboot整合)

进入大学这么久了,从大一就听老师在说要早点写出自己的博客啊,然而现在才开始写我的第一篇博客,知识浅薄,经验不足,望各位不吝赐教。
好了,正题开始了,最近刚开始学mybatis,查阅了比较多的资料,今天就写写springboot整合mybatis最简单的操作吧。(开发工具 IDEA)

1.准备springboot项目

首先我们初始化一个springboot项目:
初始化springboot项目

在这里插入图片描述
选择依赖,这里我们选择的依赖有web、mysql、mybatis
在这里插入图片描述

2初始化项目之后开始配置

这里我优先展示我的工程目录结构方便大家观看。
目录结构
如图所示我们找到application.properties文件所在位置,因为习惯这里我改为了application.yml配置方式,在里面配置我们的springboot项目的基础配置

server:
  port: 8080#配置端口

spring:
  datasource:
    name: mybatis#数据库名称
    url: jdbc:mysql://127.0.0.1:3306/mybatis#数据库连接信息
    username: root#用户名
    password: 123123#密码
   
    driver-class-name: com.mysql.jdbc.Driver#连接驱动
mybatis:
  mapper-locations: classpath:mapping/*.xml  #这里根据我给出的目录,大家可以参照写出自己的路径,一定要正确写出路径
  type-aliases-package: com.cuit.mybatis.model  # 对应实体类的路径

现在对应的数据库中建个表 代码如下:

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for t_user
-- ----------------------------
DROP TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user`  (
  `id` int(11) NOT NULL,
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `password` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of t_user
-- ----------------------------
INSERT INTO `t_user` VALUES (2, '2', '2');
INSERT INTO `t_user` VALUES (3, '3', '3');

SET FOREIGN_KEY_CHECKS = 1;

接下来配置我们的实体类等,由于传统的配置手写代码较多,这里我使用的是mybatis的generator来自动生成我们的若干使用类:
在pom.xml文件中的plugins中添加如下代码完成安装generator的插件:

			<plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.2</version>
                <configuration>
                    <verbose>true</verbose>
                    <overwrite>true</overwrite>
                </configuration>
            </plugin>

添加完成后参照我给出的目录结构新建generatorConfig.xml文件,特别注意:这个文件的路径一定要跟我们在application.yml配置的路径一样,generatorConfig.xml代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
    <!--给出mysql驱动包的本地位置-->
    <classPathEntry location="D:\工程师软件\Java标签库与连接池\mysql-connector-java-5.1.46-bin.jar"/>
 <context id="default" targetRuntime="MyBatis3">
        <!--jdbc的数据库连接。这里跟我们在application.yml里配置的一样就行了 -->
        <jdbcConnection
                driverClass="com.mysql.jdbc.Driver"
                connectionURL="jdbc:mysql://127.0.0.1:3306/mybatis"
                userId="root"
                password="123123">
        </jdbcConnection>
 <!-- targetPackage     指定生成的model生成所在的包名
         targetProject     指定在该项目下所在的路径-->
        <javaModelGenerator targetPackage="com.cuit.mybatis.model"
                            targetProject="src/main/java">
                 </javaModelGenerator>

        <!--Mapper映射文件生成所在的目录 为每一个数据库的表生成对应的SqlMap文件 -->
        <sqlMapGenerator targetPackage="mapper"
                         targetProject="src/main/resources">
            <property name="enableSubPackages" value="false"/>
        </sqlMapGenerator>

        <!-- 生成mapper接口所在的位置,参照目录结构 -->
        <javaClientGenerator targetPackage="com.cuit.mybatis.mapper"
                             targetProject="src/main/java" type="XMLMAPPER">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>
<!-- 生成数据库表所对应的实体类,前面的为表名,后面的为希望的实体类名 -->
        <table tableName="t_user" domainObjectName="User"
               enableCountByExample="false" enableUpdateByExample="false"
               enableDeleteByExample="false" enableSelectByExample="false"
               selectByExampleQueryId="false">
        </table>
         </context>
</generatorConfiguration>

配置好后点击右侧的maven project->plugins->mybatis-generator:generator:
运行配置好的插件
运行完成后我们就可以看到在各个包中自动生成的实体类以及mapper接口和对应的xml文件了。
自动生成的 user类

package com.cuit.mybatis.model;
public class User {
    private Integer id;
 private String name;
  private String password;
    public User(Integer id, String name, String password) {
        this.id = id;
        this.name = name;
        this.password = password;
    }
 public User() {
        super();
    }
 public Integer getId() {
        return id;
    }
 public void setId(Integer id) {
        this.id = id;
    }
 public String getName() {
        return name;
    }
public void setName(String name) {
        this.name = name == null ? null : name.trim();
    }
public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password == null ? null : password.trim();
    }
}

mapper接口

package com.cuit.mybatis.mapper;

import com.cuit.mybatis.model.User;
import org.springframework.stereotype.Repository;


@Repository
public interface UserMapper {
    int deleteByPrimaryKey(Integer id);

    int insert(User record);

    int insertSelective(User record);

    User selectByPrimaryKey(Integer id);

    int updateByPrimaryKeySelective(User record);

    int updateByPrimaryKey(User record);
}

UserMapper.xml文件

**

## 我们知道mybatis实际底层还是基于sql语句的书写拼接的,对于初学者还是有必要好好理解这个配置文件中的书写规范以及原理

**
<?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.cuit.mybatis.mapper.UserMapper" >
  <resultMap id="BaseResultMap" type="com.cuit.mybatis.model.User" >
    <constructor >
      <idArg column="id" jdbcType="INTEGER" javaType="java.lang.Integer" />
      <arg column="name" jdbcType="VARCHAR" javaType="java.lang.String" />
      <arg column="password" jdbcType="VARCHAR" javaType="java.lang.String" />
    </constructor>
  </resultMap>

  <sql id="Base_Column_List" >
    id, name, password
  </sql>
  <select id="selectByPrimaryKey" resultType="com.cuit.mybatis.model.User" parameterType="java.lang.Integer" >
    select *
    from t_user
    where id = #{id,jdbcType=INTEGER}
  </select>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
    delete from t_user
    where id = #{id,jdbcType=INTEGER}
  </delete>
  <insert id="insert" parameterType="com.cuit.mybatis.model.User" >
    insert into t_user (id, name, password
      )
    values (#{id,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR}
      )
  </insert>
  <insert id="insertSelective" parameterType="com.cuit.mybatis.model.User" >
    insert into t_user
    <trim prefix="(" suffix=")" suffixOverrides="," >
      <if test="id != null" >
        id,
      </if>
      <if test="name != null" >
        name,
      </if>
      <if test="password != null" >
        password,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides="," >
      <if test="id != null" >
        #{id,jdbcType=INTEGER},
      </if>
      <if test="name != null" >
        #{name,jdbcType=VARCHAR},
      </if>
      <if test="password != null" >
        #{password,jdbcType=VARCHAR},
      </if>
    </trim>
  </insert>
  <update id="updateByPrimaryKeySelective" parameterType="com.cuit.mybatis.model.User" >
    update t_user
    <set >
      <if test="name != null" >
        name = #{name,jdbcType=VARCHAR},
      </if>
      <if test="password != null" >
        password = #{password,jdbcType=VARCHAR},
      </if>
    </set>
    where id = #{id,jdbcType=INTEGER}
  </update>
  <update id="updateByPrimaryKey" parameterType="com.cuit.mybatis.model.User" >
    update t_user
    set name = #{name,jdbcType=VARCHAR},
      password = #{password,jdbcType=VARCHAR}
    where id = #{id,jdbcType=INTEGER}
  </update>
</mapper>

此处我给出我写好的controller层以及service层中的方法,以便大家能获得完整的项目:
UserService.java

package com.cuit.mybatis.service;

import com.cuit.mybatis.mapper.UserMapper;
import com.cuit.mybatis.model.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * @Author: 
 * @Date: 2019/1/2 15:51
 * @Version 1.0
 **/
@Service
public class UserService {
    @Autowired
    UserMapper userMapper;

    public User find(Integer id){
        return userMapper.selectByPrimaryKey(id);
    }
    public int delete(Integer id){
        return userMapper.deleteByPrimaryKey(id);
    }
}

UserController.java

package com.cuit.mybatis.controller;

import com.cuit.mybatis.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;


/**
 * @Author: 
 * @Date: 2019/1/2 14:56
 * @Version 1.0
 **/
@Controller
public class UserController {
    @Autowired
    UserService userService;

    @RequestMapping(value = "/deleteUser",method = RequestMethod.GET)
    @ResponseBody
    public int delete(Integer id){
        return userService.delete(id);
    }

}

springboot启动类MybatisApplication

	package com.cuit.mybatis;

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

@SpringBootApplication
@MapperScan("com.cuit.mybatis.mapper")//**注意此处的注解,必须且定义的路径要保证能扫描到mapper接口**
public class MybatisApplication {

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

}


3运行测试

此处为了方便我展示测试删除一个id为2的用户,我使用的测试软件为postman 大家可以去了解一下

删除用户
返回数据库去查看一下,成功删除。剩下的其他方法希望大家可以自己去挨个尝试一下,你会发现极可能会遇到错误,这个时候就需要大家再看看mybatis的基础来尝试找到错误并解决错误。
谢谢大家观看。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值