SSM复习之mybatis01:Mybatis简介-第一个Mybatis代码简单实现

1.1、Mybatis简介

1.1、什么是Mybatis

  • MyBatis是一款优秀的持久层框架。 它支持定制化SQL、存储过程以及高级映射
  • MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集合。
  • MyBatis可以使用简单的XML或注解来配置和映射原生类型、接口和Java的pojo实体类为数据库中的记录。

如何获得Mybatis

  • maven仓库:https://mvnrepository.com/
    GitHub:https://github.com/mybatis/mybatis-3/releases
    中文文档:https://mybatis.net.cn/getting-started.html

1.2、什么是持久化

数据持久化

  • 持久化就是将程序的数据在持久状态和瞬时状态转化的过程

内存:断点即失

  • 数据库(jdbc)、io文件持久化

为什么需要持久化?

  • 有一些对象,不能让他断电即失

1.3、持久层

  • Dao层、service层、Controller层。 完成持久化工作的代码块。 层界限十分明显。

1.4、为什么需要Mybatis?

帮助开发者将数据存入到数据库中。
传统得JDBC代码太复杂了。用一个框架模板做简化。
特性:

  1. 解除sql与程序代码耦合,提高可维护性。
  2. 便于统一管理和优化。
  3. 提供xml标签,支持编写动态sql。
  4. 提供对象关系映射标签,支持对象关系组件维护。

2、Mybatis程序

  • 思路:搭建环境->导入Mybatis->编写代码->测试

2.1、编写数据库

搭建数据库 数据库名:mybati 数据表:myone 数据表内容:id name pwd 三个属性

CREATE DATABASE 'mybati'

user 'mybati'

CREATE TABLE 'user'(
'id'  INT(20) NOT NULL PRIMARY KEY,
'name' VARCHAR(30) DEFAULT NULL,
'pwd' VARCHAR(30) DEFAULT NULL
)ENGINE=INNODB DEFAULT CHARSET=utf8;

INSERT INTO 'myone'('id','name','pwd') VALUES (1,'LP','123'),(2,'A','123')
  1. 新建maven/springboot项目
  2. 配置setting中得maven路径
  3. 删除src文件夹(为了避免多次导包,删除后可建立多个子工程) 导入maven依赖
  <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.49</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.2</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.26</version>
        </dependency>
  • 创建一个module模块 并配置核心配置文件mybatis-config.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="development">
        <environment id="development">
            <!--        事物管理JDBC-->
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <!--            驱动-->
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <!--            url路径-->
                <property name="url" value="jdbc:mysql://localhost:3306/mybati?useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8" />
                <property name="username" value="root" />
                <property name="password" value="x5" />
            </dataSource>
        </environment>
    </environments>
    <!--每个Mapper.xml都需要在Mybatis核心配置文件中注册!!-->
    <mappers>
        <mapper resource="demo/Mapper/userMapper.xml" />
    </mappers>
</configuration>

  • 编写MyBatisUtils工具类代码
 public class MyBatisUtils {
    private static SqlSessionFactory sqlSessionFactory;
    static{
        try{
            //        使用mybatis第一步:获取sqlSessionFactory对象
            String resource="mybatis-config.xml";
            InputStream inputStream= Resources.getResourceAsStream(resource);
            sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);

        }catch (IOException e){
            e.printStackTrace();
        }
    }
    //    可以使用Session
    public static SqlSession getSqlSession(){
//        SqlSession sqlSession=sqlSessionFactory.openSession();
//        return sqlSession;
        return sqlSessionFactory.openSession();
    }

}
  • 实体pojo类,这里用到了lombok得@Data注解,省略了getter和setter。
@Data
public class User {
    private int id;
    private String name;
    private String pwd;
}
  • 接口类、接口实现类mapper.xml实现

接口类userMapper

public interface userMapper{
    public List<User> query();
}

接口实现类mapper.xml由原来得UserServiceImpl实现类转换成mapper.xm配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//OTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/schema/mybatis-3-mapper.dtd">

<!--绑定一个对应得mapper接口-->
<mapper namespace="demo.Mapper.userMapper">
    <!--    select查询语句-->
    <select id="query" resultType="demo.pojo.User">
        select * from user
    </select>
</mapper>

2.4、junit测试

package demo.Mapper;

import demo.pojo.User;
import demo.utils.MyBatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.List;

public class userMapperTest {
    @Test
    public void test()
    {
//        第一步:获得SqlSession对象
        SqlSession sqlSession= MyBatisUtils.getSqlSession();

//        方式一:getMapper
        userMapper usermapper=sqlSession.getMapper(userMapper.class);
        List<User> userList = usermapper.query();

        for (User u : userList) {
            System.out.println(u);
        }
//        关闭SqlSession
        sqlSession.close();
    }
}

注:如果遇到Mapper文件找不到得问题,则将该代码放进父工程和子工程得pom文件中去。
MapperRegistrymappers找不到userMapper接口时:
核心配置文件MyBatisUtils中注册mappers
由于maven的约定大于配置,如果遇到配置文件无法被导出或生效的问题,可以用下列代码解决

 <!--在build中配置resources,来防止我们资源导出失败的问题!-->
    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>/
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>/
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
        </resources>

    </build>

运行思路:

  • 创建数据库和数据表
  • 创建项目并在setting中配置maven路径
  • 导出maven文件到pom中并更新
  • 删除src文件夹并创建一个module子项目
  • 配置核心文件mybatis-config.xml
  • 写MybatisUtils工具类
  • 编写pojo实体类
  • 编写mapper接口以及在resource文件夹下创建mapper.xml作为接口实现类
  • 利用junit实现在test中创建和mapper接口同级的测试类并测试是否成功。

可能会遇到的问题:
1.配置文件没有注册
2.绑定接口错误
3.方法名不对
4.返回类型不对
5.maven导出资源问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱吃巧克li

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值