MyBatis简单的使用总结

Posted LQS_Android

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBatis简单的使用总结相关的知识,希望对你有一定的参考价值。

假如我们是分模块开发我们的服务端程序,我们的项目结构目录如下:

在项目根目录的pom.xml文件中添加mysql依赖、Mybatis依赖:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.3.RELEASE</version>
    </parent>
    <groupId>org.example</groupId>
    <artifactId>xw_bilibili</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>xw_bilibili_api</module>
        <module>xw_bilibili_dao</module>
        <module>xw_bilibili_service</module>
    </modules>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <dependencies>
        <!--spring web -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.2.3.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.19</version>
        </dependency>
        <!-- Mybatis依赖 -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.0</version>
        </dependency>
    </dependencies>

</project>

 同样可以看到项目引入了3个module模块:

    <modules>
        <module>xw_bilibili_api</module>
        <module>xw_bilibili_dao</module>
        <module>xw_bilibili_service</module>
    </modules>

这三个模块间的依赖关系是:xw_bilibili_api作为顶层调用模块,依赖中间层xw_bilibili_service模块,而中间层xw_bilibili_service模块依赖最底层的xw_bilibili_dao模块。很好理解!依赖配置如下:

在xw_bilibili_api顶层模块的pom.xml配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>xw_bilibili</artifactId>
        <groupId>org.example</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>xw_bilibili_api</artifactId>
    <dependencies>
        <!--项目子模块之间的依赖,xw_bilibili_dao在最底层,xw_bilibili_service在中间层,xw_bilibili_api在上层 -->
        <dependency>
            <groupId>org.example</groupId>
            <artifactId>xw_bilibili_service</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

</project>

在xw_bilibili_service中间层模块的pom.xml配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>xw_bilibili</artifactId>
        <groupId>org.example</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>xw_bilibili_service</artifactId>
    <dependencies>
        <dependency>
            <!--项目子模块之间的依赖,xw_bilibili_dao在最底层,xw_bilibili_service在中间层,xw_bilibili_api在上层 -->
            <groupId>org.example</groupId>
            <artifactId>xw_bilibili_dao</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

</project>

在xw_bilibili_dao底层模块的pom.xml配置文件:它作为底层不依赖我们建立的其他模块

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>xw_bilibili</artifactId>
        <groupId>org.example</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>xw_bilibili_dao</artifactId>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

</project>

配置MyBatis的xml文件存储的路径,在xw_bilibili_service中间层模块的resources文件夹下新建一个后缀为.properties的配置文件:application.properties

在这个模块的配置MyBatis的xml文件存储的路径classpath:mapper/*.xml,内容如下:

#profile 启动环境是测试环境还是生产环境
spring.profiles.active=test

#mybatis 配置xml文件的存储路径
mybatis.mapper-locations=classpath:mapper/*.xml

按照上面路径的意思:需要到对应的xw_bilibili_dao底层模块中新建一个mapper的文件夹,并在此文件夹下新建所有的.xml文件,举例这里新建一个demo.xml文件:

MyBatis的mapper的xml文件格式如下:

<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE mapper PUBLIC
        "-//mybatis.org//DTD com.example.Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="">

</mapper>

注意上面xml文件中的一对mapper标签,其中namespace=" ",用于指定一个在Dao对象。同样是在底层模块Dao层新建包路径com.xw.bilibili.dao,新建一个DemoDao

package com.xw.bilibili.dao;

import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface DemoDao 
    

在xw_bilibili_service中间层模块配置文件:application.properties添加配置属性:

#profile 启动环境是测试环境还是生产环境
spring.profiles.active=test

#mybatis 配置文件的存储路径
mybatis.mapper-locations=classpath:mapper/*.xml

#指定POJO扫描包来让mybatis自动扫描到自定义的POJO
mybatis.type-aliases-package=com.xw.bilibili.dao

然后将该demoDao的全路径配置到mapper文件夹下的demo.xml文件中:

<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE mapper PUBLIC
        "-//mybatis.org//DTD com.example.Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xw.bilibili.dao.DemoDao">

</mapper>

至此,在项目中添加Mybatis框架依赖,在配置文件中配置Mybatis已完成。

Mybatis使用小Demo

基于上面的文件类和配置,在Dao底层模块的DemoDao类中创建一个查询方法query(id)如下:

package com.xw.bilibili.dao;

import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface DemoDao 

    public Long query(Long selectId);

在mapper文件夹下的demo.xml中需要新建一个id="query"查询标签与之对应,如下:

(1).查询类的方法名要与标签id名保持一致;

(2).查询类的方法的参数名、参数类型、返回类型要与查询标签的参数名、参数类型、返回类型一致;

<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE mapper PUBLIC
        "-//mybatis.org//DTD com.example.Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xw.bilibili.dao.DemoDao">
    <select id="query" parameterType="java.lang.Long" resultType="java.lang.Long">
        select id from t_demo where id=#selectId
    </select>
</mapper>

这里有一条查询语句,需要你安装MySQL并且新建数据库bilibili_demo,再新建一个数据表名为t_demo的数据表,在最后项目运行时使用。

在中间层Service模块中新建DemoService类:

 通过注解注入Dao对象,并调用其查询方法query():

package com.xw.bilibili.service;


import com.xw.bilibili.dao.DemoDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class DemoService 

    //注入Dao对象
    @Autowired
    private DemoDao demoDao;

    public Long query(Long id)
        //调用Dao底层查询方法
        return demoDao.query(id);
    

在顶层api模块中新建Demoapi.class

package com.xw.bilibili.api;

import com.xw.bilibili.service.DemoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class DemoApi 

    //注入中间层service对象
    @Autowired
    private DemoService demoService;

    //调用中间层service对象的查询方法,层层调用最终调用到底层Dao层的查询方法
    @GetMapping("/query")
    public Long query(Long id)
        return demoService.query(id);
    

调用中间层service对象的查询方法,层层调用最终调用到底层Dao层的查询方法。

配置连接数据库:

 新建数据表:

使用Postman模拟GET请求: 

请求返回结果id =1。成功!至此Mybatis的配置简单使用结束 。

以上是关于MyBatis简单的使用总结的主要内容,如果未能解决你的问题,请参考以下文章

MyBatis中SQL写法总结

MyBatis要点总结

MyBatis学习总结

MyBatis学习总结——MyBatis快速入门

MyBatis学习总结——MyBatis快速入门

MyBatis使用总结