zoukankan      html  css  js  c++  java
  • MyBatis入门

      Mybatis通过xml或注解的方式将要执行的各种statement(statement、preparedStatemnt、CallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回。

      使用MyBatis的步骤:

    (1)引入所需的jar包 mybatis-3.4.4.jar mysql-connector-java-5.0.8-bin.jar(mySQl的JDBC操作包,其他数据库请自行更换)

      注意mybatis的jar包尽量引用3.4以上的版本,如果使用的是3.2的版本的话,在后面使用mybatis创建公用mapper的时候会出现兼容性问题。

    (2)创建mybatis-config.xml。(mybatis-config.xml 是MyBatis的全局配置文件 ,在该文件中配置:数据源,事务,等MyBatis运行的环境.)

      创建步骤:在新建的项目的上的src下创建一个XML File文件,文件内容如下

    <?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="development">    <!-- 可以使用多个环境变量,切换时只需修改对应default的属性为该环境变量的id即可 -->
            <!-- 环境变量:可以配置多个环境变量,比如使用多数据源时,就需要配置多个环境变量 -->
            <environment id="development">
                <!-- 事务管理 -->
                <transactionManager type="JDBC"></transactionManager>
                <!-- 数据源 -->
                <dataSource type="POOLED">  <!-- 注意贴过去的代码这一行会报错,网上说是复制过去的是utf-8的bom格式的,而xml支持的是不带bom格式的,这种这个部分自己手打一下,自动补全代码即可解决 -->
                    <property name="username" value="用户名" />
                    <property name="url" value="jdbc:mysql://localhost:3306/数据库名" />
                    <property name="password" value="用户密码" />
                    <property name="driver" value="com.mysql.jdbc.Driver" />  <!-- 定义驱动连接,根据所使用的数据库的不同进行更换,作者使用的是mySql -->
                </dataSource>
            </environment>
        </environments>    
    </configuration>

    这样我们就简单的配置了一个mybatis的config配置文件了,这一步就相当于我们平常编写JDBC连接数据库的操作。

    (3)接下来让我们为它建立一个表用来测试

      首先,我们先建立一个学生的数据库(Student),里面存放一张年级表(grade),sql语句如下:

    CREATE DATABASE `student`;
    
    USE `student`;
    
    CREATE TABLE `grade` (
      `gradeName` VARCHAR(20) DEFAULT NULL,
      `gradeId` INT(11) DEFAULT NULL
    ) ENGINE=INNODB DEFAULT CHARSET=utf8;
    
    INSERT  INTO `grade`(`gradeName`,`gradeId`) VALUES ('一年级',1),('二年级',2),('三年级',3);

    (4)在java代码中的src文件下建立一个entity的包,里面建立一个Grade的类

    package entity;
    
    public class Grade {
        private int gradeId;        //与表中的字段gradeId对应
        private String gradeName;    //与表中的字段gradeName对应
        public Grade() {
            super();
        }
        public int getGradeId() {
            return gradeId;
        }
        public void setGradeId(int gradeId) {
            this.gradeId = gradeId;
        }
        public String getGradeName() {
            return gradeName;
        }
        public void setGradeName(String gradeName) {
            this.gradeName = gradeName;
        }
    }

    (5)好了,有了实体类之后,我们就该编写实体类的接口了

      在src下新建一个dao的包,里面新建一个GradeDao的接口,里面定义了两个方法的接口,代码如下:

    package dao;
    
    import entity.Grade;
    
    public interface GradeDao {
        
        /**
         * 查询所有年级
         * @return
         */
        Grade queryAllGrade();
        
        /**
         * 根据年级编号查询年级
         * @param gradeId
         * @return
         */
        Grade queryGradeByID(int gradeId);
    }

    (6)建立好接口后,在建立接口的实现类之前,我们先定义一下SQL语句了,目前,我们先在xml文件中编写

      首先,在src文件下新建一个mapper包,里面新建一个GradeMapper.xml,文件名和包名都可以随便取,但尽量给每个实体类编写不同的xml文件,避免查找的时候发生混乱

      GradeMapper.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="dao.GradeDao">            <!-- 设置工作空间为dao.GradeDao这个类  -->
      <!-- 查询所有年级 -->
          <select id="queryAllGrade" resultType="entity.Grade">    <!-- resultType为返回值类型 -->
              select * from grade
          </select>
          <!-- 根据年级编号查询年级 -->
          <select id="queryGradeByID" resultType="entity.Grade" parameterType="int">  <!-- parameterType为传入参数类型 -->
              select * from grade where gradeId = #{gradeId}        <!-- #{gradeId}为占位符  -->
          </select>
      </mapper>

    建立好GradeMapper.xml后,我们还需要再做一件事,那就是在config文件中去映射到这个文件,找到我们刚才编写的mybatis-config.xml文件,

    <configuration>标签的里面</environments>的下方添加一个映射关系,代码如下

    <mappers>
        <mapper resource="mapper/GradeMapper.xml"/>    <!-- 包名.xml文件名 -->
    </mappers> 

    (7)好了,SQL语句写好后,接下来就是重点了——怎么调用它

      在src下建立一个common的包,里面存放一个SqlSessionUtil的类,类里面我们定义一个getSession的方法,代码如下

      在src包下建立一个dao.Impl的包,里面添加一个GradeDaoImpl的类,代码如下

     

  • 相关阅读:
    [CF837B] Flag of Berland(乱写)
    [Uva12563] Jin Ge Jin Qu hao (完全背包,dp)
    [BZOJ2818] Gcd (数论,欧拉函数,线性筛)
    [CF777E] Hanoi Factory(贪心,栈)
    [CF777D] Cloud of Hashtags(贪心,二分)
    [CF777C] Alyona and Spreadsheet(dp)
    [BZOJ2440][中山市选2011]完全平方数(莫比乌斯函数,二分)
    [CF821C] Okabe and Boxes(模拟,栈)
    Codeforces Round #363 (Div. 2)->B. One Bomb
    Codeforces Round #363 (Div. 2)->A. Launch of Collider
  • 原文地址:https://www.cnblogs.com/365txrw/p/8030174.html
Copyright © 2011-2022 走看看