Spring 中使用Mybatis,超详细

目录

一、Mybatis 的作用

二、使用步骤

三、创建数据库和表

四、添加Maven依赖包

五、编写实体类

六、定义UserMapper接口

七、配置UserMapper.xml

八、配置数据库连接信息 JDBC

九、在Spring中配置Mybatis

十、在Spring中调用Mybatis查询数据


如果您对Spring基础框架不是很了解请先看Spring 配置详解

一、Mybatis 的作用

1、MyBatis(前身为iBatis)是一个开源的Java持久层框架,它主要用于与数据库交互,帮助开发者更轻松地进行数据库操作。

2、MyBatis 提供了一种简单而强大的方式来执行数据库操作,包括查询、插入、更新和删除。开发者可以使用XML配置文件或者注解来定义SQL语句,并且可以将SQL语句的参数映射到Java对象,以便进行数据库操作。

3、MyBatis 提供了缓存机制,可以帮助提高查询性能。你可以配置缓存来存储查询结果,以便在后续查询中重用结果,从而减少数据库访问次数。

4、MyBatis 支持事务管理,可以确保数据库操作的原子性和一致性。你可以通过配置或编程方式管理事务,以满足应用程序的需求。

二、使用步骤

1、创建数据库和表

2、添加maven依赖

3、编写实体类

4、创建XXXMapper接口

5、配置XXXMapper.xml

6、配置数据库连接信息 JDBC

7、在Spring中配置Mybatis

8、在Spring中调用Mybatis查询数据

项目整体结构如下图:

三、创建数据库和表

        请自行安装数据库并创建表。我的数据库名为yiqifu,表为名u_user,字段如下图。

CREATE TABLE `U_USER` (
`id`  int(255) NULL ,
`nickname`  varchar(255) NULL 
)
;

四、添加Maven依赖包

        分别添加mysql-connector-java(用于连接mysql数据库)、mybatis(mybatis核心库)、mybatis-spring(在spring中使用mybatis的库)的maven依赖包。


        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.3.29</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.23</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.11</version>
        </dependency>
        <!--mybatis-spring包是适配包,帮助你在Spring中使用MyBatis-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>2.0.7</version>
        </dependency>

        <!--可以使用阿里巴巴的DruidDataSource-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.3.29</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.8</version>
            <scope>test</scope>
        </dependency>

五、编写实体类

        根据数据表的字段创建一个实体类,各字段可以不跟数据库一致。对应关系可以在Mapper.xml中配置

package top.yiqifu.study.p061_mybatis;

public class UserEntity {

    public int id;
    public String name;


    public UserEntity(){

    }
    public UserEntity(int id, String name) {
        this.id = id;
        this.name = name;
    }


    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "UserEntity{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}

六、定义UserMapper接口

        UserMapper接口的作用是告诉mybatis您要对数据库执行那些操作。具体实现类由Spring AOP完成。其中执行的SQL语句可以通过Mappser.xml配置,也可以在这里使用注解配置。我这里仅定义了几个简单的增删改查。

package top.yiqifu.study.p061_mybatis;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;

import java.util.List;

@Mapper
public interface UserMapper {

    void insert(UserEntity user);

    void deleteById(Integer id);

    void update(UserEntity user);

    List<UserEntity> findAll();

    @Select("select * from u_user where id=#{id}")
    @Results({
        @Result(property = "name", column = "nickname"), // 指定属性名和列名的映射关系
    })
    UserEntity findById(Integer id);
}

七、配置UserMapper.xml

        UserMapper.xml的作用是告诉mybatis您在UserMapper接口定义的方法具体使用什么样的SQL及其他约束。我这里简单配置了UserMapper接口中每个方法。

注:其实也可以直接在UserMapper接口中使用注解定义(请看findById方法),使用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">


<!-- namespace 对应到 接口上 就不需要实例化了 -->
<mapper namespace="top.yiqifu.study.p061_mybatis.UserMapper">

    <resultMap type="top.yiqifu.study.p061_mybatis.UserEntity" id="BaseResultMap">
        <!-- column 表里的字段 -->
        <!-- property 实体对象里的属性 -->
        <result column="id" property="id"/>
        <result column="nickname" property="name"/>
    </resultMap>

    <insert id="insert" parameterType="top.yiqifu.study.p061_mybatis.UserEntity">
    insert into u_user(nickname)
    values
    (
    #{name}
    )
    </insert>

    <insert id="deleteById" parameterType="Integer">
    delete  from u_user where id=#{id}
    </insert>

    <insert id="update" parameterType="top.yiqifu.study.p061_mybatis.UserEntity">
    update u_user set nickname=#{name} where id=#{id}
    </insert>

    <select id="findAll" resultMap="BaseResultMap">
      select * from u_user
    </select>


</mapper>

八、配置数据库连接信息 JDBC

        配置jdbc.properties(放在resources目录下)的作用时指定数据连接信息。

database.driver=com.mysql.cj.jdbc.Driver

database.url=jdbc:mysql://localhost:3306/yiqifu?characterEncoding=utf8&useSSL=false&serverTimezone=UTC

database.username=root

database.password=123456xxoo

九、在Spring中配置Mybatis

配置applicationContext-mybatis.xml(放在resources目录下)的作用将前的内容整合在起。包括mybatis的JDBC环境,接口映射和接口配置。

<?xml version="1.0" encoding="UTF-8" ?>

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd

        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd"
    >

    <context:component-scan base-package="top.yiqifu.study.p061_mybatis"></context:component-scan>

    <!-- 加载jdbc.properties配置文件 -->
    <context:property-placeholder location="classpath:jdbc.properties"/>

    <!-- 配置 MyBatis 数据源 -->
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="${database.driver}" />
        <property name="url" value="${database.url}" />
        <property name="username" value="${database.username}" />
        <property name="password" value="${database.password}" />
    </bean>

    <!-- 配置 mybatis Session -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <!--<property name="configLocation" value="classpath:mybatis-config.xml"></property>-->
        <property name="mapperLocations" value="classpath:mapper/*.xml" />
    </bean>

    <!-- 扫描Mapper接口(Spring会使用AOP为其实现具体方法) -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="top.yiqifu.study.p061_mybatis" />
    </bean>


</beans>

十、在Spring中调用Mybatis查询数据

以下是调用示例。

package top.yiqifu.study.p061_mybatis;

import org.springframework.context.support.ClassPathXmlApplicationContext;
import top.yiqifu.study.p051_proxy.Test011_StaticProxyDog;
import top.yiqifu.study.p051_proxy.Test041_Animal;
import top.yiqifu.study.p051_proxy.Test042_Dog;


public class Test001_Mybatis
{
    // 静态代理
    public static void main( String[] args )
    {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext-mybatis.xml");
        UserMapper mapper = context.getBean("userMapper", UserMapper.class);

        for(String beanName : context.getBeanDefinitionNames()){
            System.out.println(beanName);
        }


        UserEntity user1 = new UserEntity();
        UserEntity user2 ;
        //添加
        user1.setName("test");
        mapper.insert(user1);

        int userId = 7;
        user2 = mapper.findById(userId);
        System.out.println(user2);
        //修改
        user1.setId(userId);
        user1.setName("new-test");
        mapper.update(user1);

        //查询
        user2 = mapper.findById(userId);
        System.out.println(user2);

        //删除
        //mapper.deleteById(userId);


        user2 = mapper.findById(userId);
        System.out.println(user2);
    }
}

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
MyBatis Plus是在MyBatis基础上进行增强的一个工具库,在SpringMyBatis Plus的整合也非常简单。只需要将MyBatis的依赖替换成MyBatis Plus的依赖,并将SqlSessionFactory替换成MyBatis Plus的即可实现整合。 具体操作步骤如下: 1. 首先,创建一个Spring Boot项目,并在pom.xml文件添加MyBatis Plus的依赖。 2. 替换原有的MyBatis依赖,将其换成MyBatis Plus的依赖。 3. 在Spring Boot的配置文件配置数据库连接信息和MyBatis Plus的相关配置。 4. 创建实体类,这些实体类将映射到数据库的表。 5. 创建Mapper接口,使用MyBatis Plus的注解或继承MyBatis Plus提供的BaseMapper接口来操作数据库。 6. 在Service层编写业务逻辑代码,并调用Mapper接口的方法来操作数据库。 7. 在Controller层处理请求,并调用Service层的方法来返回相应的数据。 通过以上步骤,就可以实现MyBatis Plus和Spring的整合,使用MyBatis Plus来操作数据库。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [MyBatisPlus基础](https://blog.csdn.net/weixin_51550438/article/details/124960050)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [SpringBoot整合mybatis-plus--入门详细](https://blog.csdn.net/qq_44737094/article/details/119922979)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

QIFU

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值