Mybatis框架学习第二天

1.Mybatis基本的CURD操作

*1.CURD基本操作的配置举例
其中
id是映射的dao中的方法名称,必须一致。
resultType是设置返回值类型
parameterType是设置参数类型(例如int,Integer,java.lang.Integer 都行)

四个标签

<select>
<insert>
<update>
<delete>

填充sql语句中的参数时:
传入参数为对象时赋值采用 #{实体属性名称或参数名} 的形式赋值,其中一个实体的参数名取值必须和传入parameterType的对象属性名称一致,
传入参数是一个变量例如字符串型的,则#{可以任意名},
多个参数变量取值则需要在Dao参数中指定@Param参数名,或者使用0,1下标的方式取值

	<!--配置查询所有  id值必须是dao中的方法名 -->
	<select id="findAll" resultType="fun.borened.domain.User">
		select * from user
	</select>
	<!--配置保存操作  -->
	<insert id="saveUser" parameterType="fun.borened.domain.User">
		insert into user(username,birthday,sex,address) values(#{username},#{birthday},#{sex},#{address})
	</insert>
	<!--配置更新操作  -->
	<update id="updateUser" parameterType="fun.borened.domain.User">
		update user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address} where id=#{id}
	</update>
	<!--配置删除操作  -->
	<delete id="deleteUser" parameterType="Integer">
		delete from user where id =#{id}
	</delete>

需要注意的是除了查询操作,更新添加默认都需要手动提交事务(自动提交false),调用sqlsession对象的commit()方法,提交。
*2.特殊查询,
- 模糊查询的写法

	<!--根据姓名模糊查询  -->
	<select id="findByName" resultType="fun.borened.domain.User" parameterType="String">
		select * from user where username like #{uname}
		<!--模糊查询不常用写法,使用statement拼接字符串 ,
			一般还是使用上面的方式,使用预处理pstmt填充sql。
		select * from user where username like '%${value}%' -->
	</select>

后面传入username值时需要加上%百分号,findByName(“程%”)
查询结果:
在这里插入图片描述
- 查询总记录条数

	<!--查询总记录条数  -->
	<select id="getTotal" resultType="int">
		select count(*) from user
	</select>

- 查询刚刚插入的数据记录的id值(数据库设置了自增,我们不提供id确想要拿到的情况)

	<!--取刚插入的记录的列id值, order是先控制执行顺序,keyColumn是列名 -->
	<insert id="saveUser" parameterType="fun.borened.domain.User">
		<selectKey	keyProperty="id" keyColumn="id" order="AFTER" resultType="int">
			select last_insert_id()
		</selectKey>
		insert into user(username,birthday,sex,address) values(#{username},#{birthday},#{sex},#{address})
	</insert>

查询结果:
在这里插入图片描述

2.Mybatis中的参数深入

mybatis填充sql参数使用ognl表达式,获取对象的属性或参数的值。#{}或${}或括号中值为pojo属性名称
1.输入类型参数parameterType(类名)
类名可以是类的全限定路径或基本类的名称,也可以是类的别名。需要先配置parameterMap标签提供别名的id,后面进行引用即可。
对参数的取值

  • OGNL表达式使用 对象名称.属性 就 可以取值,类似EL表达式,mybatis中省去了对象.因为参数中指定了传入的参数类型,自动解析到对象。
  • 当传入参数是单个pojo对象时,#{属性名称}就可以取到参数值
  • 当传入参数包含多个对象信息,可以使用包装类,(对象中包含对象)pojo中包含pojo,#{user.username}就可以取到包装类的user属性的username值。

2.输出类型参数returnType

  • 当数据库表中的字段和pojo实体对象中的属性名称一致时,我们只需要指定返回对象的类即可自动封装
  • 开发中,当表的列名和实体对象属性名不一致时,则需要改造我们的查询语句sql或是添加返回集合映射配置
    1️⃣:直接改造sql语句
    select id as userId username as userName sex as userSex from user,
    2️⃣:添加resultMap标签配置返回集合的参数映射,当一个表需要有多个条件查询操作时,这种方法不需要改造大量的sql语句,提高了开发效率,但是加载速度比直接改造略低(加载xml),各有利弊。
	<resultMap type="fun.borened.domain.User" id="resMap">
		<!--配置主键列名,property为实体属性,column为表的列名 -->
		<id property="userId" column="id" />
		<!--配置非主键列 -->
		<result property="userName" column="username" />
	</resultMap>
	<!--配置查询所有  id值必须是dao中的方法名 -->
	<select id="findAll" resultType="resMap">

3.Mybatis实现DAO层开发

该过程相对比较复杂,需要研究源码实现过程的参考以下步骤。
源码研究

4.Mybatis的一些标签灵活使用

在主配置文件中可以配置如下标签
properties:声明数据源信息,或声明外部properties配置信息文件
typeAliases:配置实体类的别名
package:配置需要指定别名的包
在这里插入图片描述在mapper配置文件中:可以配置resultMap和parameterMap设置类的别名,cache等标签后面会介绍使用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值