SpringBoot__简单整合Mybatis的两种方式

依赖
在这里插入图片描述

注意
这里使用数据库连接池,使用的是Druid,这里是Druid是使用的是com.alibaba.druid-spring-boot-starter,该starter是由第三方提供的,MyBatis和Druid依赖的命名和其他库的命名不太一样,但是它所支持的mysql是mysql8,这由于数据库版本的问题,所以我们需要锁定数据库版本。

这里我们所需要的依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.0.0</version>
</dependency>
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.1.10</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.28</version>
    <scope>runtime</scope>
</dependency>

application.properties

spring.datasource.one.url=jdbc:mysql:///db?useUnicode=true&characterEncoding=utf-8
spring.datasource.one.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.one.username=root
spring.datasource.one.password=rootzsl

Mapper的接口

public interface EmpMapper {
    List<User> getAllEmp ();

    Integer addUser(Emp emp);

    Integer updateEmpById(Emp emp);

    Integer deleteEmpById(Integer id);
}

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.zsl.mybatis02.mapper1.IMapperOne">
    <select id="getAllEmp" resultType="com.zsl.mybatis02.pojo.Emp">
        select * from emp;
    </select>

    <insert id="addEmp" parameterType="com.zsl.mybatis02.pojo.Emp">
        insert into emp (username,address) values (#{username},#{address});
    </insert>

    <update id="updateEmpById" parameterType="com.zsl.mybatis02.pojo.Emp">
        update user set emp=#{username},address=#{address} where id=#{id}
    </update>
    
    <delete id="deleteEmpById">
        delete from emp where id=#{id}
    </delete>

</mapper>

关于这个Mapper.xml的位置
这里介绍两种:
1.xml配置文件和接口在一个包下面。
2.xml配置文件在resources目录下面的mapper目录下

在这里插入图片描述在这里插入图片描述

xml配置文件和接口在一个包下面就容器能扫描到,但是打包的时候会被忽略,不能直接被打包。

解决方案:
在pom.xml文件中再添加如下配置,避免打包时java目录下的XML文件被自动忽略掉.

<build>
    <resources>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.xml</include>
            </includes>
        </resource>
        <resource>
            <directory>src/main/resources</directory>
        </resource>
    </resources>
</build>

xml配置文件在resources目录下面的mapper目录下,打包不会被忽略,但是容器自动扫描不到,需要我们在配置文件里进行配置

mybatis.mapper-locations=classpath:mapper/*.xml

其实,还有一种不常用的方式,可以不使用xml配置文件,使用注解的方式来写sql。
直接在mapper接口上加上注解和对应的sql语句

@Repository
public interface IMapperOne {

    List<Emp> getAllEmp();



    @Select("select * from emp")
    List<Emp> getAllEmp();

    @Results({
            @Result(property = "id", column = "id"),
            @Result(property = "ename", column = "e"),
            @Result(property = "address", column = "a")
    })
    @Select("select ename as e,address as a,id as id from emp where id=#{id}")
    Emp getEmpById(Long id);

    @Select("select * from emp where ename like concat('%',#{name},'%')")
    List<User> getEmpByName(String name);

    @Insert({"insert into emp(ename,address) values(#{ename},#{address})"})
    @SelectKey(statement = "select last_insert_id()", keyProperty = "id", before = false, resultType = Integer.class)
    Integer addEmp(Emp emp);

    @Update("update emp set ename=#{ename},address=#{address} where id=#{id}")
    Integer updateEmpById(Emp emp);

    @Delete("delete from emp where id=#{id}")
    Integer deleteEmpById(Integer id);
    
}

通过全注解的方式来写SQL,不写XML文件,这里的注解@Select、@Insert、@Update以及@Delete四个注解分别对应XML中的select、insert、update以及delete标签。
而@Results对应着xml中的ResultMap映射文件。
值得一提的是@SelectKey注解可以实现主键回填的功能,就是在你新增一比数据时,新增成功后,获得该数据的主键。

使用全注解的方式来写SQL,不写XML文件的方式,需要指定mapper扫描路径,两种方式:
1.在每个mapper接口上添加扫描注解@Mapper
2.只需在启动类上配置mapper扫描注解,指定它要扫描哪个包下的

@SpringBootApplication
@MapperScan(basePackages = "com.zsl.mybatis02.mapper1")
public class MybatisApplication {
    public static void main(String[] args) {
        SpringApplication.run(MybatisApplication.class, args);
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

偷偷学习被我发现

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

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

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

打赏作者

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

抵扣说明:

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

余额充值