(1)创建mysql数据库和表

上一篇文章写了,点击此处:mysql数据库的创建

(2)创建项目/工程(方法2:课堂上老师讲的) 

1.打开idea,File —> New —> Project... —> Maven —> 接下来如下

2.选择 File --> New Projects Settings --> Settings for New Projects
3.找到 maven 配置,将 maven 的安装地址及配置好的 setting 文件地址输入
4.选择 File --> Project Structure --> Project,选择对应的 jdk 版本号\

5.选择 File --> Project Structure --> Modules,选择对应的 jdk 版本号

(3)在 pom.xml 中引⼊依赖(mybatis依赖 + mysql驱动依赖,前提是已导入mybatis jar包和mysql-connector-java jar包,这步已完成了)

1.可以在Maven中搜索各个版本的依赖——>https://mvnrepository.com/

每当在新的 Maven 项目中添加相同的依赖项时,Maven 会首先检查本地仓库是否已经存在相应的 Jar 包。如果已经存在,Maven 将重复使用本地存储的 Jar 包,而不会重新下载。如果不存在,Maven 会自动下载并导入所需的 Jar 包到本地 Maven 仓库,如下localRepository目录是自定义的本地仓库:

D:\maven\localRepository\org\mybatis\mybatis\3.5.5\mybatis-3.5.5.jar D:\maven\localRepository\mysql\mysql-connector-java\8.0.28\mysql-connector-java-8.0.28.jar

<!--mybatis依赖-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.5</version>
    </dependency>

<!--mysql驱动依赖-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.28</version>
    </dependency>

2.加载Maven依赖,未存在相关依赖加载后将会依赖下载到本地 Maven 仓库,已存在相关依赖加载后将会刷新

<build>
    <!--配置文件扫描,扫描到xml文件,不用改,直接复制到pom.xml的build标签中去-->
    <resources>
      <resource>
        <directory>src/main/java</directory>
        <includes>
          <include>**/*.xml</include>
        </includes>
      </resource>
      <resource>
        <directory>src/main/resources</directory>
        <includes>
          <include>**/*.xml</include>
          <include>**/*.properties</include>
        </includes>
        <filtering>true</filtering>
      </resource>
    </resources>
</build>

(4)创建实体类Student。实体类名推荐和表名一致,容易记忆

要求如下:

1.新建 entity包并根据数据库字段名创建一个实体类
2.生成 set() 和 get() 方法
3.生成 toString() 方法;

Student.java

package com.bjpowernode.entity;

//实体类名推荐和表名一致,容易记忆
public class Student {
    //定义属性,要求属性名和列名一致
    private Integer id;
    private String name;
    private String email;
    private  Integer age;

    //快速生成Getter和Setter方法,Generate——>Getter and Setter,全选:点击第一个,按住Shift+最后一个
    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
    //重写,快速生成toString:Generate——>toString(),全选
    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", email='" + email + '\'' +
                ", age=" + age +
                '}';
    }
}

(5)写操作实体类数据的dao接口

要求如下:

1.新建 mapper 包/dao包并创建接口类,如:StudentMapper.java/StudentDao.java
2.写出对数据库单表的增删改查操作。(增加学生、删除学生、查询所有学生、根据用户 id 查询学生、修改学生邮箱)

(6)创建SQL映射文件(如,StudentDao.xml作用:执行sql语句)

SQL映射文件写sql语句的,mybatis会执行这些sql,放在接口文件同级,课堂讲的是放在resources\com\wlz\mapper下。该文件(abc.xml)与接口(abc.java)同名

mybatis官网有XML 映射语句的示例,链接:https://mybatis.org/mybatis-3/zh/index.html

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.mybatis.example.BlogMapper">
    <select id="selectBlog" resultType="Blog">
        select * from Blog where id = #{id}
    </select>
</mapper>

a.指定约束文件

<!DOCTYPE mapper

        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">

其中mybatis-3-mapper.dtd是约束文件的名称,扩展名是dtd的。

b.约束文件的作用:限制、检查在当前文件中出现的标签,属性必须符合mybatis的要求。

c.mapper 是当前文件的根标签,必须的。    namespace:叫做命名空间,唯一值的,可以是自定义的字符串。要求你使用dao接口的全限定名称。

d.在当前文件中,可以使用特定的标签,表示数据库的特定操作。 <select>:表示执行查询 <update>:表示执行更新 <insert>:表示执行插入

e. id:执行的sql语句的唯一标识,mybatis会使用这个id的值来找到要执行的sql语句,可以自定义,但必须是使用的接口文件的方法名称。resultType:表示结果类型,是sql语句执行后得到resultSet,遍历这个resultSet得到java对象的类型。

StudentDao.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bjpowernode.dao.StudentDao">
    <select id="selectStudents" resultType="com.bjpowernode.entity.Student">
        select id,name,email,age from student order by id
    </select>
</mapper>

(7)创建全局配置文件(如,mybatis.xml 作用:连接数据库)

全局配置文件是mybatis主配置文件,放在resources的目录下

要求如下:

1.在 resources 文件夹下创建配置文件,如:mybatis-config.xml
2.添加别名设置
3.添加数据库连接设置
4.添加 sql 映射文件设置
5.配置日志设置
mybatis.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>

<!--环境配置,数据库的连接信息
        default:必须和某个environment的id值一样
        告诉mybatis使用哪个数据库的连接信息。也就是访问哪个数据库
    -->
    <environments default="wlz">
        <!--environments(环境):一个数据库信息配置,
            id:一个唯一值,自定义表示环境的名称
        -->
        <environment id="wlz">
        <!--transactionManager:mybatis的事务类型
            type:JDBC(表示使用jdbc中的Connection对象的commit,rollback做事务处理)
        -->
            <transactionManager type="JDBC"/>
            <!--dataSource:表示数据源,连接数据库的
                type:表示数据源的类型,POOLED表示使用连接池
            -->
            <dataSource type="POOLED">
                <!--driver,url,username,password是固定的,不能自定义-->
                <!--driver:数据库的驱动类名-->
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <!--连接数据库的url字符串-->
                <property name="url" value="jdbc:mysql://localhost:3306/ssm"/>
                <!--访问数据库的用户名-->
                <property name="username" value="root"/>
                <!--密码-->
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>

    <!--sql mapper(即sql映射文件)的位置-->
    <mappers>
<!--一个mapper标签指定一个文件的位置
    从类路径开始的路径信息,target/classes(类路径)==>反正2个.xml文件必须同级
-->
        <mapper resource="com/bjpowernode/dao/StudentDao.xml"/>
    </mappers>
</configuration>
<!--
    mybatis的主配置文件:主要定义了数据库的配置信息,sql映射文件的位置

    1.约束文件
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-config.dtd">

    mybatis-3-config.dtd约束文件名称
    2.configuration:根标签-->

(7)编写执行代码

AppTest.java

package com.bjpowernode;

import com.bjpowernode.entity.Student;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;

public class AppTest {

//SqlSessionFactoryBuilder(类)——>构建SqlSessionFactory对象——>创建SqlSession对象——>执行SQL操作

    //访问mybatis,读取student数据
    public static void main(String[] args) throws IOException {
        //1.定义mybatis主配置文件的名称,从类路径的根开始(target/classes)
        String config="mybatis.xml";
        //2.读取这个config表示的文件
        InputStream in= Resources.getResourceAsStream(config);
//3.创建SqlSessionFactoryBuilder对象
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        // 4. 创建SqlSessionFactory对象
        SqlSessionFactory factory = builder.build(in);
        // 5. 创建SqlSession对象
        SqlSession sqlSession = factory.openSession();
        // 6.【重要】指定要执行的sql语句的标识。sql映射文件中的namespace + "." + 标签的id值(作用:找到并执行指定的sql语句)
        //String sqlid = "com.bjpowernode.entity.StudentDao" + "." + "selectStudents";
String sqlid = "com.bjpowernode.entity.StudentDao.selectStudents";
        // 7.【重要】执行sql语句,通过sqlid找到sql语句
        List<Student> studentList = sqlSession.selectList(sqlid);
        //8.输出结果
        //studentList.forEach(stu -> System.out.println(stu));
        for (Student stu : studentList) {
            System.out.println("查询的学生="+stu);
        }
        //9.关闭SqlSession对象
        sqlSession.close();
    }
}

拓展:target文件中的.xml文件缺少的解决办法,前提是pom.xml中有这个build标签的配置,下面4种方法任选其一,一个个试

<build>
    <!--配置文件扫描,扫描到xml文件,不用改,直接复制到pom.xml的build标签中去-->
    <resources>
      <resource>
        <directory>src/main/java</directory>
        <includes>
          <include>**/*.xml</include>
        </includes>
      </resource>
      <resource>
        <directory>src/main/resources</directory>
        <includes>
          <include>**/*.xml</include>
          <include>**/*.properties</include>
        </includes>
        <filtering>true</filtering>
      </resource>
    </resources>
  </build>

1.点击右侧边上的Maven—>点击自己命名为wlz01_helloMybatis的Maven Modules—>Lifecycle—>clean—>compiler—>运行

2.点击上边栏中的Build—>Rebuild Progect—>运行

3.点击File—>Invalidate Caches—>Invalidate and Restart—>运行

4.直接把自己配置的.xml文件复制粘贴到对应的target文件夹下

Logo

一站式 AI 云服务平台

更多推荐