mybatis笔记

mybatis介绍

 1.mybatis是三层架构中的持久层的框架,是对数据库进行数据的增删改查。
 2.mybatis主要功能:执行数据库的操作,完成对数据的增删改查;看做是jdbc的升级版本。
 3.mybatis特色:执行数据库操作,可以只关心sql如何编写,
 4.sql mapps: sql映射,mybatis可以把表中的数据转为一个java对象。 把表和java对象对应起来

mybatis使用

1.框架的使用步骤

1.定义mapper文件,是一个xml文件,编写sql语句
2.定义mybatis主配置文件:1)定义数据源DataSource;2)指定mapper文件的位置
3.创建实体类:使用实体类表示表中的数据,表中的一行数据就相当于是一个实体类对象
4.定义dao接口:定义方法,方法表示要执行的数据操作, 方法名称应该和mapper文件中的id一样
5.使用SqlSessionFactory的openSession()方法获取SqlSession对象
6.使用SqlSession的方法执行sql语句
核心:mybatis执行sql语句的核心对象:SqlSession

2.mybatis的传参数

1.传一个简单类型的参数,在mapper文件中使用:#{任意字符串}

public User select(String name);
<select id="select" resultType="com.dao.StudentDao">
    select * from user
    where user_name = #{0} 
</select>

2.使用@Param注解给参数命名, 在mapper文件,使用#{自定义的名称}

public User select(@Param("userName") String name, int @Param("password") password);
<select id="select" resultType="com.dao.StudentDao">
    select * from user
    where user_name = #{userName} and password= #{password}
</select>

3.使用java对象传参, 在mapper文件中, 使用#{java对象属性名称}

public User select(User user);
<select id="select" parameterType="com.dao.User" resultType="com.dao.StudentDao">
    select * from user
    where user = #{userName} and password= #{password}
</select>

4.使用参数的位置, 在mapper文件,#{arg位置值,从0开始}

public User select(String name, int password);
<select id="select" resultType="con.dao.StudentDao">
    select * from user
    where user = #{0} and password= #{1}
</select>

5.使用map, #{map的key}

public User selectUser(Map<String, Object> params);
<select id="selectUser" parameterType="java.util.Map" resultMap="UserResultMap">
    select * from user
    where user_name = #{userName} and dept_id = #{deptId}
</select>

#{}和${}的区别

1.#是占位符,使用?做占位符合,mybatis内部使用PreparedStatement对象执行sql语句,效率高
2.#表示列的值, 一般是放在等号的右侧使用
3.$是字符串代理连接, 把sql语句和 ${}位置的值连接在一起
4. $所表示的内容是原样替换的
5. $使用的sql语句,mybatis使用的是Statement对象执行sql的
6. $一般是替换表名,列名, 部分sql语句的

模糊查询like的使用

1.在java代码中指定模糊查询的内容,例如 “%李%”, 然后把这个值传入到sql语句中
2.在sql语句中拼接like的内容, 方式 where name like “%“空格#{name}空格”%”

动态sql

1.通过在mapper中,使用标签,通过条件生成不同的sql语句,主要是控制where 条件部分
2.< if test=“boolean条件”>: 当条件为true,把sql语句加入到主sql中
3.< where> :where里面是if, 当if条件有一个满足,在主sql语句加入 where 关键字和条件
4.foreach < foreach collection=“集合类型” open=“开始的字符” close=“结束的字符” item=“集合中的成员” separator=“集合成员之间的分隔符”>#{item的值}< /foreach>

item  表示集合中每一个元素进行迭代时的别名,随便起的变量名;
index  指定一个名字,用于表示在迭代过程中,每次迭代到的位置,不常用;
open  表示该语句以什么开始,常用“(”;
separator表示在每次进行迭代之间以什么符号作为分隔符,常用“,”;
close  表示以什么结束,常用“)”。
在使用foreach的时候最关键的也是最容易出错的就是collection属性,该属性是必须指定的,但是在不同情况下,该属性的值是不一样的,主要有一下3种情况:

(1)如果传入的是单参数且参数类型是一个List的时候,collection属性值为list
(2)如果传入的是单参数且参数类型是一个array数组的时候,collection的属性值为array
(3)如果传入的参数是多个的时候,我们就需要把它们封装成一个Map了,当然单参数也可以封装成map,实际上如果你在传入参数的时候,在MyBatis里面也是会把它封装成一个Map的,
map的key就是参数名,所以这个时候collection属性值就是传入的List或array对象在自己封装的map里面的key

PageHelp分页

1.加入依赖
2.在你的查询方法之前加入 PageHelper.startPage(第一页,每页几行数据)
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值