Mybatis学习

  • 对JDBC的增强/封装
  • 有了Mybatis,开发人员just need 写SQL语句即可,不用关注数据库连接、资源关闭...

小技巧:

  • PageHelper插件可以实现 分页处理  

【动态SQL】  标签在mapper文件中

  • <where> <if>可以实现  条件判断为真时,执行某一种SQL; 为假时,执行另一种
  • <for-each> 可以实现同时获取多个值的记录    where id in (1,2,3)

 

1.实现步骤

  • pom.xml是添加 依赖、
  •  mybatis.xml主配置文件 必须在resources标识的文件夹下面,才会被认为是resource
  • mybatis默认不自动提交事务,在操作后sqlSession.commit()手动提交事务,数据库的数据才会发生变化。  这是在test.java中添加。 

       或者在创建sqlSession时,openSession()传入参数true.√

  • sqlSession是线程不安全的,使用前先open,使用完毕后及时close

2.传统Mybatis执行:

1.创建项目。在pom.xml中添加依赖、jar包

2.main/java/包/domain中编写实体类,与DB中class对应

3.main/java/包/dao中编写接口,接口中的方法是对数据库的操作(无方法体)

4.main/java/包/dao中写 【分配置文件】,1个类对应1个接口、1个配置文件。 配置文件中进行mapper映射,规定nameplace(接口的全限定名称)、id(接口的方法)、resultType(返回类型,类Student的全限定名称)

5.main下加一个resources包,包中写 【主配置文件mybatis.xml】,数据库的连接信息(可以写多个数据库,确定连接哪个)、要执行sql语句的位置(【分配置文件】的全限定名称,有多少写多少)、 日志配置(可以在控制台输出执行的 sql 语句和参数

6.main/java/包/utils中写 工具类, 用来sqlSession的获取(防止每个test需要写一大段)

7.main/java/包/dao/impl中写接口的实现类。 对接口中的方法实现,保留传入的参数(class对象/数据)

8.test/java/包/中写test文件, 创建 【7中的实现类】,创建Student对象并给数据,调用实现类的方法,实现对数据库的CRUD。

3.动态代理方式

  • 上述【7、8】需要修改,【1-6】不变
  • 不需要接口的【7】实现类
  • namespace, id名称必须是 全限定名称
  • sqlSession.getMapper(接口.class)会自动创建一个接口的实现类,并创建对象

4.返回类型

returnType返回类型

  • mapper文件中 sql语句执行结果 的返回类型 可以是任意类型,只要该类型与结果匹配即可、
  • 若返回Student,也可以有另一个与Student属性相同的类,将返回类型定义为这个类
  • 返回类型也可以是Map, 但是Map只能返回一个结果,多行会显示错误。(不推荐用)

ResultMap

  • 可以指定  数据库中colomn与 类中的属性 的对应关系
  • 当列名和属性名不一致时,使用ResultMap(推荐使用),或者列别名
  •  returnType 和ResultMap不要同时使用

 别名

  • 可以定义别名   为全限定名称的类定义别名  在mybatis.xml主配置文件中定义
  • 两种方式定义别名
  • 不建议定义别名,  全限定名称更安全

Like的两种方式

a.传参:%李%   b.传参:李 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值