MybatisCRUD操作

MyBatis的CRUD操作

步骤:

  1. 修改Dao接口.
  2. 在Mapper中对应Dao接口的完整namespace+id写SQL语句.
  3. 方法有返回类型的需要有 resultType 有传参的类型需要写 parameterType.
  4. insert into user(…) values(#{a},#{b});
  • 增删改需要进行commit,因为Setting autocommit to false. 需要手动commit,否则进行了回滚.
  • 模糊查询 where username like #{name}. 然后传参 “%X%”; 用的是prepareStatement.
    • 当写为 where username like ‘%${value}%’ 时,直接传参"X".用的是Statement.
  • 数据库主键包括自增和非自增,有时候新增一条数据不仅仅知道成功就行了,后边的逻辑可能还需要这个新增的主键,这时候再查询数据库就有点耗时耗力,我们可以采用selectKey来帮助我们获取新增的主键.
<selectKey keyproperty="id" resultType="int" order="AFTER"> 
	select last_insert_id();
</selectKey>

keyproperty 对应实体类的属性名称.

Mybatis参数

OGNL表达式

  • Object Graphic Navigation Language(对象导航图语言).Mybatis使用ognl表达式解析对象字段的值.#{}或者${}括号中的值为pojo属性名称.
  • 通过对象的取值方法来获取数据,在写法上吧get省略了.
    • 比如:类中的写法: user.getUsername();
      OGNL表达式写法:user.username
      Mybatis中为什么不用user. 而可以直接写username呢?
      答:因为在parameterType中已经提供了属性所属的类.

POJO对象

P.S. POJO与Javabean的区别.
POJO全称是Plain Ordinary Java Object.普通Java类,具有一部分getter/setter方法的那种类就可以称作POJO.通常情况下,由于 Java Bean 是被容器所创建(如 Tomcat) 的,所以 Java Bean 应具有一个无参的构造器,另外,通常 Java Bean 还要实现 Serializable 接口用于实现 Bean 的持久性。 Java Bean 是不能被跨进程访问的。JavaBean是一种组件技术.简而言之,当一个Pojo可序列化,有一个无参的构造函数,使用getter和setter方法来访问属性时,他就是一个JavaBean。

查询条件对象(POJO包装对象)
  • 将查询条件参数传递进去. 比如QueryVo.在这里插入图片描述在这里插入图片描述
  • 用user.username 是因为OGNL表达式的用法.QueryVo只有属性user.所以要先找到user再查user属性.
  • pojo属性名称一定和参数里面对应的属性名相同,要不会报错,查不到该属性.
  • domain/user里面的属性值与MySQL数据库的属性名要一致,否则数据封装不进去(Windows不区分大小写.但Linux系统会区分大小写.).
  • 上述不对应问题,在SQL语句中用 id as userID 取别名的方式是可以的.
  • Mybatis提供了配置表的列名和实体类的属性名对应关系的解决方法.
	<resultMap id="随便,用于标识该resultMap 如:userMap" type="要封装的类  ...domain.user">
		<!--主键字段的对应  -->
		<id property="userId" column="id"></id>
		<!--非主键字段的对应 property对应java属性,严格区分大小写.-->
		<result property="userName" column="username"></result>
	</resultMap>

	<!--现在标签里面不再是resultType  而是 resultMap="userMap"-->
	<!--这种方法没有取别名快,但是能够复用,其他SQL语句,只要修改为resultMap就全部可以使用了-->
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值