学习mybatis

1、

2、mybatis是什么

text 复制代码
mybatis为DAO层提供了解决方案的这样一个框架

既然他是为DAO层提供了解决方案 那么说明他的主要功能和JDBC以及dbutils是一样的

都是实现数据库的增删改查

3、mybatis能干什么

text 复制代码
数据库的增删改查的实现

4、有了JDBC为什么还要学习mybatis

text 复制代码
SSH:struts/springMVC  Spring   Hibernate

SSM:struts/springMVC  Spring  mybatis

SSS:struts/springMVC  Spring   SpringData JPA

所有的DAO层的解决方案中 我们的Hibernate的代码是最简单的 SQL语句都不用写 因为会帮你自动生成  但是他的效率是最低的 因为  我们在查询数据库的时候写的是 HQL语句  他需要将 HQL语句给你翻译成 SQL语句  所以效率低

在所有的DAO层的解决方案中 JDBC的效率是最高的(写法是最原生态的) 效率是最高的  但是代码的复杂程度也是最高的

而我们的mybatis就不一样的 他的效率是位于 Hibernate和JDBC之间  他的代码的复杂程度也是位于两者之间 这就

是我们学习他的原因 到今天的时候 我们真正的开发的时候 用它的时候还是少  因为 mybatis-plus的出现  开发的

问题全部都给你解决了...

离线乐观锁

数据的自动填充

逻辑删除

...

之所以我们要学习 mybatis是因为 mybatisplus中并不是 所有的问题 都给你解决了 。。。。复杂的问题还是需要自己手动的去完成 这个时候 就需要使用 mybatis了...

5、mybatis下的第一个helloworld程序

5.1、导包
xml 复制代码
<dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.26</version>
        </dependency>


        <!--第一步:导包-->
        <!--下面就是iBatis的相关的包-->
        <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.40</version>
        </dependency>

        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.5.10</version>
        </dependency>

        <!--日志门面-->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.6.1</version>
        </dependency>
5.2、编写mybatis.xml文件
xml 复制代码
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <!--    这个配置文件的主要功能:配置数据库的连接参数-->

    <!--    这里的default表示的是默认要使用哪一个环境  -->
    <environments default="mysql">

        <!--        id唯一就好 就表示的是访问的是哪一个环境下的数据库-->
        <environment id="mysql">
            <!--            这里配置的是事务管理器的类型-->
            <transactionManager type="JDBC"></transactionManager>
            <!--            数据源的类型-->
            <dataSource type="POOLED">
                <!--数据库的驱动-->
                <property name="driver" value="com.mysql.jdbc.Driver"></property>
                <!--连接的地址-->
                <property name="url" value="jdbc:mysql:///cd_2307"></property>
                <!--数据库的用户名-->
                <property name="username" value="root"></property>
                <!--连接密码-->
                <property name="password" value="root"></property>
            </dataSource>

        </environment>

        <environment id="Oracle">
            <transactionManager type=""></transactionManager>
            <dataSource type=""></dataSource>
        </environment>

    </environments>

    <mappers>
        <!--        引入提前准备好的描述文件-->
        <mapper resource="UserMapper.xml"></mapper>
    </mappers>

</configuration>
5.3、编写实体
java 复制代码
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    private Integer id;
    private String username;
    private String password;
}
5.4、编写UserMapper.xml
xml 复制代码
<mapper namespace="UserMapper">

        <!--    数据库增删改查的描述文件-->
        <insert id="insert">
            insert into t_user(username,password) values('helloworld','123')
        </insert>

</mapper>
5.5、测试
java 复制代码
    @Test
    public void testHelloworld() throws IOException {
        //第一步:找到配置文件
        Reader resourceAsReader = Resources.getResourceAsReader("mybatis.xml");
        //第二步:创建SqlSessionFactory对象(就是我们的操作数据库的这个工厂对象)
        // 这个用了一种设计模式:构建者
        SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsReader);
        //第三步:使用工厂创建实例对象(操作数据库的对象)
        SqlSession sqlSession = build.openSession();
        //第四步:调用我们的UserMapper中的描述方法
        sqlSession.insert("UserMapper.insert");
        //第五步:提交数据
        sqlSession.commit();
        sqlSession.close();
    }
相关推荐
Bathwind-w1 小时前
FOC开发工具学习
学习
Coder_Boy_1 小时前
DDD从0到企业级:迭代式学习 (共17章)之 四
java·人工智能·驱动开发·学习
deng-c-f2 小时前
Linux C/C++ 学习日记(49):线程池
c++·学习·线程池
HyperAI超神经2 小时前
【vLLM 学习】Prithvi Geospatial Mae
人工智能·python·深度学习·学习·大语言模型·gpu·vllm
Billow_lamb3 小时前
MyBatis Plus 中常用的插件列表
java·mybatis
TL滕4 小时前
从0开始学算法——第十八天(分治算法)
笔记·学习·算法
silence2504 小时前
MyBatis-Plus 报错 Invalid bound statement(insert)?其实是 SqlSessionFactoryBean 踩坑了
mybatis·mybatis-plus
思成不止于此4 小时前
【MySQL 零基础入门】MySQL 约束精讲(一):基础约束篇
数据库·笔记·sql·学习·mysql
小黄人软件5 小时前
【过度滥用眼】真正的理解,从闭眼开始:如何把“眼睛视觉依赖”降到最低,把大脑效率提到最高。【最少用眼的工作与学习体系】
学习
老华带你飞5 小时前
建筑材料管理|基于springboot 建筑材料管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·学习·spring