springboot-mybatis整合

导入依赖

  1. 项目的解构
    在这里插入图片描述
  2. pom文件 所依赖的mybatis 链接springBoot的包
<!--mybatis官方提供-->
        <!--  -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.1</version>
        </dependency>

  1. 创建pojo实体类 与数据库对应
    在这里插入图片描述
  2. mapper层 (创建了user查询dao的接口)
package com.kuang.w.mapper;

import com.kuang.w.pojo.User;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @ClassName : UserMapper  //类名
 * @Description : 这是一个mapper接口  //描述
 * @Author : W //作者
 * @Date: 2021/4/25  10:47
 * @Mapper 这个注解表示这是一个mapper接口
 * @Repository 表示这是dao层的注解
 */
@Mapper
@Repository
public interface UserMapper {
    /**
     * 1
     * class queryUserList
     * 查询
     *
     * @return List<User>
     */
    List<User> queryUserList();

    /**
     * 2
     * class queryUserById
     * 根据ID查询
     *
     * @param id
     * @return List<User>
     */
    User queryUserById(Integer id);

    /**
     * 3
     * class addUser
     * 添加
     *
     * @param user
     * @return int
     */
    int addUser(User user);

    /**
     * 4
     * class upDataUser
     * 更新
     *
     * @param user
     * @return int
     */
    int upDataUser(User user);

    /**
     * class deleteUser
     * 删除
     *
     * @param id
     * @return int
     */
    int deleteUser(Integer id);

}


  1. xml实现了了usermapper接口
<?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.kuang.w.mapper.UserMapper">
    <!--开启缓存-->   <!-- 在这里使用了二级缓存 实体类必须要实现序列化接口 implements Serializable  -->
    <cache/>

    <select id="queryUserList" resultType="User">
        select *
        from mybatis.user
    </select>
    <select id="queryUserById" resultType="User">
        select *
        from mybatis.user
        where id = #{id}
    </select>
    <insert id="addUser" parameterType="User">
        insert into mybatis.user(id, name, password, tid)
        VALUES (#{id}, #{name}, #{password}, #{tid})
    </insert>
    <update id="upDataUser" parameterType="User">
        update mybatis.user
        set name=#{name},
            password=#{password}
        where id = #{id}
    </update>
    <delete id="deleteUser" parameterType="int">
        delete
        from mybatis.user
        where id = #{id}
    </delete>

</mapper>

  1. application.properties 配置文件在这里插入图片描述
spring.datasource.username=root
spring.datasource.password=wj132199
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis?serverTimezone=GMT%2B8&useSSL=true&useUnicode=true&characterEncoding=UTF8
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# 别名 aliases
mybatis.type-aliases-package=com.kuang.w.pojo
# 整合mybatis
mybatis.mapper-locations=classpath:mybatis/mapper/*.xml


@Mapper与@MapperScan

在项目中大多数用的都是@MapperScan注解,指定basePackages,扫描mybatis Mapper接口类

另外一种方式是用@Mapper注解,其实这两种方法扫描配置用的是一个地方,只是扫描入口不同。从mybatis3.4.0开始加入了@Mapper注解,目的就是为了不再写mapper映射文件(xxxxMapper.xml),用法也很简单:

**
 * 添加了@Mapper注解之后这个接口在编译时会生成相应的实现类
 * 
 * 需要注意的是:这个接口中不可以定义同名的方法,因为会生成相同的id
 * 也就是说这个接口是不支持重载的
 */
@Mapper
public interface User {
 
    @Select("select * from user where name = #{name}")
    public User find(String name);
 
    @Select("select * from user where name = #{name} and pwd = #{pwd}")
    /**
      * 对于多个参数来说,每个参数之前都要加上@Param注解,
      * 要不然会找不到对应的参数进而报错
      */
    public User login(@Param("name")String name, @Param("pwd")String pwd);
}

这种方式需要每个接口上面都加上这个注解,很麻烦,所以就出现了@MapperScan,@MapperScan只需要指定包名就行了,会自动扫描。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

cookie3_1

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

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

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

打赏作者

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

抵扣说明:

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

余额充值