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简单的使用总结的主要内容,如果未能解决你的问题,请参考以下文章