ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

MyBatis框架快速入门

2022-01-27 13:32:27  阅读:150  来源: 互联网

标签:xml java 入门 框架 dao mybatis student mysql MyBatis


1、准备工作

下载mybatis: https://github.com/mybatis/mybatis-3/releases

下载mysql驱动: https://mvnrepository.com/artifact/mysql/mysql-connector-java

这里我用最新版的mybatis-3.5.9, mysql-connector-java-8.0.22.jar。

2、搭建开发环境

(1)创建mysql数据库和表

数据库名:spring_db;表名:student

CREATE TABLE `student` (
 `id` int(11) NOT NULL ,
 `name` varchar(255) DEFAULT NULL,
 `email` varchar(255) DEFAULT NULL,
 `age` int(11) DEFAULT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

(2)、创建maven工程

在空项目下,新建module

 

 因为我们只是操作数据库,没有啥web应用,创建普通javase项目quickstart即可。

小提示:设置为自动导入依赖模式,等待项目构建。

 

项目目录结构如下: 

 如果resources文件夹不存在,可自行创建。另外java文件夹不是呈蓝色的,需要在点击它右键选择Mark Directory as-》Sources Root(源文件根目录)。

 

 (3)添加依赖

<!--    mybatis依赖  -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.9</version>
    </dependency>
<!--    mysql驱动依赖-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.22</version>
    </dependency>

注意版本对应关系。

 如果依赖下载失败,试着改用手工导入方式(右键pom.xml-》Maven-》Reimport)。

 

 3、编写实体类

编写之前先把默认生成的App类删除。

包名:org.example.domain;  类名:Student 

// 类名推荐和表名一样,方便记忆
public class Student {
    //定义属性(要求:属性名与列名相同)
    private Integer id;
    private String name;
    private String email;
    private Integer age;
    // ......
    // 以下省略 set ,get , toString方法
}

4、编写Dao接口

这是持久层的dao接口文件,定义了操作数据库的相关方法。

包名:org.example.dao; 接口名:StudentDao

public interface StudentDao {

//    查询student表中所有数据
   public List<Student> selectStudents();

/**
增、删、改的接口同理
*/
}

 5、编写Mapping SQL映射文件

里面是写sql语句的,一般一个表配一个映射文件(.xml),mybatis会自动执行。

编写要求:(1)与接口同目录(dao);(2)文件名与接口保持一致。

 点击New-》File,创建StudentDao.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="org.example.dao.StudentDao">

    <select id="selectStudents" resultType="org.example.domain.Student">
        select id,name,email,age from student
    </select>
</mapper>

说明:

  •  指定约束文件。mybatis-3-mapper.dtd是约束文件,作用是限制和检查当前文件中出现的标签、属性是否符合mybatis配置要求。
  • mapper:当前文件的根标签(必须有)。
  • namespace:命名空间,有唯一值的。可以自定义,推荐使用dao接口的全类名。
  • <select>:  查询数据, 标签中必须是 select 语句。
  • id:  sql 语句的自定义名称,推荐使用 dao 接口中方法名称。
  • resultType: 查询语句返回结果的数据类型(ResultSet),使用全限定类名。

6、创建主配置文件

在src/main/resources目录下(确保该目录为resources root),创建mybatis.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>
    <!--配置 mybatis 环境-->
    <environments default="mysql">
        <!--id:数据源的名称-->
        <environment id="mysql">
            <!--配置事务类型:使用 JDBC 事务-->
            <transactionManager type="JDBC"/> 
            <dataSource type="POOLED">
                <!--连接数据库的四个要素-->
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/数据库名称"/>
                <property name="username" value="连接数据库的用户名"/>
                <property name="password" value="连接数据库的密码"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <!--指定 mybatis 要执行的 sql 语句的位置-->
        <mapper resource="org/example/dao/StudentDao.xml"/>
    </mappers>
</configuration>

其中name="driver"对应值有两种,如果你的mysql驱动版本是5.x,那么value值就应该是“com.mysql.jdbc.Driver”,而上面“com.mysql.cj.jdbc.Driver”是mysql8.x驱动的写法。

mapper标签中,resource属性值是之前写sql语句与dao接口同目录的xml文件路径,可通过下面这种方式快速获取:

 右键文件,选择Copy Path...。

 注:pom.xml添加maven插件:

    <!-- 扫描 src/main/java目录下的.properties,.xml文件-->
    <resources>
      <resource>
        <directory>src/main/java</directory>
        <includes>
          <include>**/*.properties</include>
          <include>**/*.xml</include>
        </includes>
        <filtering>false</filtering>
      </resource>
    </resources>

因为默认情况maven不会扫描到src/java目录下的配置文件。记得重新编译下,确保没有问题。

7、创建测试类

 包名:org.example; 类名:MyBatisTest

public static void main(String[] args) throws IOException {
        //1.mybatis 主配置文件名称
        String config = "mybatis.xml";
        //2.读取配置文件
        InputStream in = Resources.getResourceAsStream(config);
        //3.创建 SqlSessionFactoryBuilder 对象
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        //4.创建SqlSessionFactory 对象
        SqlSessionFactory factory = builder.build(in);
        //5.获取 SqlSession 对象, 执行sql语句
        SqlSession session = factory.openSession();
        //6.指定要执行的sql语句标识(由sql映射文件中的namespace+ '.' +id构成)
        String sqlId = "org.example.dao.StudentDao" + '.' + "selectStudents";
        //7.通过sqlId,执行sql语句
        List<Student> studentList = session.selectList(sqlId);

        //8.循环输出查询结果
        studentList.forEach( student -> System.out.println(student));
        //9.关闭 SqlSession,释放资源
        session.close();
    }

Tips:

(1)如果lambda表达式地方抛红,检查java编译版本是否过低,调为java8版本。

(2)如果报数据库时区问题,则在主配置文件,url值后添加“?erverTimezone=UTC”即可。

没其它问题的话,运行结果应该是这样的:

 成功读取出student表中数据。好了至此,一个简单而曲折的mybatis操作数据库入门案例就完成了,肝了一上午肚子咕咕叫,先去吃饭了。有啥疑问评论区留言,看到我会尽力解决的<_<)。

参考文档:http://mybatis.org/spring/zh/index.html

 

标签:xml,java,入门,框架,dao,mybatis,student,mysql,MyBatis
来源: https://blog.csdn.net/weixin_45719444/article/details/122712623

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有