快速搭建第一个Mybatis程序

本文阅读 6 分钟
首页 代码,Java 正文

以Mybatis3.5.7为例 环境:

  • jdk8.0
  • Mysql8.0
  • maven3.8.4
  • IDEA

回顾:

  • JDBC
  • Mysql
  • Java基础
  • Maven
  • Junit

1.初识Mybatis

img

  • MyBatis 是一款优秀的持久层框架
  • 它支持自定义 SQL、存储过程以及高级映射。
  • MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作
  • MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
  • MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apache software foundation迁移到了google code,并且改名为MyBatis。
  • 2013年11月迁移到Github。所以要找Mybatis得去Github

怎么获得Mybatis?

  • maven仓库
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.7</version>
</dependency>

2.持久化

数据持久化

  • 持久化就是把程序的数据在持久状态和瞬时状态转化的过程
  • 内存:断电后数据就消失了
  • 数据库(jdbc),IO文件持久化

为什么需要持久化

  • 内存断电后数据就丢失了,有一些对象我们不能让他丢掉
  • 内存太贵了

3.持久层

Dao层,Service层,Controller层

4.为什么需要Mybatis

  • 帮助程序员把数据存入到数据库中
  • 方便
  • 传统的JDBC代码太复杂了,框架可以简化操作,自动化。
  • 不使用Mybatis也可以,更容易上手。
  • 优点:
    - sql和代码分类,提高可维护性 - 提供映射标签,支持对象与数据库的orm字段关系映射 - ORM是对象关系映射的意思 O ------ object就是 java对象 R -------relational 关系型数据 M -------mappering 映射 - 提供哦那个对象关系映射标签,支持对象关系组建维护 - 提供xml标签,支持编写动态sql

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

1.搭建环境

先提供一个数据库和用来操作的表 新建项目 1.File->new Project 新建maven项目 img

img img 下面这一堆代码是构建maven项目以后,自带的

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.kuang</groupId>
    <artifactId>Mybatis-study</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

</project>

img

2.删除src,这样就可以当成父工程了 3.导入maven依赖 第一次加入依赖的时候,项目会爆红,记得重新加载项目,这样就不会爆红了

<!--导入依赖-->
    <dependencies>
<!-- mysql驱动-->
        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.16</version>
        </dependency>

        <!-- mybatis驱动-->
        <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.7</version>
        </dependency>

        <!-- junit驱动-->
        <!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api -->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>5.8.2</version>
            <scope>test</scope>
        </dependency>

    </dependencies>

2.创建一个新模块

img img 父项目的pox.xml就会多出来这样的代码

<modules>
        <module>mybatis-01</module>
        <module>mybatis-01</module>
        <module>mybatis-01</module>
    </modules>
  • 编写mybatis核心配置文件 img 把下面的代码拷贝到刚刚新建的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代表核心配置文件-->
<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="org/mybatis/example/BlogMapper.xml"/>
    </mappers>
</configuration>

上面那一个从官网复制过来的,相当于是一个模板,但是里面具体的信息需要我们自己去设置,比如说我们要连接的数据库的用户名,密码等信息需要手动配置 img

<?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代表核心配置文件-->
<configuration>
<!-- 环境可以有多个,我们用默认的环境-->
<!-- 配置连接数据库的环境-->
    <environments default="development">
        <environment id="development">
<!-- 事务管理器,类型是JDBC-->
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?serverTimezone=Asia/Shanghai&amp;useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>
                <property name="username" value="root"/>
                <property name="password" value="a87684009."/>
<!-- 数据源就是连接是连接数据库的信息-->
            </dataSource>
        </environment>
        <environment id="test">
            <transactionManager type="JDBC"/>
<!-- type=POOLED表示使用数据库连接池-->
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
<!-- 引入映射文件-->
<!-- 每一个Mapper.xml都需要在Mybatis的核心配置文件中注册-->
    <mappers>
        <mapper resource="com/kuang/dao/UserMapper.xml"/>
    </mappers>
</configuration>

3.编写代码

  • 编写mybatis工具类
//工厂模式
//sqlSessionFactory---->sqlSession
public class MybatisUtils { 
    public static SqlSessionFactory sqlSessionFactory;

    static { 

        try { 
            //读取配置文件
            //下面三句话是固定的
            //使用Mybatis第一步:获取sqlSessionFactory对象
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            SqlSessionFactory build = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) { 
            e.printStackTrace();
        }
    }

    /** * 既然有了SqlSessionFactory,顾名思义,我们就可以从中获取SqlSession的实例了 * SqlSession完全包含了面向数据库执行sql命令所需要的所有方法 */
    public static SqlSession getSqlSession() { 
        SqlSession sqlSession = sqlSessionFactory.openSession();
        return  sqlSession;
    }


}
  • 实体类(domain,pojo,domain)每一个类都和数据库中的一张表相关联
package com.kuang.pojo;

/**实体类 * @author zengyihong * @create 2022--03--28 17:14 */
public class User { 
 private int id;
 private String username;
 private String password;

 public User() { 
 }

 public User(int id, String username, String password) { 
  this.id = id;
  this.username = username;
  this.password = password;
 }

 public int getId() { 
  return id;
 }

 public void setId(int 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;
 }

 @Override
 public String toString() { 
  return "User{" +
          "id=" + id +
          ", username='" + username + '\'' +
          ", password='" + password + '\'' +
          '}';
 }
}
  • DAO接口(对数据库表的CRUD操作,对user表的操作就对应一个userDao)
package com.kuang.dao;

import com.kuang.pojo.User;

import java.util.List;

/**这个类用来操作数据库中对象的实体 * @author zengyihong * @create 2022--03--28 17:16 */
//dao等价于mapper
public interface UserDao { 
    List<User> getUserList();
}
  • 接口实现类由原来的UserDaoImpl转换成为一个Mapper配置文件
<?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">
<!--命名空间要绑定一个对应的DAO/Mapper接口-->
<mapper namespace="com.kuang.dao.UserDao">
<!--     select查询语句 id对应原来的方法名字-->
    <select id="getUserList"  resultType="com.kuang.pojo.User">
        select  * from mybatis.user
    </select>

</mapper>

可能大家看到上面那些有点懵,那我们就来复习一下 ,具体的大家可以看我博客中JDBC的内容,里面有关于分层的讲解。

img img

4.Junit测试

package com.kuang.dao;

import com.kuang.pojo.User;
import com.kuang.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.jupiter.api.Test;

import java.util.List;

/** * @author zengyihong * @create 2022--03--29 9:55 */
public class UserDaoTest { 
    @Test
    public void test(){ 
// SqlSession
// 第一步:获得SqlSession对象
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        //方式一:执行SQL getMapper
        UserDao mapper = sqlSession.getMapper(UserDao.class);
        List<User> userList = mapper.getUserList();
        for (User user:userList){ 
            System.out.println(user);
        }
        //关闭SqlSession

        sqlSession.close();

    }

}

img

1.配置文件没有注册 2.绑定接口错误 3.方法名错误 4.返回类型错误 5.maven导出资源错误 在pox.xml中,加入下面代码即可

<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>
本文为互联网自动采集或经作者授权后发布,本文观点不代表立场,若侵权下架请联系我们删帖处理!文章出自:https://zengyihong.blog.csdn.net/article/details/123743504
-- 展开阅读全文 --
安全面试之XSS(跨站脚本攻击)
« 上一篇 07-24

发表评论

成为第一个评论的人

热门文章

标签TAG

最近回复