MyBatis 的XML实现方法

什么是MyBatis

MyBatis是⼀款优秀的持久层框架,⽤于简化JDBC的开发。而持久层指的就是持久化操作的层, 通常指数据访问层(dao), 是⽤来操作数据库的,简单来说就是MyBatis就是更简单的操作和读取数据库的

MyBatis入门

准备工作

项目的创建

创建springboot工程,并导⼊ mybatis的起步依赖、mysql的驱动包

创建好后,打开pom.xml文件就可以看到Mybatis依赖包和-mysql驱动包,自己后面加也行

<!--Mybatis 依赖包-->
<dependency>
 <groupId>org.mybatis.spring.boot</groupId>
 <artifactId>mybatis-spring-boot-starter</artifactId>
 <version>3.0.3</version>
</dependency>
<!--mysql驱动包-->
<dependency>
 <groupId>com.mysql</groupId>
 <artifactId>mysql-connector-j</artifactId>
 <scope>runtime</scope>
</dependency>

数据准备

创建用户表,并创建对应的实体类UserInfo

创建数据库

--创建数据库
CREATE DATABASE mybatis_test DEFAULT CHARACTER SET utf8mb4;

-- 使⽤数据数据
USE mybatis_test;

-- 创建表[⽤⼾表]

DROP TABLE IF EXISTS userinfo;
CREATE TABLE `userinfo` (
 `id` INT ( 11 ) NOT NULL AUTO_INCREMENT,
 `username` VARCHAR ( 127 ) NOT NULL,
 `password` VARCHAR ( 127 ) NOT NULL,
 `age` TINYINT ( 4 ) NOT NULL,
 `gender` TINYINT ( 4 ) DEFAULT '0' COMMENT '1-男 2-⼥ 0-默认',
 `phone` VARCHAR ( 15 ) DEFAULT NULL,
 `delete_flag` TINYINT ( 4 ) DEFAULT 0 COMMENT '0-正常, 1-删除',
 `create_time` DATETIME DEFAULT now(),
 `update_time` DATETIME DEFAULT now(),
 PRIMARY KEY ( `id` ) 
) ENGINE = INNODB DEFAULT CHARSET = utf8mb4;

-- 添加⽤⼾信息
INSERT INTO mybatis_test.userinfo ( username, `password`, age, gender, phone )
VALUES ( 'admin', 'admin', 18, 1, '18612340001' );
INSERT INTO mybatis_test.userinfo ( username, `password`, age, gender, phone )
VALUES ( 'zhangsan', 'zhangsan', 18, 1, '18612340002' );
INSERT INTO mybatis_test.userinfo ( username, `password`, age, gender, phone )
VALUES ( 'lisi', 'lisi', 18, 1, '18612340003' );
INSERT INTO mybatis_test.userinfo ( username, `password`, age, gender, phone )
VALUES ( 'wangwu', 'wangwu', 18, 1, '18612340004' );

创建对应的实体类UserInfo

import lombok.Data;

import java.util.Date;

@Data
public class UserInfo {
    private Integer id;
    private String username;
    private String password;
    private Integer age;
    private Integer gender;
    private String phone;
    private Integer deleteFlag;
    private Date createTime;

    private Date updateTime;


}
配置数据库连接

Mybatis中要连接数据库,需要数据库相关参数配置,1.MySQL驱动类(刚创建项目的时候就已经配置了)2.登录名 3.密码 4.数据库连接字符串。如下在resources下创建application.yml⽂件

配置内容如下

# 数据库连接配置
spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/mybatis_test?characterEncoding=utf8&useSSL=false
    username: root
    password: '123456'    #为自己数据库的用户名和密码
    driver-class-name: com.mysql.cj.jdbc.Driver
写持久层代码

在项目中创建持久层接口UserInfoXMlMapper,创建一个Mapper文件,在文件中创建接口UserInfoXMlMapper

上面划红框框的是本次练习所用到的文件,其余的是我做别的练习时用到的,不用创建

添加mapper接口

数据持久层的接口定义

import com.example.demo.model.UserInfo;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;

@Mapper
public interface UserInfoXMlMapper {
    List<UserInfo> select1();
}

@Mapper注解:表⽰是MyBatis中的Mapper接⼝,程序运⾏时, 框架会⾃动⽣成接⼝的实现类对象(代理对象),并给交Spring的IOC容器管理

添加UserInfoXMLMapper.xml

数据持久层的实现,MyBatis 的固定 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.example.demo.mapper.UserInfoMapper">
 
</mapper>

路径为之前创的持久层代码接口的路径

创建UserInfoXMLMapper.xml,路径参考yml中的配置

# 数据库连接配置
spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/mybatis_test?characterEncoding=utf8&useSSL=false
    username: root
    password: '123456'
    driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:
  configuration: # 配置打印 MyBatis⽇志
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    map-underscore-to-camel-case: true #配置驼峰⾃动转换
  mapper-locations: classpath:mapper/*.xml

开始练习

查(select)

在接口中写查询的方法,如下

在数据持久层(UserInfoMapper.xml)写具体实现

<select>查询标签:是⽤来执⾏数据库的查询操作的

id :是和 Interface (接⼝)中定义的⽅法名称⼀样的,表⽰对接⼝的具体实现⽅法。

resultType :是返回的数据类型,也就是开头我们定义的实体类.

进行测试,如下会自动生成测试代码

运行代码如下

删(delete)

在这里给大家推荐一个插件,可以自动帮我们生成数据持久层(UserInfoMapper.xml)中的代码

使用如下

会在UserInfoMapper.xml 中,自动生成如下代码,sql代码还是要自己写

测试

运行结果如下

查看表中数据,发现删除成功

上述的练习中,主要是准备工作麻烦 了一点,增和改就不在演示了

映射

当我们关闭驼峰⾃动转换时,再运行select1时会发现

后半段的数据查询结果为null,

这是因为我们在创表的时候,表的字段名为小写,用 ’ -‘  来分割,实体类使用的是驼峰命名,存在大写,如下

解决办法:1.开启驼峰自动转换  2. 在查询时候,给字段起别名 3.结果映射

这里我们只说一下映射

在.xml中写下结果映射

    <resultMap id="BaseMap" type="com.example.mysqldemo.UserInfo">
        <id column="id" property="id"></id>
        <result column="delete_flag" property="deleteFlag"></result>
        <result column="create_time" property="createTime"></result>
        <result column="update_time" property="updateTime"></result>
    </resultMap>
    <select id="select1" resultMap="BaseMap">
        select * from userinfo
    </select>

在上述代码中

运行结果如下

上述是一些MyBatis的简单操作,等学会难的再和大家分享

  • 30
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值