01 MyBatis第一个应用程序

1、MyBatis是什么?

mybatis是一个基于java的持久层框架。

2、什么是持久化

数据由瞬态状态变为持久状态。

3、持久层:

完成持久化工作的代码块。 -- DAO层,将数据存到数据库

4、MyBatis作用

就是帮助程序员将数据存入数据库中,和从数据库中取数据。

5、传统JDBC操作

有很多重复代码块,比如:数据取出时的封装,数据库的建立连接等。通过框架可以减少重复代码,提高开发效率。

6、MyBatis是一个半自动化的ORM框架

O -- object,R -- relationShip,M--mapping。

7、MyBatis的功能:

MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Ordinary Java Objects,普通的 Java对象)映射成数据库中的记录。

8、mybatis如何使用

整体的文件:

1)导入mybatis相关jar包:

maven依赖或者直接把jar包导入到编译路径下。
本例 从MyBatis的lib(/Users/huqiqi/Library/mybatis-3.5.2/lib)中里面直接拷出来,放到项目的lib文件夹下,另外要导入数据库驱动包。

2)编写mybatis的核心配置文件xml

mybatis.cfg.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">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/se_db"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="cn/sxt/entity/Article.mapper.xml"/>
    </mappers>
</configuration>

易错说明:
1⃣️ 数据库url连接,需要加上 库名,如 /se_db。
2⃣️ mappers文件配置,需要加上 mapper.xml 文件的包名。

3)创建sqlSessionFactory

package cn.sxt.util;

import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class MyBatisUtil {
    public static SqlSessionFactory getSqlSessionFactory() throws IOException {
        String resource = "cn/sxt/util/mybatis.cfg.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        return sqlSessionFactory;
    }

    public static SqlSession getSession() throws IOException {
        SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
        return sqlSessionFactory.openSession();
    }
}

说明:
读取第二步中的配置文件 mybatis.cfg.xml,创建sqlSessionFactory。
导入报错说明:外部jar包需要添加到编译环境.

4)从SqlSessionFactory中去获取一个SqlSession

// MyBatisUtil.java 类增加方法如下:
public static SqlSession getSession() throws IOException {
    SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
    return sqlSessionFactory.openSession();
}

说明:通过sqlSessionFactory.openSession() 获取一个sqlSession。

5)创建实体类

-- select id,title,edit_mode from article;
创建实体类:Article.java

package cn.sxt.entity;

// select id,title,edit_mode from article;
public class Article {
    private int id;
    private String title;
    private String edit_mode;

    public int getId() {
        return id;
    }

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

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getEdit_mode() {
        return edit_mode;
    }

    public void setEdit_mode(String edit_mode) {
        this.edit_mode = edit_mode;
    }

    @Override
    public String toString() {
        return "Article{" +
                "id=" + id +
                ", title='" + title + '\'' +
                ", edit_mode='" + edit_mode + '\'' +
                '}';
    }
}

6)Mapper的配置,即sql语句的映射文件:

<?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="cn.sxt.entity.ArticleMapper">
    <select id="selectArticle" resultType="cn.sxt.entity.Article">
        select * from article where id = #{id}
    </select>
</mapper>

7)测试代码:

Test.java 类:

public class Test {
    public static void main(String[] args) throws IOException {
        SqlSession session = MyBatisUtil.getSession();
        // 第一个参数是 Article.mapper.xml 配置文件中的包名+id的名称
        // 第二个参数是 配置文件中的参数 #{id} 的值
        Article article = session.selectOne("cn.sxt.entity.ArticleMapper.selectArticle",1);
        System.out.println(article);
    }
}

结果:

posted @ 2023-06-19 10:14  hqq的进阶日记  阅读(24)  评论(0)    收藏  举报