mybatis

Mybatis概述

一个持久层框架。

注意:
所有的持久层框架,都是基于JDBC的基础上进行封装的。

比较
Hibernate
可以对JDBC进行高度封装,不用编写Sql,即:可 映射 操作数据库。
可以针对复杂的多表关系,可以方便关联操作。

优点 擅长处理多边关系
缺点 不擅长处理复杂的多边关系
例:OA、政府档案、数据管理系统。

JDBC

优点 单个操作效率高
缺点 参数传递、返回值的封装
Mybatis
针对JDBC进行完美封装,保留了JDBC的Sql编写方式,优化了参数绑定和返回值的封装。
例:电商、金融项目。

Mybatis主体架构

Mybatis编写过程
1.创建项目,导入Jar包。

2.编写SqlMapConfig.xml配置文件,编写数据库的连接配置。

3.测试数据库是否连接正常。

4.编写Mapper.xml。

5.测试sql执行是否正常。

第一个Mybatis程序
创建项目,在src下创建lib文件夹,导入jar包。

在src根目录下创建xml文件,命名为SqlMapConfig.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的事务管理取消了单条sql的自动提交-->
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=UTF8"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>`在这里插入代码片`
        <mapper resource="mapper/StudentMapper.xml"/>
    </mappers>
</configuration>

在src下创建test文件夹,创建测试类进行测试。

public class test1 {
    @Test
    public void test1() throws IOException {
//        1.先获取会话工厂构造器
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
//        指定连接配置文件
        InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml");
//        2.根据构造器,构造会话工厂
        SqlSessionFactory factory = builder.build(is);
//        3.开启连接会话
        SqlSession session = factory.openSession();
        System.out.println("连接:\n"+session);
    }
  }

与数据库连接成功,输出地址。

选择操作的数据表,创建实体类。
创建方式如下,bean中创建实体类Student;

这里的构造方法是根据操作进行调整。

package com.zegj.bean;


public class Student {

    //属性的封装
    private int id;
    private String name;
    private String sex;
    private int age;

    //get and set
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

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

    public Student(String name, String sex, int age) {
        this.name = name;
        this.sex = sex;
        this.age = age;
    }

    public Student(String name, String sex, int age, int id) {
        this.name = name;
        this.sex = sex;
        this.age = age;
        this.id = id;
    }

    public Student(int id, String name, String sex, int age) {
        this.id = id;
        this.name = name;
        this.sex = sex;
        this.age = age;
    }

    public Student() {
    }
}
在src下创建mapper文件夹,创建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="StudentMapper">
	<!--增加-->
    <insert id="addStu" parameterType="com.zegj.bean.Student">
        insert into tb_student(name,sex,age) values (#{name},#{sex},#{age})
    </insert>

    <!--删除-->
    <delete id="delStu" parameterType="java.lang.Integer">
        delete from tb_student where id=#{id}
    </delete>

	<!--修改-->
    <update id="updStu" parameterType="com.zegj.bean.Student">
        update tb_student set name=#{name},sex=#{sex},age=#{age} where id = #{id}
    </update>
    
    <!--查询-->
    <select id="findStuById" parameterType="Integer" resultType="com.zegj.bean.Student">
        select * from tb_student where id=#{id}
    </select>
</mapper>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值