MyBatis入门

吾非媛 2020年08月23日 357次浏览

1.开发环境准备

学习编程是一门实践科学,只有一边写代码一边学习才会有好的效果,所以需要搭建一个可以以运行的学习环境,以便我们实践和探索,所以本片文章代领大家来配置开发环境。

2.下载MyBatis

我们直接使用Mavne进行。找到MyBatis在Maven的坐标。

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

3.集成开发工具(IDEA)的使用

3.1创建Maven项目

3.2编辑pom.xml

<?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.pingchas</groupId>
    <artifactId>mybatis-learn</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.6</version>
        </dependency>

    </dependencies>

</project>

3.3调整编译配置

360截图1729050682117113.jpg

4.MyBatis的一些概念

  • SqlSessionFactoryBuilder(构造器): 它会根据配置信息或者代码来生成SqlSessionFactory(工厂接口)
  • SqlSessionFactory: 依靠工厂来生成SqlSession(会话)
  • SqlSession: 是一个既可以发送SQL去执行并返回结果,也可以获取Mapper的接口
  • SqlMapper: 它是MyBatis新设计的组件,它是由一个Java接口和XML文件(或注解)构成的,需要给它对应的SQL和映射规则。他负责发送SQL去执行,并返回结果。

5.使用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>
<typeAliases>
    <typeAlias type="com.demo.po.Role" alias="Role"/>
</typeAliases>
    <!--环境配置,连接的数据库,这里使用的是MySQL-->
    <environments default="mysql">
        <environment id="mysql">
            <!--指定事务管理的类型,这里简单使用Java的JDBC的提交和回滚设置-->
            <transactionManager type="JDBC"></transactionManager>
            <!--dataSource 指连接源配置,POOLED是JDBC连接对象的数据源连接池的实现-->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"></property>
                <property name="url" value="jdbc:mysql://127.0.0.1:3306/mybbs"></property>
                <property name="username" value="root"></property>
                <property name="password" value="root"></property>
            </dataSource>
        </environment>
    </environments>
    <mappers>        <!--这是告诉Mybatis区哪找持久化类的映射文件,对于在src下的文件直接写文件名,            如果在某包下,则要写明路径,如:com/mybatistest/config/User.xml-->
        <mapper resource="User.xml"></mapper>
    </mappers>
</configuration>

说明:

  • 这里配置了一个别名Role,它代表了com.demo.po.Role,这样我们就可以在MyBatis上下文中引用它了。
  • 我们配置了环境,它包含以下两方面内容。
    (1)采用JDBC的事务管理模式。
    (2)数据库的连接信息
    -定义了映射器

1.生成SqlSessionFactory

//读取配置文件
        InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
        //初始化mybatis,创建SqlSessionFactory类实例
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);

2.创建SqlSession

//创建Session实例
        SqlSession session = sqlSessionFactory.openSession();

3.实体关系映射

package com.bean;

public class Student {

    private String sno;
     public String getSno() {
        return sno;
    }
    public void setSno(String sno) {
        this.sno = sno;
    }
    public String getsName() {
        return sName;
    }
    public void setsName(String sName) {
        this.sName = sName;
    }
    public String getsSex() {
        return sSex;
    }
    public void setsSex(String sSex) {
        this.sSex = sSex;
    }
    public String getsAge() {
        return sAge;
    }
    public void setsAge(String sAge) {
        this.sAge = sAge;
    }
    public String getsDept() {
        return sDept;
    }
    public void setsDept(String sDept) {
        this.sDept = sDept;
    }
    public String sName;
     public String sSex;
     public String sAge;
     public String sDept;
     public String getcId() {
        return cId;
    }
    public void setcId(String cId) {
        this.cId = cId;
    }
    private String cId;
    public Student(String sno, String sName, String sSex, String sAge,
            String sDept,String cId) {
        super();
        this.sno = sno;
        this.sName = sName;
        this.sSex = sSex;
        this.sAge = sAge;
        this.sDept = sDept;
        this.cId=cId;
    }
    public Student() {
        super();
    }

}

4.编写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="com.bean.StudentMapping">
    <select id="getStudent" parameterType="String" resultType="com.bean.Student">
        select * from student where sno = #{sno}
    </select>

</mapper>

3.查询单条记录

String statement="com.bean.StudentMapping.getStudent"
Student u = (Student)session.selectOne(statement, "111");