MyBatis review(一)——常见配置及方法

简介: 最近change a new job,复习下mybatisO(∩_∩)O~~~一,#{} 与 ${}#{}表示一个占位符号,通过#{}可以实现preparedStatement向占位符中设置值,自动进行java类型和jdbc类型转换,#{}可以有效防止sql注入。



最近change a new job,复习下mybatisO(∩_∩)O~~~


一,#{} 与 ${}


#{}表示一个占位符号,通过#{}可以实现preparedStatement向占位符中设置值,自动进行java类型和jdbc类型转换,#{}可以有效防止sql注入。
 #{}可以接收简单类型值或pojo属性值。 如果parameterType传输单个简单类型值,#{}括号中可以是value或其它名称。

${}表示拼接sql串,通过${}可以将parameterType 传入的内容拼接在sql中且不进行jdbc类型转换,
 ${}可以接收简单类型值或pojo属性值,如果parameterType传输单个简单类型值,${}括号中只能是value。

二,parameterType 与resultType


parameterType:指定输入参数类型,mybatis通过ognl从输入对象中获取参数值拼接在sql中。
resultType:指定输出结果类型,mybatis将sql查询结果的一行记录数据映射为resultType指定类型的对象。


示例:


<!-- 通过select执行数据库查询
		id:标识映射文件的sql,称为statement的id
		将来sql语句会封装到mapperedstatement对象中
		所以将id称为statement的id
		
		#{}:表示一个占位符
			#{id}:其中的id标识接受输入的参数,参数名称就是id,如果我的输入参数是简单类型,
				#{}中的参数名可以为任意值
		parameterType:指定输入参数的类型,这里指定int
		resultType:指定sql输出结果所映射的java对象,select指定resulttype标识将单条记录映射成java对象
	 -->
	<select id="findUserById" parameterType="int" resultType="cn.itcast.mybatis.po.User">
		SELECT * FROM user  where id=#{value}
	</select>


	<!-- 根据用户名称模糊查询用户,可能返回多条
		resultType:指定的是将单条记录映射成的对象的类型
		${}:标识拼接sql串,将接收到的参数的内容不加任何修饰拼接在sql中
			使用$来拼接sql可能会引起sql注入
			如果传入的类型是简单类型,则${}中只能使用value
	 -->
	<select id="findUserByName" parameterType="java.lang.String" resultType="cn.itcast.mybatis.po.User">
		SELECT * FROM `user` where username like '%${value}%'
	</select>


三,获取insert之后的主键值


        1,获取自增主键


<!-- 添加用户
			parameterType:pojo,user,在#{}指定pojo的属性名,接收到pojo对象的属性值,mybatis也是通过ognl获取对象的属性值
	 -->
	<insert id="insertUser"  parameterType="cn.itcast.mybatis.po.User" >
	
		<!-- 将刚插入的数据的主键返回 
			select LAST_INSERT_ID():得到刚执行插入进去的的主键值,只适用于自增主键
			keyProperty:将查询到的 主键值设置到parameterType指定对象的属性
			order:select LAST_INSERT_ID()的执行顺序,相对于insert语句的执行顺序
			resultType:指定结果类型
		 -->
		<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
			select LAST_INSERT_ID()
		</selectKey>
		
		insert into user(username,birthday,sex,address) VALUE(#{username},#{birthday},#{sex},#{address})
	</insert>

       2,获取的主键为UUID

       

<!-- 测试添加非自增主键
		使用MySql的UUID()生成主键
		执行过程:
			1,首先通过UUID()得到主键,将主键设置到user对象的id属性中
			2,在insert执行时,从user对象中取出id属性
	 -->
	
	<insert id="insertUserTestUuid" parameterType="cn.itcast.mybatis.po.UserTestUuid" >
		<selectKey keyProperty="id" order="BEFORE" resultType="java.lang.String">
			select UUID()
		</selectKey>
		insert into userTestUuid(id,username) VALUE(#{id},#{username})
	</insert>




         



目录
相关文章
|
2月前
|
SQL XML Java
mybatis复习01,简单配置让mybatis跑起来
文章介绍了MyBatis的基本概念、历史和特点,并详细指导了如何配置MyBatis环境,包括创建Maven项目、添加依赖、编写核心配置文件、创建数据表和实体类、编写Mapper接口和XML配置文件,以及如何编写工具类和测试用例。
mybatis复习01,简单配置让mybatis跑起来
|
3月前
|
安全 Java 数据库连接
后端框架的学习----mybatis框架(3、配置解析)
这篇文章详细介绍了MyBatis框架的核心配置文件解析,包括环境配置、属性配置、类型别名设置、映射器注册以及SqlSessionFactory和SqlSession的生命周期和作用域管理。
后端框架的学习----mybatis框架(3、配置解析)
|
2月前
|
SQL XML Java
mybatis :sqlmapconfig.xml配置 ++++Mapper XML 文件(sql/insert/delete/update/select)(增删改查)用法
当然,这些仅是MyBatis功能的初步介绍。MyBatis还提供了高级特性,如动态SQL、类型处理器、插件等,可以进一步提供对数据库交互的强大支持和灵活性。希望上述内容对您理解MyBatis的基本操作有所帮助。在实际使用中,您可能还需要根据具体的业务要求调整和优化SQL语句和配置。
45 1
|
3月前
|
缓存 Java 数据库连接
mybatis1.常见配置
本文介绍了MyBatis框架中的常见配置及其加载顺序。配置可通过`properties`元素、资源文件或方法参数传递,其中方法参数传递的属性具有最高优先级。文章列举了几个重要的配置项,如`cacheEnabled`用于全局开启或关闭缓存功能;`lazyLoadingEnabled`控制对象的延迟加载行为;`useGeneratedKeys`允许JDBC支持自动生成主键;`defaultExecutorType`设定默认执行器类型等。此外,还介绍了多环境配置方法,通过`environments`元素可定义不同环境下的数据库连接信息,并可根据需求动态选择加载特定环境
|
4月前
|
SQL Java 数据库连接
idea中配置mybatis 映射文件模版及 mybatis plus 自定义sql
idea中配置mybatis 映射文件模版及 mybatis plus 自定义sql
92 3
|
4月前
|
SQL
自定义SQL,可以利用MyBatisPlus的Wrapper来构建复杂的Where条件,如何自定义SQL呢?利用MyBatisPlus的Wrapper来构建Wh,在mapper方法参数中用Param注
自定义SQL,可以利用MyBatisPlus的Wrapper来构建复杂的Where条件,如何自定义SQL呢?利用MyBatisPlus的Wrapper来构建Wh,在mapper方法参数中用Param注
|
4月前
|
Java 数据库连接 mybatis
SpringBoot配置Mybatis注意事项,mappers层下的name命名空间,要落实到Dao的video类,resultType要落到bean,配置好mybatis的对应依赖。
SpringBoot配置Mybatis注意事项,mappers层下的name命名空间,要落实到Dao的video类,resultType要落到bean,配置好mybatis的对应依赖。
|
5月前
|
XML 前端开发 Java
Mybatis-Plus乐观锁配置
Mybatis-Plus乐观锁配置
若依修改,集成mybatisplus报错,若依集成mybatisplus,总是找不到映射是怎么回事只要是用mp的方法就找报,改成mybatisPlus配置一定要改
若依修改,集成mybatisplus报错,若依集成mybatisplus,总是找不到映射是怎么回事只要是用mp的方法就找报,改成mybatisPlus配置一定要改
接口模板,文本常用的接口Controller层,常用的controller层模板,Mybatisplus的相关配置
接口模板,文本常用的接口Controller层,常用的controller层模板,Mybatisplus的相关配置