前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MyBatis3使用

MyBatis3使用

作者头像
心平气和
发布2021-01-13 15:42:01
3780
发布2021-01-13 15:42:01
举报

一、MyBatis介绍

以下来自官方介绍:

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。 https://mybatis.org/mybatis-3/zh/index.html

说简单点,MyBatis是一个持久化框架,用于Java程序高效访问数据库,不用我们去访问原生相对繁琐的JDBC等Api,提升开发效率。

二、MyBatis环境准备

作为这一系列文章的第1篇,今天先讲述MyBatis的使用。

使用前先做下环境准备,以 Mysql为例,先创建数据库,假设名字为mybatis,然后创建表,表结构如下:

代码语言:javascript
复制
CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) DEFAULT NULL,
  `phone` varchar(20) DEFAULT NULL,
  `create_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

很简单的一张表,包含几个字段:姓名,手机和创建时间

可以再加点数据:

代码语言:javascript
复制
INSERT INTO `user` VALUES ('1', 'edward', '13612345678', '2020-10-28 10:20:30');
INSERT INTO `user` VALUES ('2', 'howard', '13912345678', '2020-10-28 10:20:40');

三、具体使用步骤

1、引入jar包

代码语言:javascript
复制
 <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.3.0</version>
  </dependency>

使用的版本为3.3.0,后续都以这个版本讲述。

2、编写主配置文件

使用Xml描述,命名随意,根据公司规范,如mybatis-config.xml,以下为样例:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>
    <settings>
        <setting name="lazyLoadingEnabled" value="false"/>
    </settings>

    <typeAliases>
    </typeAliases>
    <mappers>
        <mapper resource="dal/mapper/UserMapper.xml"/>
    </mappers>
</configuration>

可以看到Xml中顶层节点为configuration,有以下子元素:settings、typeAliases、mappers,当然还可以有其它子节点,后面单独讲述。

其中settings用来配置一些参数,mappers设置mapper文件, mapper文件就是我们编写Sql的地方,后面会讲。

3、配置数据源

可以在上面的主文件中配,以下为例:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>
<environments default="dev" >
    <environment id="dev">
      <transactionManager type="JDBC">
        <property name="" value="" />
      </transactionManager>
      <dataSource type="UNPOOLED">
        <property name="driver" value="com.mysql.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis?useUnicode=true&amp;characterEncoding=UTF-8" />
        <property name="username" value="root" />
        <property name="password" value="123456" />
      </dataSource>
    </environment>
  </environments>
  
  </configuration>

如果是SpringBoot的程序一般在application.properties中配置,Spring会自动帮我们装配:

代码语言:javascript
复制
spring.datasource.driverClassName = com.mysql.jdbc.Driver
spring.datasource.url = jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&amp;characterEncoding=UTF-8
spring.datasource.username = root
spring.datasource.password =123456

4、编写实体类

用于返回数据

代码语言:javascript
复制
public class UserEntity {
    private Long id;
    private String name;
    private Date createTime;
    private String phone;


    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

}

5、编写接口类

代码语言:javascript
复制
@Repository
public interface UserMapper {
    List<UserEntity> listAllUser();
}

上面我们只定义了一个方法。

6、编写Sql

前面我们在主配置文件中引入的Mapper文件:

代码语言:javascript
复制
 <mappers>
        <mapper resource="dal/mapper/UserMapper.xml"/>
    </mappers>

现在相应目录编写文件内容:

代码语言:javascript
复制
<?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.liujh.mapper.UserMapper">
    <sql id="userFields">
      id,name, phone,create_time
    </sql>

    <select id="listAllUser"  resultType="com.liujh.entity.UserEntity" >
        select
        <include refid="userFields"/>
        from user
    </select>

</mapper>

Mapper文件的顶层节点为mapper,其中namespace属性对应第4步编写的接口类的命名空间。

每一个sql语句都有相应的节点,查询语句对应select节点,其中重点的属性为id,和第4步编写的接口对应的方法:

代码语言:javascript
复制
List<UserEntity> listAllUser();

这里为了重用把查询字段单独用一个节点表示。

resultType表示查询结果返回的类型,对应前面定义的UserEntity。

四、测试

代码语言:javascript
复制
  @Resource
    private UserMapper userMapper;

    @Test
    public void testMapper(){
        List<UserEntity> userEntities = userMapper.listAllUser();
        Assert.assertEquals(userEntities.size(), 2);
    }

在一个测试类中注入UserMapper,当然可以手动new一个也行,然后debug下就可以看到userEntities的数据了

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员升级之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档