Mybatis笔记

Mybatis开发环境搭建

1、什么是Mybatis

​ 是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。

2、Mybatis的优点及缺点

  1. ​ 优点:
    1. 简单 易学
    2. 灵活
    3. 解除sql与程序代码的耦合
  2. 缺点:
    1. 编写SQL语句时工作量很大,尤其是字段多、关联表多时,更是如此。
    2. SQL语句依赖于数据库,导致数据库移植性差,不能更换数据库。
    3. 框架还是比较简陋,功能尚有缺失

3、加载原理

​ MyBatis应用程序根据XML配置文件创建SqlSessionFactory,SqlSessionFactory在根据配置,配置来源于两个地方,一处是配置映射文件,一处是Java代码的注解,获取一个SqlSession。SqlSession包含了执行sql所需要的所有方法,可以通过SqlSession实例直接运行映射的sql语句,完成对数据的增删改查和事务提交等,用完之后关闭SqlSession。
在这里插入图片描述

4、核心接口对象

SqlSessionFactory 会话工厂对象

SqlSession 对应着一次数据库会话,用于执行持久化操作的对象,类似于jdbc中的Connection

5、环境搭建

  1. 添加相应的Jar包(mybatis jdbc)
  2. src添加mybatis的配置文件(conf.xml)数据库连接属性文件(*.properties)
  3. 实体类映射
  4. 定义操作表sql映射文件*mapper.xml,返回结果集resultType或resultMap。
  5. 在conf.xml文件中注册*mapper.xml文件
  6. 测试(sqlSession实例来直接执行已映射的sql语句)

6、输出SQL语句设置(Java工程可以测试,web工程在servlet里面)

  1. 加入log4j.jar
  2. src目录log4j.properties属性文件

7、实现增删改查操作

1、实现查询
  1. 根据主键查询返回一个Bank对象(resultType=“com.pojo.bank”)

    <select id="selectbankuserbyid" resultType="com.pojo.BankUser" parameterType="int">
        select id,name,tel,money from bankuser where id= #{id}
    </select>
    
  2. 根据主键查询返回一个map对象(resultType=“hashmap”)

    <select id="selmapById" resultType="map">
    		select id,username from bank
    		where id=1
    	</select>
    
  3. 返回一个Bank对象(使用resultMap=“bankmap”****指向一个resultMap的id**)

  4. 返回一个Map对象(使用resultMap=“bankmap”****指向一个resultMap的id**)

  5. 返回一个List对象

  6. 查询参数设置为基本类型查询

    1. <!-- 查询条件为基本类型 -->
      	<select id="selbankwherea" resultType="com.bean.Bank" parameterType="int">
      	<!-- #{id},#{ldjlfjdl} 如果是一个基本类型参数,可以任意写 -->
      	select id,username from bank where id &lt; #{id}
      	</select>
      
  7. 参数设置为对象查询

    <!-- 查询条件如果有多个,封装为对象参数进行查询 -->
    	<select id="selbankwhereb" resultType="com.bean.Bank"
    		parameterType="com.bean.Bank">
    		<!-- #{id},#{username} 必须是parameterType="com.bean.Bank"对象里面属性,且有get、set -->
    		select id,username from bank where id &lt; #{id} and username= #{username}
    	</select>
    
  8. 参数map集合

<!-- 查询条件如果有多个,封装为map参数进行查询 -->
	<select id="selbankwherec" resultType="com.bean.Bank"
		parameterType="map">
		<!-- #{mapid},#{mapmoney} 必须是parameterType="map"里面的键的名字 -->
		select id,username from bank where id &lt; #{mapid} and money &lt;
		#{mapmoney}
	</select>
2、增加数据
  1. 参数为对象

  2. 参数为Map集合

  3. 实现修改数据

    String sqlid="com.pojo.Bank.updateBank";
    Bank bank= new Bank();
    bank.setid(4);
    int a=session.update(sqlid,bank);
    session.commit(); //提交事务
    
  4. 执行删除数据(同修改)

  5. MyBatis中parameterType传入参数的方式:

    1. 单参数:各种Java的基本数据类型:包含int,String,Date等。只能传入一个。通过#{参数名} 获取传入的值

    2. 多参数:一种是使用Map集合(parameterType 可以是别名或完全限定名,map或者java.util.Map,这两个都是可以,#{键}获取),另一种是使用JavaBean(#{属性}),还可以传list集合,一般结合in使用(后面动态sql讲解)

实现数据的增删改查(接口方式)

接口方式的注意点:

  1. 接口的方法名字和映射文件里面的id一致
  2. 映射文件namespace=接口的路径

过程:

  1. 增加接口(接口的方法与映射文件的id相等)
  2. 增加接口的映射文件*Mapper.xml【必须:namespace=接口的类路径
  3. Mybatis配置文件增加对接口的映射
  4. 测试:

用mybatis查询数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值