mybatis框架

目录

1回顾 JDBC编程及JDBC存在问题

1.1JDBC编程

1.2存在问题

2mybatis框架介绍

2.1介绍

2.2框架原理

3mybatis的使用demo

3.1使用步骤

3.2目录结构如下:

4mybatis中的配置文件讲解

4.1全局配置文件

4.1.1properties(读取外部资源)

4.1.2setting(全局的参数配置)

4.1.3typeAliases(类型别名)

4.1.4senvironments(环境变量)

4.1.5mappers(映射器)

4.2mapper.xml配置文件解析


1回顾 JDBC编程及JDBC存在问题

1.1JDBC编程

1、引入MySQL驱动

通过maven引入依赖

在pom.xml中的<dependencies> 标签里添加如下代码

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

2、jdbc连接数据库编程

 //1、加载数据库驱动  MySQL-》com.mysql.jdbc.Driver
            Class.forName("com.mysql.jdbc.Driver");
 
 
            //连接数据库
            /**
             * DriverManager管理连接
             *Connection getConnection(String url,String user, String password)
             * url:jdbc:mysql://120.0.0.1:3306/test
             * user:用户名
             * password:密码
             */
            Connection connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test", "root", "123");
            System.out.println("连接成功");
            
            
 
 
            //获取Statement结果
            Statement statement = connection.createStatement();
 
            //修改数据
            String sql1 = "update student set Sname='tulun' where SID=18 ";
            int i = statement.executeUpdate(sql1);
 
 
            //查询数据库
            String sql ="select * from student";
            ResultSet resultSet = statement.executeQuery(sql);
 
            //对结束处理
            while (resultSet.next()) {
                String sname = resultSet.getString("Sname");
                System.out.println(sname);
            }
 
            //关闭资源
            resultSet.close();
            statement.close();
            connection.close();
 
 
        } catch (Exception e) {
            System.out.println("连接失败");
            e.printStackTrace();
        }


编程步骤

1、引入mysql-connector-java依赖包

2、引入MySQL驱动

3、DriverManager连接数据库获取Connection对象

4、通过Connection获取Statement对象进行SQL操作

5、如果是查询操作处理结果集:ResultSet

6、关闭资源

1.2存在问题

1、问题:使用JDBC操作数据库前进行连接,操作完成后关闭连接,并发量大的情况下影响性能

      解决:连接池

2、问题:SQL语句硬编码在Java代码中,需求改变需要更改java代码本身

      解决:将SQL语句放在配置文件中(xml形式),需求发送给变只需要修改配置文件即可

3、问题:返回结果集存在硬编码

      解决:将数据库中的数据集映射为Java对象

2mybatis框架介绍

2.1介绍

中文网址:mybatis – MyBatis 3 | 简介(点击跳转)

1、MyBatis 是一款优秀的持久层框架,前身是ibatis,apchche旗下的数据库持久层框架

2、它支持自定义 SQL、存储过程以及高级映射。

3、MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。

4、MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO为数据库中的记录。

2.2框架原理

3mybatis的使用demo

3.1使用步骤

1、通过maven管理依赖

在pom.xml中的<dependencies> 标签里添加如下代码

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

2、创建全局配置文件(mybatis-config.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>
    <!--配置数据源-->
    <environments default="development">
        <!--环境配置,可以配置多个环境-->
        <environment id="development">
            <!--事务管理器 使用JDBC的事务管理器-->
            <transactionManager type="JDBC"/>
            <!--数据源  池类型的数据源-->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://127.0.0.1:3306/test"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
</configuration>

3、创建pojo类并右击创建出getter and setter 方法(类名:Student)

public class Student {
    private Integer SID;
    private String Sname;
    private String Ssex;
    private Integer Sage;
 //getter和setter方法省略
}

4、创建mapper的接口文件(接口名称:StudentMapper.java)

public interface StudentMapper {
    
    //通过id来查询某一个学生信息
    public Student selectStudentById(Integer id);
}

5、mapper的配置文件(文件名称:StudentMapper.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="com.tulun.mapper.StudentMapper213">
    
    <!--
    id:statementID,在同一个命名空间下具有唯一性,一般是对应接口中方法
    parameterType:表示参数类型
    resultType:指定返回类型
    
    #{XXX}:表示占位符  ? 
    -->
    <select id="selectStudentById" parameterType="int" resultType="com.tulun.pojo.Student213">
        select * from student where SID = #{id}
    </select>
    
</mapper>

6、修改全局配置文件mybatis-config.xml中的<mappers>,添加映射表映射文件

  <!--映射文件引入-->
    <mappers>
        <mapper resource="mapper/studentmapper213.xml"/>
    </mappers>

7、mybatis接口调用编码

//指定全局配置文件路径
            String resource = "mybatis-config.xml";
            //通过mybatis提供的Resource读取文件
            InputStream stream = Resources.getResourceAsStream(resource);
            //通过SQLSessionFactoryBuilder创建会话工厂
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(stream);

            //获取会话
            SqlSession sqlSession = sqlSessionFactory.openSession();
            //通过接口获取对象实例
            StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);
            Student student = studentMapper.selectStudentById(1);

mybatis使用流程:

1、创建全局配置文件(数据源等、引入映射文件)

2、创建表的pojo类、mapper接口文件、mapper配置文件

3、通过SqlSessionFactoryBuilder读取配置创建SqlSessionFactory,继而创建SQLSession,在调用方法

3.2目录结构如下:

4mybatis中的配置文件讲解

4.1全局配置文件

全部配置如下:

4.1.1properties(读取外部资源)

例如:

  <properties  resource="db.properties">
        <property name="userName" value="root"/>
        <property name="password" value="1234"/>

    </properties>

读取配置位置:

               <property name="username" value="${userName}"/>
                <property name="password" value="${password}"/>

4.1.2setting(全局的参数配置)

例如:

 <settings>
        <!--开启二级缓存-->
        <setting name="cacheEnabled" value="true"/>
    </settings>

4.1.3typeAliases(类型别名)

类型别名是给设定一个较短的名字,他是和XML配置有关,存在的意义是减少全限定名的冗余

 <typeAliases>
        <!--
        给单个类取别名
        type属性:给定pojo类的全路径
        alias属性:给定的别名 可以随便给定,一般建议是pojo类的首字母小写的类型
        -->
        <typeAlias type="com.tulun.pojo.Student213" alias="student"/>
        <!--批量的取别名
        name属性给定的是要批量取别名的包路径
        默认的别名是包下的类名首字母小写,其他不变
        -->
        <package name="com.tulun.pojo"/>
    </typeAliases>

4.1.4senvironments(环境变量)

   <!--配置数据源-->
    <environments default="online">
        <!--环境配置,可以配置多个环境-->
        <environment id="development">
            <!--事务管理器 使用JDBC的事务管理器-->
            <transactionManager type="JDBC"/>
            <!--数据源  池类型的数据源-->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://127.0.0.1:3306/test"/>
                <property name="username" value="${userName}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>

    </environments>

4.1.5mappers(映射器)

定义的SQL语句的配置文件,需要告诉mybatis如何找到这些SQL

主要提供了三种形式

<!--映射文件引入-->
    <mappers>
        <!--resource方式: 指定单个映射文件,-->
        <mapper resource="mapper/studentmapper213.xml"/>
        
        <!--class方法:通过mapper的接口文件来加载单个映射文件,将mapper接口文件和mapper.xml放在同一个目录下,且名称相同-->
        <mapper class="com.tulun.mapper.StudentMapper213"/>
        
        <!--package方式:批量加载映射文件,将mapper接口文件和mapper.xml放在同一个目录下,且名称相同-->
        <package name="com.tulun.mapper"/>
    </mappers>

4.2mapper.xml配置文件解析

查询操作:

  <!--
    resultMap:显性指定映射关系
    id属性:取名字
    type属性:映射的Java的pojo类的全限定名
    id标签:主键使用id标签,一般返回结果只有一个id标签
    result标签:非主属性使用result标签进行显性指定映射关系
      property属性:映射java的属性名
      column属性:数据库中字段名
      javaType:java属性名的类型
      jdbcType:数据库字段名的类型
      typeHandler:指定类型转换器
    -->

    <resultMap id="studentMap" type="student">
        <id property="id" column="SID"/>
        <result property="Sname" column="Sname"/>
        <result property="Ssex" column="Ssex"/>
        <result property="Sage" column="Sage"/>
    </resultMap>

    <!--
    select标签:查询操作标签
    id:statementID,一般是对应接口中方法名称,在同一个命名空间下具有唯一性,
    parameterType:表示参数类型
    parameterMap:表示参数类型 入参是Map类型
    resultType:指定返回类型
    resultMap:指定返回结果类型

    #{XXX}:表示占位符  ?
    -->
    <select id="selectStudentById"  parameterType="int" resultMap="studentMap">
        select * from student where SID = #{id}
    </select>

resultMap和resultType的异同点

相同点:指定返回结果的

不同点:
resultType:给定映射的java对象,完成自动映射,如果数据库字段名和java字段一致建议选用resultType

resultMap:需要显性的指定映射关系,如果数据库字段名和java字段不一致必须选用resultMap显性指定映射关系

 <!--
    delete标签:删除数据
    id:statementID,一般是对应接口中方法名称,在同一个命名空间下具有唯一性,
    parameterType:入参类型
    -->
    <delete id="deleteStudentById" parameterType="int"  >
        delete from student where SID = #{id}
    </delete>


    <!--
    insert标签:插入数据
    id:statementID,一般是对应接口中方法名称,在同一个命名空间下具有唯一性,
    parameterType:入参类型
    useGeneratedKeys:表示是否采用数据自增主键 true|false
    keyProperty:主键对应的Java类的属性名 ()
    keyColumn:主键对应的数据库的字段名
    -->
    <insert id="insertStudent" parameterType="student"  keyProperty="" keyColumn="" useGeneratedKeys="true">

    </insert>
    
    
    <!--
    update标签:变更操作
        id:statementID,一般是对应接口中方法名称,在同一个命名空间下具有唯一性,
        parameterType:入参类型
       keyProperty:主键对应的Java类的属性名 
    -->
    <update id="updateStudent"  parameterType="student">
        
    </update>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值