Mybitas入门

Mybitas入门

一,导入依赖

<dependencies>
<!--导入数据库连接池的依赖-->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.47</version>
    </dependency>
    <!--导入mybatis的依赖-->
    <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.3</version>
    </dependency>
 <!--导入测试类的的依赖-->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>3.8.2</version>
    </dependency>
</dependencies>

二,对mybatis进行配置
XML 配置文件中包含了对 MyBatis 系统的核心设置,包括获取数据库连接实例的数据源(DataSource)以及决定事务作用域和控制方式的事务管理器(TransactionManager)。
在父工程的pom里面需要写映射映射到

<?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">
      <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"/><!--此处写xml所在的文件资源路径-->
  </mappers>
</configuration>

****三,编写工具类
MybatisUtils工具类(只需要写一次),用来返回sqlsession对象,getsqlsession返回一个sqlsession的对象(固定模板)
使用 MyBatis 的主要 Java 接口就是 SqlSession。你可以通过这个接口来执行命令,获取映射器示例和管理事务。在介绍 SqlSession 接口之前,我们先来了解如何获取一个 SqlSession 实例。SqlSessions 是由 SqlSessionFactory 实例创建的。SqlSessionFactory 对象包含创建 SqlSession 实例的各种方法。而 SqlSessionFactory 本身是由 SqlSessionFactoryBuilder 创建的,它可以从 XML、注解或 Java 配置代码来创建 SqlSessionFactory。

生成sqlsession流程图如下图
在这里插入图片描述

 Blog blog = (Blog) session.selectOne("org.mybatis.example.BlogMapper.selectBlog", 101);

session也可以通过如上语句生成,诚然,这种方式能够正常工作,对使用旧版本 MyBatis 的用户来说也比较熟悉。但现在有了一种更简洁的方式——使用和指定语句的参数和返回值相匹配的接口(比如 BlogMapper.class),现在你的代码不仅更清晰,更加类型安全,还不用担心可能出错的字符串字面值以及强制类型转换。

public class MybatisUtils {
    public  static  SqlSessionFactory sqlSessionFactory;
    static {

        try {
            String resource = "mybatis-config.xml";
            InputStream inputStream= Resources.getResourceAsStream(resource);
          sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public static SqlSession getSqlSession(){
        return sqlSessionFactory.openSession();
    }
}

四,编写(mapper层和pojo层)
pojo层,就是bean层,存放数据类型,切记属性名尽量与数据库中的列名相同

public class Book {
    private int id;
    private String bname;
    private int price;
    private  String author;
    private String content;

    public Book(int id, String bname, int price, String author, String content) {
        this.id = id;
        this.bname = bname;
        this.price = price;
        this.author = author;
        this.content = content;
    }

    public Book() {
    }

    public int getId() {
        return id;
    }

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

    public String getBname() {
        return bname;
    }

    public void setBname(String bname) {
        this.bname = bname;
    }

    public int getPrice() {
        return price;
    }

    public void setPrice(int price) {
        this.price = price;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    @Override
    public String toString() {
        return "Boo{" +
                "id=" + id +
                ", bname='" + bname + '\'' +
                ", price=" + price +
                ", author='" + author + '\'' +
                ", content='" + content + '\'' +
                '}';
    }
}

mapper层即dao层只需要编写接口即可,如下图列子

public interface BookDao {
    List<Book> getBookList();
}

在mapper(Dao)文件夹里面配置相对应的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="dao.BookDao">
<!--此处必须写全类名,否则就只能在config里面配置别名或者包扫描(typeAliases)-->
    <select id="getBookList" resultType="pojo.Book">
    select * from book.book
  </select>
</mapper>

五,编写测试类

public class BookDaoTest {
    @Test
    public void test(){
        //第一步,获取sqlsession对象
    SqlSession sqlSession= MybatisUtils.getSqlSession();
    //获取接口对象
        BookDao mapper = sqlSession.getMapper(BookDao.class);
        List<Book> bookList = mapper.getBookList();
        bookList.forEach(System.out::println);
    }
}

测试成功,增删改只需要修改xml文件中的代码即可,并建立接口。

©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页