MyBatis

MyBatis快速上手

MyBatis介绍

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

​ 首先打开idea工具,新建一个maven项目,流程如下。

maven

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0KMsRzsI-1614395924591)(C:\Users\LiHao\Desktop\博客上传md\maven1.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bb2f8xkd-1614395924594)(C:\Users\LiHao\Desktop\博客上传md\maven2.png)]

​ 新建完成项目后,我们需要点击手动导包

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gTeDw64j-1614395924596)(C:\Users\LiHao\Desktop\博客上传md\自动导包.png)]

在生成的maven项目文件中,点击项目名,在src中找到pom文件,并在pom文件中添加依赖。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hP4cRxMl-1614395924599)(C:\Users\LiHao\Desktop\博客上传md\添加依赖.png)]

导入依赖
 <!--依赖-->
    <dependencies>
        <!--MyBatis核心依赖-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.6</version>
        </dependency>
        <!--MySql依赖-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.46</version>
        </dependency>
    </dependencies>
编写MyBatis配置文件

​ 完成上述事情只是持久层框架MyBatis开发的前提步骤,下面需要完成的是MyBatis的文件配置。首先在recourses下新建mybatis-config.xml(建议小写)。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Sxh0f1U0-1614395924601)(C:\Users\LiHao\Desktop\博客上传md\新建MyBatis配置xml.png)]

​ 打开新建xml文件,新建的MyBatis约束文件里面是空的。此时打开MyBatis官网,点击左侧入门。就可以找到有关MyBatis配置xml方法。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LCvVfFme-1614395924602)(C:\Users\LiHao\Desktop\博客上传md\配置xml.png)]

​ 复制官网的xml配置文件,对xml文件的信息进行修改。

<?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属性值和environment中的id名称可以任意取,只需保持一致-->
    <environments default="development">
        <environment id="development">
            <!--type这里是JDBC,是Java的一种事务-->
            <transactionManager type="JDBC"/>
            <!--数据源配置信息,下面内容包含JDBC的相关配置-->
            <dataSource type="POOLED">
                <!--配置驱动-->
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <!--配置url访问的数据库 其中& 在xml文件中可以使用&amp转义,这里我们使用的数据库为mybatis_shine-->
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis_shine?characterEncoding=utf8&amp;useSSL=false"/>
                <!--用户名-->
                <property name="username" value="root"/>
                <!--密码-->
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>

    <!--mapper注册-->
    <mappers>
        <!--注册mapper文件的所在位置-->
        <!--mapper.xml默认建议放在resource中,路径中不能以/开头-->
        <mapper resource=""/>
    </mappers>
</configuration>
数据库及表的创建

​ 打开Sqlyog,或者navicat或者idea集成的数据库连接工具。执行创建mybaits_shine数据库,并创建t_user表。在表中手动添加两条记录。

-- 创建数据库,并将字符集设置为utf8
create database mybatis_shine default charset =utf8;
-- 选择数据库
use mybatis_shine;
-- 创建一张表
create table t_user(
    id int primary key  auto_increment, -- id主键自增长
    username varchar(50),    -- 姓名
    password varchar(50),   -- 密码
    gender tinyint,     -- 用0/1表示性别
    regist_time datetime    -- 注册时间
)default charset =utf8;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RzZkamJr-1614395924603)(C:\Users\LiHao\Desktop\博客上传md\添加数据.png)]

代码编写

​ 完成上述操作步骤,开始编写Java代码。在Java目录下创建多级包com.demo.entity【实体包】创建User实体类。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7ft9qY3R-1614395924604)(C:\Users\LiHao\Desktop\博客上传md\实体类创建.png)]

创建实体类,提供无参构造方法、有参构造方法、set/get方法,并重写toString方法,便于观察结果。

package com.demo.entity;

import java.util.Date;

/**
 * @Author 晴天看晚霞
 * @Date 2021/2/27 10:13
 * @Description
 * @Version 1.0
 */
public class User {
    private Integer id; // ID
    private String username; //用户名
    private String password; //密码
    private Boolean gender; //性别
    private Date registTime; //注册时间

    //无参构造方法
    public User() {
    }

    //有参构造方法
    public User(Integer id, String username, String password, Boolean gender, Date registTime) {
        this.id = id;
        this.username = username;
        this.password = password;
        this.gender = gender;
        this.registTime = registTime;
    }

    //set/get方法

    public Integer getId() {
        return id;
    }

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

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public Boolean getGender() {
        return gender;
    }

    public void setGender(Boolean gender) {
        this.gender = gender;
    }

    public Date getRegistTime() {
        return registTime;
    }

    public void setRegistTime(Date registTime) {
        this.registTime = registTime;
    }

    // 重写toString方法,方便输出查看结果
    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", gender=" + gender +
                ", registTime=" + registTime +
                '}';
    }
}

新建持久层包及实体类接口

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lAecEAvX-1614395924604)(C:\Users\LiHao\Desktop\博客上传md\新建持久层接口.png)]

编写dao层接口

package com.demo.dao;

import com.demo.entity.User;

import java.util.List;

/**
 * @Author 晴天看晚霞
 * @Date 2021/2/27 10:18
 * @Description
 * @Version 1.0
 */
public interface UserDao {

    /**
     * 查询所有的用户
     * @return
     */
    List<User> queryAll();
}

​ MyBatis 是持久层多框架避免了持久层实现类的开发,我们不需要编写持久层的实现类,只需要在resources目录下配置xml即可。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SWHR6zSL-1614395924605)(C:\Users\LiHao\Desktop\博客上传md\接口xml.png)]

新建的xml接口配置文件并没有约束信息,从MyBatis官网找寻。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T1k2wHqu-1614395924606)(C:\Users\LiHao\Desktop\博客上传md\接口xml配置模板.png)]

<?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="org.mybatis.example.BlogMapper">
  <select id="selectBlog" resultType="Blog">
    select * from Blog where id = #{id}
  </select>
</mapper>

改写配置后,需要注意的是我们在编写成员变量时用的驼峰命名法。数据库中的regist_time 起别名为registTime才有与之对应的查询结果。

<?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:接口所在位置的全限定名称-->
<mapper namespace="com.demo.dao.UserDao">
    <!--方法配置
    标签select:id对应者接口中的方法名,
    resultType:对应者sql语句执行完成后的结果类型,本次查询结果为实体类User,所以给出结果的全限定名称
    -->
    <select id="queryAll" resultType="com.demo.entity.User">
    select id,username,password,gender,regist_time as registTime
        from t_user
  </select>
</mapper>

​ 在写完接口的xml配置文件,将mybatis-config.xml中的信息mapper补充完整。

<?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属性值和environment中的id名称可以任意取,只需保持一致-->
    <environments default="development">
        <environment id="development">
            <!--type这里是JDBC,是Java的一种事务-->
            <transactionManager type="JDBC"/>
            <!--数据源配置信息,下面内容包含JDBC的相关配置-->
            <dataSource type="POOLED">
                <!--配置驱动-->
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <!--配置url访问的数据库 其中& 在xml文件中可以使用&amp转义-->
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis_shine?characterEncoding=utf8&amp;useSSL=false"/>
                <!--用户名-->
                <property name="username" value="root"/>
                <!--密码-->
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>

    <!--mapper注册-->
    <mappers>
        <!--注册mapper文件的所在位置-->
        <!--mapper.xml默认建议放在resource中,路径中不能以/开头-->
        <mapper resource="UserDaoMapper.xml"/>
    </mappers>
</configuration>
编写测试类

​ 编写测试类,在test包新建UserDaoMapprTest测试类,

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-65I6xcOI-1614395924606)(C:\Users\LiHao\Desktop\博客上传md\新建接口测试类.png)]

新建测试类

package com.demo.test;

import com.demo.dao.UserDao;
import com.demo.entity.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

/**
 * @Author 晴天看晚霞
 * @Date 2021/2/27 10:52
 * @Description
 * @Version 1.0
 */
public class UserDaoMapperTest {
    public static void main(String[] args) throws IOException {
        //MyBatis API
        //1.加载配置文件
        InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");

        //2.构建SqlSessionFactory,将MyBatista配置文件作为输入流传入build中
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        //3.通过SQLSessionFactory创建SqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();

        //4.通过SqlSession获得Dao的实现类的对象
        UserDao mapper = sqlSession.getMapper(UserDao.class);//获取UserDao实现类的对象

        //5.测试查询方法

        List<User> users = mapper.queryAll();
        for (User user: users) {
            System.out.println(user);
        }
    }
}

执行结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TWckbwJe-1614395924608)(C:\Users\LiHao\Desktop\博客上传md\执行结果.png)]

​ 最后如果感觉mybatis的配置文件有些复制不妨将配置xml和接口xml作为模板保存起来。在idea中选择settings,打开菜单选择editor。再次选择File and Code Template。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SbwrIDzi-1614395924608)(C:\Users\LiHao\Desktop\博客上传md\创建模板.png)]

按照下图步骤创建模板

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QLrStKA4-1614395924609)(C:\Users\LiHao\Desktop\博客上传md\创建模板7步骤.png)]

方法

    List<User> users = mapper.queryAll();
    for (User user: users) {
        System.out.println(user);
    }
}

}




执行结果

[外链图片转存中...(img-TWckbwJe-1614395924608)]



​		最后如果感觉mybatis的配置文件有些复制不妨将配置xml和接口xml作为模板保存起来。在idea中选择settings,打开菜单选择editor。再次选择File and Code Template。



[外链图片转存中...(img-SbwrIDzi-1614395924608)]



按照下图步骤创建模板

[外链图片转存中...(img-QLrStKA4-1614395924609)]



这次在MyBatis中出现了,很多细节性的错误。由于时间关系,这里只有一个简单的查询方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值