(一)Mybatis介绍

1.Mybatis简介

MyBatis是一个数据持久层(ORM)框架。把实体类和SQL语句之间建立了映射关系,是一种半自动化的ORM实现。

MyBatis的优点:

  • 基于SQL语法,简单易学。
  • 能了解底层组装过程。
  • SQL语句封装在配置文件中,便于统一管理与维护,降低了程序的耦合度。
  • 程序调试方便。

MyBatis是一个持久层框架,是apache下的顶级项目
MyBatis让程序员将主要精力放在sql上,通过MyBatis 提供的映射方式,自由灵活的生成满足需求的sql语句
MyBatis可以将向preparedstatment中的输入的参数自动的进行输入映射,也能将查询结果集灵活映射成java对象(输出映射)

这里写图片描述
通过配置文件 来生成sqlsessionfactory ,然后用来生成 sqlsession
sqlsession(会话)(是个接口面向程序员的接口)作用就是向数据库发送sql语句(它是如何发送的?sqlsession里面封装了一个东西,叫做执行器execute)
execute:作用:通过执行器去操作数据库
mapped statment (封装了 sql语句,输入参数,输出参数) (jdbc里面有preparestatment)
输入参数可以是java基本类型,hashmap,自定义的pojo(就是自定义的类型)(自己定义的类)entity(实体类) vo
输出参数可以是java基本类型,hashmap,自定义的pojo(就是自定义的类型)(自己定义的类)

2、Mybatis框架

一个简单的java项目
(1)下载所需要的jar包
这里写图片描述
(2)创建项目,引入jar包和数据库驱动包,附上项目目录结构
这里写图片描述
注意:将配置文件mybatis-config.xml,log4j.properties等放到config文件夹下(文件夹:右键->Source folder)
(3) Log4j.properties文件
如果把mybatis目录下的官方log4j.properties直接拿来用,会报错,要删除WARN之后的内容
这里写图片描述

3、入门程序

(1)、创建好实体类比如Student,要与数据库对应好
(2)、在sqlmap创建一个xml文件,名字随意,一般与类名一致
(3)、在xml中写一个标签

<mapper namespace="需要填写。假设为test">
    ...
</mapper>

之后,在这个mapper标签里面写sql语句。
举例:
根据学生id查询学生信息

<select id="queryStudentById" parameterType="int"   resultType="com.zb.entity.Student">
        select * from student where id = #{id}
</select>  

解释:
select标签是查询专用标签。同理insert标签,delete标签,update标签分别是插入、删除、更新的专用标签。
id就是给这一部分起个名字,一会儿会用到。
parameterType就是参数类型。这条sql语句里需要一个参数即id(补充:参数的格式是 #{参数名}),id为int型
resultType就是返回值类型,必须是全路径名

根据姓名模糊查询学生信息

<select id="queryStudentByName" parameterType="String" resultType="com.zb.entity.Student">
        select * from student where name like #{name}
</select>

插入一条记录(参数类型要写全路径名,也可以简写,后面会讲到)

<insert id="addStudent" parameterType="com.zb.entity.Student">
        insert into student(name,age,class_id)   
        values(#{name},#{age},#{class_id})
</insert>

写完sql语句之后,需要在mybatis-config.xml中加载这个student.xml
代码如下:

<mappers>
    <mapper resource="sqlmap/student.xml" />
</mapper>

在主类里测试

    //mybatis 全局配置文件位置
    String resource = "mybatis-config.xml";
    //放在外面是mybatis的核心包
    //将我们的配置文件读到流里
    InputStream iStream = Resources.getResourceAsStream(resource);
    //build 的参数是个  流
    SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(iStream);

    //开启session,有了session就可以操作数据了
    SqlSession session = sessionFactory.openSession();

    //selectOne的意思就是结果是一条记录,第一个参数为namespace+id名,这里的namespace就是在student.xml中的test,第二个参数为sql语句需要的参数
    Student student=session.selectOne("test.queryStudentById",1);
    System.out.println(student);

    //模糊查询,可能会查处多条记录,所以要用selectList
    List<Student>list = session.selectList("test.queryStudentByName", "%张%");
    System.out.println(list);


    Student student2 = new Student();
    student2.setName("123");
    student2.setAge(18);
    student2.setClass_id(2);
    int count = session.insert("test.addStudent", student2);
    System.out.println(count);

    session.commit();//提交事务要不然数据库里没东西
    session.close();//释放资源

插入、删除、更新等对数据库有改变的操作必须要有提交事务和释放资源。但是数据库中事务只要已完成就不能回滚了!木已成舟!

总结:
mybatis在主类里的使用过程是:
(1)通过配置文件创建SqlSessionFactory
(2)通过SqlsessionFactory来创建sessoin
(3)通过session来操作数据库

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值