Mybatis

Mybatis

1、认识mybatis

是对JDBC封装的ORM框架,目的简化JDBC的操作

ORM:

O:对象 java中实体类的对象

R:数据库中的表

M:映射

特点:

1、半自动框架:需要编写SQL语句

2、依赖数据库

2、搭建mybatis的使用环境

1、新建maven项目

2、添加依赖

<!--MyBatis核心依赖-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.6</version>
        </dependency>

        <!--MySql驱动依赖-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>

3、在resources目录新建xml配置文件

【说明】名字任意

dtd:文档类型定义,检查xml文件的内容是否正确

<!--配置数据库连接环境-->
<environments default="mysql2103">
    <environment id="mysql2103">
        <!--事务管理器:使用JDBC的事务-->
        <transactionManager type="JDBC"></transactionManager>
        <!--配置连接池信息-->
        <dataSource type="org.apache.ibatis.datasource.pooled.PooledDataSourceFactory">
            <!--驱动-->
            <property name="driver" value="com.mysql.jdbc.Driver"/>
            <!--url-->
            <property name="url" value="jdbc:mysql://localhost:3306/empsys?useUnicode=true&amp;characterEncoding=utf-8"/>
            <property name="username" value="root"/>
            <property name="password" value="root"/>
        </dataSource>
    </environment>
    <environment id="mysql2104">
        <transactionManager type=""></transactionManager>
        <dataSource type=""></dataSource>
    </environment>
</environments>

4、新建实体类

实体类的属性名最好和表中的列名一致,不区分大小写

确保有无参public的构造方法

5、mybatis基于接口的,创建接口

package com.qf.mybatis2103.dao;

import com.qf.mybatis2103.pojo.Emp;

public interface EmpDao {
    //添加方法
    public int addEmp(Emp emp);
}

6、编写接口所对应的映射文件

目前:resources下创建

<?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.qf.mybatis2103.dao.EmpDao">
    <!--编写接口中方法的映射
    id:接口中方法的名字
    parameterType:方法参数的类型
    [注意】 insert update delete 无需设置返回值类型,默认返回int
    -->
    <insert id="addEmp" parameterType="com.qf.mybatis2103.pojo.Emp">
        insert into emp(empno,ename,addr,job)
        values
        (#{empNo},#{eName},#{addr},#{job})
    </insert>
</mapper>

7、在mybatis的配置文件中,配置映射文件

<!--把映射文件注册给mybatis-->
<mappers>
    <mapper resource="EmpMapper.xml"></mapper>
</mappers>

3、添加操作

package com.qf.mybatis2103.test;

import com.qf.mybatis2103.dao.EmpDao;
import com.qf.mybatis2103.pojo.Emp;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;

public class TestAdd {
    public static void main(String[] args) {
        SqlSession sqlSession=null;
        try {
            //1、读取mybatis配置文件
            InputStream inputStream= Resources.getResourceAsStream("mybatis-config.xml");
            //2、创建SqlSessionFactory对象
            //SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
            SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
            SqlSessionFactory factory=builder.build(inputStream);
            //SqlSessionFactory的作用就是创建SqlSession
            //SqlSession的作用:操作数据库
            //3、创建SqlSession对象
           sqlSession=factory.openSession();

            //操作数据库
            Emp wangYan=new Emp("qf001","王岩","辽宁省大连市","java开发工程师");
            //通过sqlSession得到接口的实现类的对象
            //mybatis利用jdk动态代理创建接口的实现类,继而创建对象
            EmpDao empDao=sqlSession.getMapper(EmpDao.class);
            //sqlSession执行的添加方法
            int result=empDao.addEmp(wangYan);

            //手动提交事务
            sqlSession.commit();
            System.out.println(result==1);
            sqlSession.close();
            inputStream.close();
        } catch (IOException e) {
            sqlSession.rollback();
            e.printStackTrace();
        }
    }
}

【注意】insert upate delete 时需要提交事务:sqlSession.commit();

增删改查:见代码

4、优化配置

mapper映射文件只能存放在resources下,换路径则不能找到

如果想存在其他位置:dao下

pom.xml

<build>
    <resources>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>*.xml</include>
                <include>**/*.xml</include>
            </includes>
            <filtering>true</filtering>
        </resource>
    </resources>
</build>

优化2:把数据库的配置信息存放在单独的文件中

创建db.properties文件

mydriver=com.mysql.jdbc.Driver
myurl=jdbc:mysql://localhost:3306/empsys?useUnicode=true&amp;characterEncoding=utf-8
uname=root
pwd=root

在mybatis的配置文件中引入这个,通常是配置的开始位置

<!--引入外部配置文件-->
<properties resource="db.properties"></properties>

使用${}获取properties中的name对应的值

优化3:设置实体类包的别名配置

    <!--配置别名-->
    <typeAliases>
        <!--每一个类都需要一个如下的配置,麻烦-->
<!--        <typeAlias type="com.qf.mybatis2103.pojo.Emp" alias="Emp"></typeAlias>-->
        <!--扫描指定的包,mapper文件中使用的类都在此包下-->
        <package name="com.qf.mybatis2103.pojo"/>
    </typeAliases>

内容总结:

1、ORM框架 mybatis框架的认知

2、搭建mybatis项目

3、mybatis的配置文件—记下来

4、使用过程:接口 mapper文件

5、mybatis的执行过程

6、配置的优化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值