IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 第一个MyBatis项目 -> 正文阅读

[Java知识库]第一个MyBatis项目


项目结构:

1.新建maven项目

File-New-Project-Maven-Next-输入项目名-Finsh

2. 连接数据库

  1. View-Tools Windows-Database

  1. Database-±Data Source-选择要连接的数据库

3.导入相关依赖(API)–pom.xml

  1. MySQL驱动
  2. log4j–控制日志信息输送到控制器等
  3. junit–单元测试框架,进行代码测试
  4. mybatis–访问操作数据库

代码:

<?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">

    <dependencies>
<!--mysql驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.28</version>
        </dependency>
<!--log4j依赖-->
        <dependency>
            <groupId>com.att.inno</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.13</version>
        </dependency>
<!--junit测试包-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
<!--mybatis核心包-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.2</version>
        </dependency>

    </dependencies>

</project>

4.配置log4j–方便查看控制台输出sql语句

  • 在reources目录下新建log4j.properties文件

输入:

# 全局配置
log4j.rootLogger=ERROR,stdout
# MyBatis日志配置
log4j.logger.com.lifeng=DEBUG
# 控制台输出配置
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

未配置log4j.properties,会报出以下错误:

5.创建实体类Student

5.1什么是实体类

  • 一般的实体类对应一个数据表,其中的属性对应数据表中的字段
  • 实体类就是把对某一个表的操作全写在一个类中.

5.2编写实体类注意

  1. 实体类的名字尽量和数据库的表的名字对应相同。
  2. 实体类有属性和方法,属性对应数据库中表的字段,主要有getter和setter方法。
  3. 实体类应该有个无参的构造方法。
  4. 实体类应该有个有参(所有的参数)的构造方法。

5.3创建实体类Student

  1. 创建目录:src-main-java-com.hbfu.entity-Student
package com.hbfu.entity;

public class Student {
    //声明变量并封装--封装后外界不能访问使用变量-只能通过setter和getter方法
    private int id;
    private  String studentsname;
    private String gender;
    private int age;

    //定义方法,返回数据库中的信息
    public String toString(){
        return "Student{"+"id="+id+
                ",studentname="+studentsname+
                ",gwnder="+gender+
                ",age="+age+
                "}";
    }

    //setter--用于设置和getter--用于获取
    public void setId(int id) {
        this.id = id;
    }

    public int getId() {
        return id;
    }

    public void setStudentsname(String studentsname) {
        this.studentsname = studentsname;
    }

    public String getStudentsname() {
        return studentsname;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public String getGender() {
        return gender;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public int getAge() {
        return age;
    }
}

6.新建Dao层

6.1什么是Dao层

  • Dao(Data Access Object):数据访问接口,对数据库进行操作,夹在业务逻辑层和数据库资源中间
  • Dao层一般有接口和接口的实现类:
  1. 接口通常用来定义实现类的外观即实现类的行为定义,用来约束实现类的行为。接口相当于一份契约,根据外部应用需要的功能,约定了实现类因该要实现的功能。通过使用接口,可以实现不相关类的相同行为,而不需要考虑这些类之间的层次关系,接口就是实现类对外的外观。
  2. 实现类一般用于操作数据库:实现类是针对接口来讲的,来实现接口中约定的内容

6.2创建StudentDao接口

  • 创建目录:src-main-java-com.hfbu.dao-StudentDao

代码:

package com.hbfu.dao;
public interface StudentDao {
    public List<Student> findAllStudent();//查找全部学生
}

7.创建映射StudentMapper.xml文件

  • 通过.xml将数据库增删改查操作使用标签化的语言来写
  • 映射文件主要实现sql语句与Java对象之间的映射,使sql语句查询出来的关系型数据能封装成Java对象
  • 创建目录:src-main-resources-mapper-StudentMapper.xml或src-main-java-com.hbfu.dao-StudentMapper.xml

创建方式:File-Settings-Editor-File and Code Templates-Files-±……

代码:

<?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.hbfu.dao.StudentDao">
    <select id="findall" resultType="com.hbfu.entity.Student">
        select * from student
    </select>
</mapper>

代码解析:

  1. 映射文件的约束信息
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  1. 一级标签及其属性
  • 中包含多个标签对数据库进行操作
  • 属性-namespace:用于标识映射文件,通常设置为对应接口的全路径名称
  1. 查询标签
<select>
</select>
  1. 属性:id–命名空间中唯一标识符,可以被引用,其值一般设置成与接口中对应的方法名称

resultType=“com.hbfu.entity.Student”–sql语句查询结果映射为Student对象类型

  1. sql语句–查询-查询student表中所有信息
select * from student

8.创建mybatis-config.xml作为主配置文件

  • 主配置文件主要用于配置:项目的环境,数据库连接相关配置等
  • 通常命名为:mybatis-config.xml
  • 创建目录:src-main-resources或src

创建方式同上面映射文件的创建方式一样

代码:

<?xml version="1.0" encoding="UTF-8" ?>
        <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--  配置环境,默认环境id为development  -->
    <environments default="development">
        <environment id="development">
<!--      配置事务管理类型为JDBC      -->
            <transactionManager type="JDBC"></transactionManager>
<!--      配置数据源类型 为连接池      -->
            <dataSource type="POOLED">
<!--       分别配置数据库连接的驱动,url,用户名,密码         -->
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/studentdb?characterEncoding=utf-8"/>
                <property name="username" value="root"/>
                <property name="password" value="hanyanshuo"/>
            </dataSource>
        </environment>
    </environments>
<!--  配置映射文件的位置,可以有多个映射文件  -->
    <mappers>
        <mapper resource="mapper/StudentMapper.xml"></mapper>
    </mappers>
</configuration>

9.创建Dao层接口实现类StudentDaoImpl

  • 创建目录:src-main-java-com.hfbu.dao-StudentDaoImpl

代码:

package com.hbfu.dao;

public class StudentDaoImpl implements StudentDao{

    @Override
    public List<Student> findAllStudent() {
        SqlSession session = null;
        List<Student> studentList=new ArrayList<Student>();
        try {
            //读取主配置文件mybatis-config.xml
            String resource= "mybatis-config.xml";
            Reader reader= Resources.getResourceAsReader(resource);
            //根据主配置文件mybatis-config.xml构建 SqlSessionFactory对象factory
            SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
            SqlSessionFactory factory= builder.build(reader);
            //根据SqlSessionFactory对象创建SqlSession对象session
            session  = factory.openSession();
            //调用SqlSession对象session的selectList方法执行查询数据库的操作,返回映射后的结果集合
            studentList=session.selectList("com.hbfu.dao.StudentDao.findall");
        }catch (Exception e){
            e.printStackTrace();
        }
        return studentList;
    }
}
  • selectList()是SqlSession类的方法,用于查询记录集合

10.创建测试类StudentTest

  • 创建目录:src-test-java-StudentTest.java

代码:

public class StudentTest {
    @Test
    public  void test(){
        StudentDao studentDao=new StudentDaoImpl();
        System.out.println(studentDao.findAllStudent());
    }
}

运行结果:

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-03-16 22:07:36  更:2022-03-16 22:12:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 8:29:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码