首页 > 其他分享 >MyBatis

MyBatis

时间:2023-07-04 13:00:12浏览次数:38  
标签:xml 配置文件 UserMapper mybatis test SQL MyBatis

MyBatis 是一款优秀的持久层框架,用于简化 JDBC 开发
官网:https://mybatis.org/mybatis-3/zh/index.html
持久层
  负责将数据到保存到数据库的那一层代码
  JavaEE三层架构:表现层、业务层、持久层
框架
  框架就是一个半成品软件,是一套可重用的、通用的、软件基础代码模型
  在框架的基础之上构建软件编写更加高效、规范、通用、可扩展

MyBatis 快速入门

查询user表中所有数据

1.创建user表,添加数据
2.创建模块,导入坐标
3.编写 MyBatis 核心配置文件 -- > 替换连接信息 解决硬编码问题
4.编写 SQL 映射文件 --> 统一管理sql语句,解决硬编码问题
5.编码
  1.定义POJO类
  2.加载核心配置文件,获取 SqlSessionFactory 对象
  3.获取 SqlSession 对象,执行 SQL 语句
  4.释放资源

 2.创建模块,导入坐标

要使用 MyBatis,只需将 mybatis-x.x.x.jar 文件置于类路径(classpath)中即可。
如果使用 Maven 来构建项目,则需将依赖代码置于 pom.xml 文件中。
pom.xml:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <project xmlns="http://maven.apache.org/POM/4.0.0"
 3           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 5     <modelVersion>4.0.0</modelVersion>
 6 
 7     <groupId>org.example</groupId>
 8     <artifactId>mybatis-demo</artifactId>
 9     <version>1.0-SNAPSHOT</version>
10 
11     <properties>
12         <maven.compiler.source>8</maven.compiler.source>
13         <maven.compiler.target>8</maven.compiler.target>
14     </properties>
15 
16     <dependencies>
17         <!--mybatis 依赖-->
18         <dependency>
19             <groupId>org.mybatis</groupId>
20             <artifactId>mybatis</artifactId>
21             <version>3.5.5</version>
22         </dependency>
23         <!--mysql 驱动-->
24         <dependency>
25             <groupId>mysql</groupId>
26             <artifactId>mysql-connector-java</artifactId>
27             <version>5.1.46</version>
28         </dependency>
29         <!--junit 单元测试-->
30         <dependency>
31             <groupId>junit</groupId>
32             <artifactId>junit</artifactId>
33             <version>4.13</version>
34             <scope>test</scope>
35         </dependency>
36         <!-- 添加slf4j日志api -->
37         <dependency>
38             <groupId>org.slf4j</groupId>
39             <artifactId>slf4j-api</artifactId>
40             <version>1.7.20</version>
41         </dependency>
42         <!-- 添加logback-classic依赖 -->
43         <dependency>
44             <groupId>ch.qos.logback</groupId>
45             <artifactId>logback-classic</artifactId>
46             <version>1.2.3</version>
47         </dependency>
48         <!-- 添加logback-core依赖 -->
49         <dependency>
50             <groupId>ch.qos.logback</groupId>
51             <artifactId>logback-core</artifactId>
52             <version>1.2.3</version>
53         </dependency>
54     </dependencies>
55 </project>

3.编写 MyBatis 核心配置文件 -- > 替换连接信息 解决硬编码问题

mybatis-config.xml:

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE configuration
 3         PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 4         "http://mybatis.org/dtd/mybatis-3-config.dtd">
 5 <configuration>
 6 
 7     <typeAliases>
 8         <package name="com.test.pojo"/>
 9     </typeAliases>
10     
11     <!--
12     environments:配置数据库连接环境信息。可以配置多个environment,通过default属性切换不同的environment
13     -->
14     <environments default="development">
15         <environment id="development">
16             <transactionManager type="JDBC"/>
17             <dataSource type="POOLED">
18                 <!--数据库连接信息-->
19                 <property name="driver" value="com.mysql.jdbc.Driver"/>
20                 <property name="url" value="jdbc:mysql:///mybatis?useSSL=false"/>
21                 <property name="username" value="root"/>
22                 <property name="password" value="1234"/>
23             </dataSource>
24         </environment>
25     </environments>
26     <mappers>
27         <!--加载sql映射文件-->
28        <mapper resource="UserMapper.xml"/>
29     </mappers>
30 </configuration>

4.编写 SQL 映射文件 --> 统一管理sql语句,解决硬编码问题

UserMapper.xml:

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE mapper
 3         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 4         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 5 
 6 <!--
 7     namespace:名称空间
 8 -->
 9 
10 <mapper namespace="test">
11     <!--statement-->
12     <select id="selectAll" resultType="com.test.pojo.User">
13         select * from tb_user;
14     </select>
15 </mapper>

5.编码

1.定义POJO类
  User.java:

 1 public class User {
 2 
 3     private Integer id;
 4     private String username;
 5     private String password;
 6     private String gender;
 7     private String addr;
 8 
 9     public Integer getId() {
10         return id;
11     }
12     public void setId(Integer id) {
13         this.id = id;
14     }
15     ...
16     @Override
17     public String toString() {
18         ...
19     }
20 }

2.加载核心配置文件,获取 SqlSessionFactory 对象
3.获取 SqlSession 对象,执行 SQL 语句
4.释放资源
  MyBatisDemo.java:

 1 public static void main(String[] args) throws IOException {
 2     //1. 加载mybatis的核心配置文件,获取 SqlSessionFactory
 3     String resource = "mybatis-config.xml";
 4     InputStream inputStream = Resources.getResourceAsStream(resource);
 5     SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
 6 
 7     //2. 获取SqlSession对象,用它来执行sql
 8     SqlSession sqlSession = sqlSessionFactory.openSession();
 9     //3. 执行sql
10     List<User> users = sqlSession.selectList("test.selectAll");
11     System.out.println(users);
12     //4. 释放资源
13     sqlSession.close();
14 }

解决SQL映射文件的警告提示

UserMapper.xml存在警告信息:

  

产生原因:Idea和数据库没有建立连接,不识别表信息
解决方式:在Idea中配置MySQL数据库连接

Mapper 代理开发

目的:
  解决原生方式中的硬编码
  简化后期执行SQL

使用 Mapper 代理方式完成入门案例

1、定义与SQL映射文件同名的Mapper接口,并且将Mapper接口和SQL映射文件放置在同一目录下
  创建mybatis-demo/src/main/java/com/test/mapper/UserMapper.java
  创建mybatis-demo/src/main/resources/com/test/mapper,将UserMapper.xml放到该文件夹下。(注:resources文件夹下需要使用【com/test/mapper】方式来定义文件夹,不能使用【com.test.mapper】来定义文件夹)

2、设置SQL映射文件的namespace属性为Mapper接口全限定名
修改UserMapper.xml:

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE mapper
 3         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 4         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 5 
 6 <!--
 7     namespace:名称空间
 8 -->
 9 
10 <!--<mapper namespace="test">-->
11 <mapper namespace="com.test.mapper.UserMapper">
12     <!--statement-->
13     <select id="selectAll" resultType="com.test.pojo.User">
14         select * from tb_user;
15     </select>
16 </mapper>

3、在 Mapper 接口中定义方法,方法名就是SQL映射文件中sql语句的id,并保持参数类型和返回值类型一致
UserMapper.java:

1 public interface UserMapper {
2     List<User> selectAll();
3 }

注:
1、UserMapper.xml位置变更,MyBatis核心配置文件mybatis-config.xml中加载sql映射文件路径也需修改;
2、如果Mapper接口名称和SQL映射文件名称相同,并在同一目录下,则可以使用包扫描的方式简化SQL映射文件的加载
  mybatis-config.xml:

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE configuration
 3         PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 4         "http://mybatis.org/dtd/mybatis-3-config.dtd">
 5 <configuration>
 6 
 7     <typeAliases>
 8         <package name="com.test.pojo"/>
 9     </typeAliases>
10     
11     <!--
12     environments:配置数据库连接环境信息。可以配置多个environment,通过default属性切换不同的environment
13     -->
14     <environments default="development">
15         <environment id="development">
16             <transactionManager type="JDBC"/>
17             <dataSource type="POOLED">
18                 <!--数据库连接信息-->
19                 <property name="driver" value="com.mysql.jdbc.Driver"/>
20                 <property name="url" value="jdbc:mysql:///mybatis?useSSL=false"/>
21                 <property name="username" value="root"/>
22                 <property name="password" value="1234"/>
23             </dataSource>
24         </environment>
25     </environments>
26     <mappers>
27         <!--加载sql映射文件-->
28         <!--<mapper resource="UserMapper.xml"/>-->
29         <!--修改1-->
30         <!--<mapper resource="com/test/mapper/UserMapper.xml"/>-->
31         <!--修改2-->
32         <!--Mapper代理方式-->
33         <package name="com.test.mapper"/>
34     </mappers>
35 </configuration>

4、编码
通过 SqlSession 的 getMapper方法获取 Mapper接口的代理对象
调用对应方法完成sql的执行
  MyBatisDemo.java:

 1 public static void main(String[] args) throws IOException {
 2     //1. 加载mybatis的核心配置文件,获取 SqlSessionFactory
 3     String resource = "mybatis-config.xml";
 4     InputStream inputStream = Resources.getResourceAsStream(resource);
 5     SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
 6 
 7     //2. 获取SqlSession对象,用它来执行sql
 8     SqlSession sqlSession = sqlSessionFactory.openSession();
 9     //3. 执行sql
10     //List<User> users = sqlSession.selectList("test.selectAll");
11     //3.1 获取UserMapper接口的代理对象
12     UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
13     List<User> users = userMapper.selectAll();
14     System.out.println(users);
15     //4. 释放资源
16     sqlSession.close();
17 }

MyBatis 核心配置文件详解

MyBatis 核心配置文件的顶层结构如下:(注:配置各个标签时,需要遵守前后顺序)

类型别名(typeAliases)
在mybatis-config.xml中添加类型别名(typeAliases)

1 <typeAliases >
2     <package name="com.test.pojo"/>
3 </typeAliases>

在UserMapper.xml中写返回类型时可直接写类名(不区分大小写)
  UserMapper.xml:

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE mapper
 3         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 4         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 5 
 6 <!--
 7     namespace:名称空间
 8 -->
 9 <mapper namespace="com.test.mapper.UserMapper">
10     <!--<select id="selectAll" resultType="com.test.pojo.User">-->
11     <select id="selectAll" resultType="user">
12         select * from tb_user;
13     </select>
14 </mapper>

配置文件完成增删改查

MyBatisX 插件

MybatisX 是一款基于 IDEA 的快速开发插件,为效率而生。
主要功能:
  XML 和 接口方法 相互跳转
  根据接口方法生成 statement
安装:

 

标签:xml,配置文件,UserMapper,mybatis,test,SQL,MyBatis
From: https://www.cnblogs.com/sunny-sml/p/17524476.html

相关文章

  • 从 JDBC 到 Mybatis
    JDBC操作数据库流程1、加载驱动2、获取数据库连接3、获取执行者对象4、执行sql语句并返回结果5、处理结果代码publicclassJDBCTest{publicstaticvoidmain(String[]args)throwsClassNotFoundException,SQLException{//注册驱动C......
  • 03_MyBatis02
    1.深入Mybatis映射配置文件1.1.CRUD语句定义查询语句UserMapper.java接口中publicList<User>queryAllUser();publicUserqueryUserById(Integerid);UserMapper.xml配置文件中<selectid="queryAllUser"resultType="uSer"> select*fromuser;</......
  • SpringBoot教学补充资料2-MyBatis简单查询项目
    SQL:CREATETABLE`tb_user`(`id`int(11)NOTNULLAUTO_INCREMENT,`username`varchar(20)DEFAULTNULL,`password`varchar(20)DEFAULTNULL,`gender`char(1)DEFAULTNULL,`addr`varchar(30)DEFAULTNULL,PRIMARYKEY(`id`))ENGINE=InnoDBA......
  • MyBatisPlus(MP) 使用总结
    mybatisplus(MP)使用总结mybatisplus(MP)是mybatis框架的增强工具,提高开发效率;https://mp.baomidou.com/springboot+mybatis=mapper接口+配置文件1.标准开发@MapperpublicinterfaceUserDaoextendsBaseMapper{}2.分页查询3.条件查询4.条件查询null判断5.查询......
  • 02_MyBatis01
    1.JDBC操作的缺陷JDBC查询数据代码JDBC添加数据代码JDBC操作的问题数据库连接创建、释放频繁造成系统资源浪费从而影响系统性能sql语句在代码中硬编码,造成代码不易维护,实际应用sql变化的可能较大,sql变动需要改变java代码。查询操作时,需要手动将结果集中的数据手动封......
  • Mybatis-------PageHelper
    PageHelper用来处理分页首先添加依赖:<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.2.4</version></dependency&......
  • IDEA MyBatis Log 插件,打印SQL语句
    打开Settings->plugins搜索插件MyBatisLog点击安装,完成后重启IDEA即可。点击Tools,选择MyBatisLogPlugin,会在下方打开一个窗口,这个窗口会输出mapper执行的SQL语句。......
  • mybatis-plus springboot无法创建bean
    在学习尚硅谷的mybatis-plus中,发现依托代码无法创建userMapperbean,在网上找了各种办法,终于是找到了一个大无语的办法。只要将springboot的版本主动降到2.x.x之后便可以创建。可能mp是国人写的目前对springboot3.x.x并没有做适配,但是更进一步的方法正在思想中。packagecom.exam......
  • MyBatisPlus配置类-配置分页插件,注册为bean对象
    importcom.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;importorg.mybatis.spring.annotation.MapperScan;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importorg.springfra......
  • 【源码分析】Mybatis 的配置解析过程
    博主介绍:✌博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家✌Java知识图谱点击链接:体系化学习Java(Java面试专题)......