MyBatis使用步骤

目录

使用步骤

    1. 新建表

    2. 加入maven的MyBatis坐标, MySQL坐标导入依赖, 加入maven插件

    3. 创建实体类, Student--保存表中的一行数据

    4. 创建持久层的dao接口, 定义操作数据库的方法

    5. 创建一个MyBatis的使用配置文件

    6. 创建MyBatis主配置文件

    7. 创建使用MyBatis类

两个例子:

    1. 使用MyBatis查询

    2. 使用MyBatis完成插入操作


使用步骤

    1. 新建表

    2. 加入maven的MyBatis坐标, MySQL坐标导入依赖, 加入maven插件

        依赖部分

          <dependencies>
            <!--MyBatis依赖-->
            <dependency>
              <groupId>org.mybatis</groupId>
              <artifactId>mybatis</artifactId>
              <version>3.5.1</version>
            </dependency>

            <dependency>
              <groupId>mysql</groupId>
              <artifactId>mysql-connector-java</artifactId>
              <version>5.1.45</version>
            </dependency>

            <dependency>
              <groupId>junit</groupId>
              <artifactId>junit</artifactId>
              <version>4.11</version>
              <scope>test</scope>
            </dependency>
          </dependencies>

       插件部分

          <build>
            <resources>
              <resource>
            <directory>src/main/java</directory><!--所在的目录-->
            <includes><!--包括目录下的.properties,.xml 文件都会扫描到-->
              <include>**/*.properties</include>
              <include>**/*.xml</include>
            </includes>
            <filtering>false</filtering>
              </resource>
            </resources>
            <plugins>
              <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
              <source>1.8</source>
              <target>1.8</target>
            </configuration>
              </plugin>
            </plugins>
          </build>

    3. 创建实体类, Student--保存表中的一行数据

    4. 创建持久层的dao接口, 定义操作数据库的方法

    5. 创建一个MyBatis的使用配置文件

        叫做sql映射文件: 写sql语句的, 一般是一个表一个文件, 一般是XML文件

        1. 这个文件写在接口所在目录之中

        2. 文件名和接口名一致

    6. 创建MyBatis主配置文件

        一个项目就一个主配置文件
        主配置文件提供了数据库连接信息和sql映射文件的位置信息

    7. 创建使用MyBatis类

        通过MyBatis类访问数据库

两个例子:

    1. 使用MyBatis查询

        StudentDao接口

        package org.example.dao;

        import org.example.domain.Student;

        import java.util.List;

        // 接口操作student表
        public interface StudentDao {
            // 查询student表中所有数据
            // 这个方法对应一个SQL的执行
            public List<Student> selectStudents();

            // 插入操作
            // 参数: Student, 表示你要插入到数据库的数据
            // 返回值: int, 表示执行后影响的数据库行数
            public int insertStudent(Student student);
        }

        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">
        <!--
            sql映射文件, 写SQL语句的, MyBatis会执行这些sql语句
            1. 指定约束文件
            <!DOCTYPE mapper
            PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
            这个是固定的, 不需要记忆
             mybatis-3-mapper.dtd是约束文件的名称, 扩展名为dtd
            2. 作用: 限制, 检查在当前文件中出现的标签, 属性必须符合MyBatis的规则要求
        -->

        <mapper namespace="org.example.dao.StudentDao">
            <!--
            namespace:必须有值,自定义的唯一字符串
            推荐使用: dao 接口的全限定名称
            -->
            <select id="selectStudents" resultType="org.example.domain.Student">
            <!--
               select:表示查询操作。
               id: 你要执行的sql语句的唯一标识, mybatis会使用这个id的值来找到要执行的sql语句
                   可以自定义,但是要求你使用接口中的方法名称。

               resultType:表示结果类型的, 是sql语句执行后得到ResultSet,遍历这个ResultSet得到java对象的类型。
                  值写的是类型的全限定名称
            -->
            <!--要执行的 sql 语句-->
            select id,name,email,age from t_student order by id
            </select>

            <insert id="insertStudent" >
        <!--        &lt;!&ndash;这样写是不合适的, 因为这样写是固定的&ndash;&gt;-->
        <!--        insert into t_student values (6, 'zhangfei', '192@123.com', 53)-->
            <!--使用占位符, MyBatis中是使用#{属性名}当做占位符的-->
            insert into t_student values(#{id}, #{name}, #{email}, #{age})
            </insert>
            <!--
            在当前文件中, 可以使用特定的标签, 表示数据的特定操作, 在特定的标签中特定的语句
            <select>:表示查询
            <update>:表示新增
            -->
        </mapper>

        Student实体类
 

       package org.example.domain;

        // 推荐和表名一致, 方便记忆
        public class Student {
            // 根据数据库定义属性
            private Integer id;
            private String name;
            private String email;
            private Integer age;

            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;
            }

            @Override
            public String toString() {
            return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", email='" + email + '\'' +
                ", age=" + age +
                '}';
            }
        }

        主配置文件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>

            <!--settings:控制mybatis全局行为-->
        <!--    <settings>-->
        <!--        &lt;!&ndash;设置mybatis输出日志&ndash;&gt;-->
        <!--        <setting name="logImpl" value="STDOUT_LOGGING" />-->
        <!--    </settings>-->

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


            <!--表示线上的数据库,一个项目可以使用多个库-->
        <!--        <environment id="online">-->
        <!--            <transactionManager type="JDBC"/>-->
        <!--            <dataSource type="POOLED">-->
        <!--                <property name="driver" value="com.mysql.jdbc.Driver"/>-->
        <!--                <property name="url" value="jdbc:mysql://localhost:3306/onlinedb"/>-->
        <!--                <property name="username" value="root"/>-->
        <!--                <property name="password" value="fhwertwr"/>-->
        <!--            </dataSource>-->
        <!--        </environment>-->
            </environments>

            <!-- sql mapper(sql映射文件)的位置-->
            <mappers>
            <!--一个mapper标签指定一个文件的位置。
               从类路径开始的路径信息。  target/clasess(类路径)
            -->
            <mapper resource="org/example/dao/StudentDao.xml"/>
            <!--<mapper resource="org/example/dao/StudentDao.xml" />-->
            </mappers>
        </configuration>
        <!--
           mybatis的主配置文件: 主要定义了数据库的配置信息, sql映射文件的位置

           1. 约束文件
           <!DOCTYPE configuration
            PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-config.dtd">

            mybatis-3-config.dtd:约束文件的名称

          2. configuration 根标签。
        -->

        测试代码

        public class MyApp {
            public static void main(String[] args) throws IOException {
                // 访问MyBatis读取Student数据
                // 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对象, 从SqlSessionFactory中获取(重要)
                // 从创建好的工厂中获取一个数据库会话对象
                SqlSession sqlSession = factory.openSession();
                // 6. 需要指定执行的sql语句的标识,
                // sql映射文件中的namespace + "." + 标签的id值(重要的)
                String sqlID = "org.example.dao.StudentDao.selectStudents";
                // 7. 执行sql语句, 通过SqlID
                // 通过数据库会话对象执行SQL语句
                List<Student> studentList = sqlSession.selectList(sqlID);
                // 8. 关闭SqlSession对象
                sqlSession.close();
                // 9. 输出结果
                for (Student s : studentList) {
                    System.out.println(s);
                }
            }
        }

    2. 使用MyBatis完成插入操作

        测试代码如下

            @Test
            public void testInsert() throws IOException {
                // 访问MyBatis读取Student数据
                // 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对象, 从SqlSessionFactory中获取(重要)
                // 从创建好的工厂中获取一个数据库会话对象
                SqlSession sqlSession = factory.openSession();
                // 6. 需要指定执行的sql语句的标识,
                // sql映射文件中的namespace + "." + 标签的id值(重要的)
                String sqlID = "org.example.dao.StudentDao.insertStudent";
                // 7. 执行sql语句, 通过SqlID
                // 通过数据库会话对象执行SQL语句
                Student student = new Student();
                student.setId(7);
                student.setName("liubai");
                student.setEmail("192@123.com");
                student.setAge(21);
                int res = sqlSession.insert(sqlID, student);
                // MyBatis默认是不会自动提交事务的, 你得在insert, update, delete后手动提交事务
                sqlSession.commit();
                // 8. 关闭SqlSession对象
                sqlSession.close();
                // 9. 输出结果
                if (res == 1) {
                    System.out.println("成功");
                } else {
                    System.out.println("失败");
                }
            }


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 MyBatis步骤如下: 1. 引入 MyBatis 的依赖包 在 Maven 项目中,需要在 pom.xml 文件中引入 MyBatis 的依赖包,例如: ```xml <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.7</version> </dependency> ``` 2. 配置数据库连接信息 在 MyBatis 的配置文件中,需要配置数据库连接信息,包括数据库的 URL、用户名、密码等。例如,使用 MySQL 数据库的配置如下: ```xml <configuration> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.cj.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/mybatis_test?serverTimezone=UTC&useSSL=false&allowPublicKeyRetrieval=true"/> <property name="username" value="root"/> <property name="password" value="123456"/> </dataSource> </environment> </environments> </configuration> ``` 其中,`driver` 属性指定了数据库驱动类,`url` 属性指定了数据库的 URL,`username` 和 `password` 属性指定了数据库的用户名和密码。 3. 创建实体类 创建实体类,与数据库表对应。例如: ```java public class User { private Long id; private String username; private String password; // getter 和 setter 方法 } ``` 4. 创建 DAO 接口 创建 DAO 接口,定义需要执行的 SQL 语句。例如: ```java public interface UserMapper { List<User> selectUsers(); User selectUserById(Long id); void insertUser(User user); void updateUser(User user); void deleteUser(Long id); } ``` 5. 创建映射文件或者注解实现 使用映射文件或者注解实现 DAO 接口中的方法。例如,使用映射文件实现 `selectUsers` 方法如下: ```xml <!-- UserMapper.xml --> <mapper namespace="com.example.dao.UserMapper"> <select id="selectUsers" resultType="com.example.entity.User"> select * from user </select> </mapper> ``` 如果使用注解实现,可以在 DAO 接口中使用注解来定义 SQL 语句。例如: ```java public interface UserMapper { @Select("select * from user") List<User> selectUsers(); } ``` 6. 创建 MyBatis 的配置文件 创建 MyBatis 的配置文件,指定映射文件或者注解接口的位置。例如: ```xml <configuration> <mappers> <mapper resource="com/example/dao/UserMapper.xml"/> <mapper class="com.example.dao.OrderMapper"/> </mappers> </configuration> ``` 其中,`<mapper>` 标签可以指定映射文件或者注解接口的位置。 7. 创建 SqlSessionFactory 对象 通过配置文件创建 SqlSessionFactory 对象,例如: ```java String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); ``` 8. 创建 SqlSession 对象 通过 SqlSessionFactory 对象创建 SqlSession 对象,例如: ```java SqlSession sqlSession = sqlSessionFactory.openSession(); ``` 9. 调用 DAO 接口方法,执行 SQL 语句 通过 SqlSession 对象调用 DAO 接口方法,执行 SQL 语句,例如: ```java UserMapper userMapper = sqlSession.getMapper(UserMapper.class); List<User> users = userMapper.selectUsers(); ``` 10. 关闭 SqlSession 对象 执行完 SQL 语句后,需要关闭 SqlSession 对象,例如: ```java sqlSession.close(); ``` 以上就是使用 MyBatis步骤。具体的实现可以参考 MyBatis 的官方文档或者一些 MyBatis 的教程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值