MyBatis入门教程

概述:

        1.mybatis是什么?有什么特点?是干什么的?

        它是是一种持久层半自动化ORM(Object Relatioin Mapping)框架,其中Object 代表java对象,Relatioin 代表与数据库之间的关系,Mapping代表映射。也就是说是java对象和数据库之间的映射关系,例如一个BOOK类对应着数据库中一个BOOK表,而BOOK类中的私有属性刚好对应数据库中BOOK表的各个字段。用于简化JDBC开发。

        mybatis是半自动化ORM,他需要手动编写SQL语句。有半自动化ORM就一定有全自动化ORM,代表是hibernate。他不需要手动编写SQL语句。但不代表hibernate更加好,因为mybatis灵活性较高。所以现在主流的是mybatis。

创建项目:

        首先需要新建一个项目:如下图所示

在pom.xml文件中添加依赖:

<dependencies>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.29</version>
    </dependency>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.13</version>
    </dependency>
</dependencies>

在数据库中创建一个Book表

在idea中创建一个vo文件夹,文件夹中创建一个Book类,类中的属性一定要和数据库的表相互对应:

创建一个dao文件夹,文件夹中有一个BookDao接口,在接口中写上增删改查的抽象方法:

创建接口的映射文件(因为不会长截屏,为了保证代码的完整性所以调整了代码的格式)

编写mybatis-config配置文件:

以下是mybatis基础机构流程:

根据流程在Java中新建一个Text类并写上自己需要实现的方法:

结果:

总结:

        1.创建项目,导入依赖,在数据库中建好表,java中建好同名的类,类中写完整对应的属性

        2.创建对应接口,接口中写上需要实现的方法,因为mybatis是实现去实例化类的操作,所以千万不要写实例化接口的类,需要写对应的mapper映射文件

        3.编写mybatis-config配置文件,就是将java和数据库进行连接的一个操作

        4.编写测试类,实现利用mybatis框架进行数据库数据的增删改查功能

注意要点:

        1.在BookDao接口写的抽象方法建议使用带参方法,这样有利于后续数据的变动,也降低了代码耦合

        2.在接口中进行查询操作时,一定要记得类型是Book对象类型,因为映射文件中有一句这样的代码<select id="selectbookbyid" resultType="vo.Book">,而且查询操作返回的是一条数据时使用Book类型,如果返回的是结果集那需要使用List<Book>类型。增删改操作都可以使用int类型,因为返回的是受影响的行数。

        3.像修改和增加操作需要传入的数据较多,可以在接口中传Book对象作为参数,后续在测试类中直接Book book1=new Book();在括号里直接写数据即可

        4.建议在非测试类中用#{ }来代替真实的数据,只需要在测试类中传入真实的数据即可,降低代码耦合度。例如:可以将author=“向日葵”;改为author=#{author},

        5.一定不要忘记在mybatis-config配置文件中加载mapper映射文件,否则就会报错

        6.测试类中SqlSessionFactory对象调用openSession方法是括号里建议写TRUE代表事务自动提交,否则需要手动写commit.

        SqlSession sqlSession = build.openSession(true);//写true代表事务自动提交

        7.建议在Book类中重写toString方法和有参构造方法,有利于在测试类中直接传参

隐藏错误:

        1.在BookMapper映射文件中,写修改操作代码是,我是使用if判断来写的:

我一开始在Book类中定义Id是int类型,int类型默认是0,不是NULL。所以就一直报错

        2.在写查询语句时遇到传入多个参数时,我是这样写的:

在我检查完数据类型之后发现没有错误,传入其他参数也不好使。就是一直报错

解决方案:

        1.在Book中将ID类型改为int的包装类Integer即可,因为只有Integer才用是不是为NULL的说法

        2.在写查询语句遇到需要传入多个参数时,需要在每个参数前面加入@ Param(" ") 才可以    "

感谢:致敬每一个认真学习代码的你(salute~)

  • 31
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值