js多久可以做网站,有专门做背景音乐的网站吗,wordpress搜索开发,建设网站需要几部分Mybatis中动态SQL标签和内置参数
一、MyBatis动态SQL
1.1、sql标签
sql标签用于抽取公用的SQL代码#xff0c;定义sql标签的时候需要通过【id】属性设置唯一标识。
?xml version1.0 encodingUTF-8 ?
!DOCTYPE mapperPUBLIC -…Mybatis中动态SQL标签和内置参数
一、MyBatis动态SQL
1.1、sql标签
sql标签用于抽取公用的SQL代码定义sql标签的时候需要通过【id】属性设置唯一标识。
?xml version1.0 encodingUTF-8 ?
!DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd
mapper namespacecom.mybatis.demo.mapper.UserMapper!-- 动态SQL --sql idsqlDemoid,username,password/sql
/mapper1.2、include标签
include标签用于引用其他的sql代码块上面介绍的sql标签是定义公共代码块而include标签则是在其他地方引用公共代码块。
?xml version1.0 encodingUTF-8 ?
!DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd
mapper namespacecom.mybatis.demo.mapper.UserMapper!-- 动态SQL --sql idsqlDemoid,username,password/sqlselect idquery parameterTypecn.js.domain.User resultTypecn.js.domain.Userselectinclude refidsqlDemo/includefrom user /select
/mapper1.3、resultMap标签
resultMap标签用于定义sql表字段和java实体类属性的映射关系resultMap标签中可以使用如下几个标签。
id标签用于指定主键。result标签用于指定普通的实体字段属性映射关系。associate标签一对一的关联查询。collection标签一对多、多对多的关联查询。
id标签和column标签都有下面这些属性
column属性用于指定数据库表字段名称。property属性用于执行java实体类属性名称。jdbcType属性数据库表字段的类型可选。javaType属性java实体类字段的类型可选。typeHandler属性定义jdbcType和javaType类型转换的处理器可选。
?xml version1.0 encodingUTF-8 ?
!DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd
mapper namespacecom.mybatis.demo.mapper.UserMapper!-- 动态SQL --resultMap idresultMap typecn.js.domain.User!-- id 标签: 用于指定主键 --id columnid propertyid jdbcTypeINTEGER javaTypeInteger typeHandler/!-- column 标签: 用于定义数据库和java实体类的名称映射关系 --result columnusername propertyusername/result columnpassword propertypassword//resultMap
/mapper定义resultMap标签之后可以通过select标签的【resultMap】属性进行引用。
MyBatis中常见的数据类型映射关系如下所示 jdbcType和javaType类型对应关系 INTEGER》INTEGERDATE》DATEBLOB》BLOBoracle中是NUMBERmysql中是DOUBLE》DOUBLEDECIMAL》DECIMALVARCHAR》STRING 1.4、bind标签
bind标签是用于绑定参数的它可以对输入参数拼接一些其他的内容然后将拼接好的整体一起拼接到SQL语句上面例如模糊查询的时候需要拼接【%】符号这种情况就可以使用bind标签并且使用bind标签处理模糊查询可以解决SQL注入问题。
?xml version1.0 encodingUTF-8?
!DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN http://mybatis.org/dtd/mybatis-3-mapper.dtdmapper namespacecn.js.Mapper.EmployeeMapper!-- 动态SQL --!-- 动态SQL --select idquery parameterTypecn.js.domain.Employee resultTypecn.js.domain.Employeebind namename value% _parameter.getName() %/select *from employeewhere name like #{name}/select
/mapper
bind标签中有两个属性分别是
name属性这个是输出参数的名称。value属性这个是拼接之后name参数的新值。
上面代码中假设我们传递的输入参数username值是【雄霸】那么经过bind标签参数绑定之后新的username参数值等于【%雄霸%】这样就实现了模糊查询的SQL。 测试代码
package cn.js.Test;import cn.js.Mapper.EmployeeMapper;
import cn.js.MybatisApp;
import cn.js.domain.Employee;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;import javax.annotation.Resource;/*** BelongsProject: MybatisTest* Author: com.js* CreateTime: 2023-09-10 00:01* Version: 1.0* introduce*/
RunWith(SpringRunner.class)
SpringBootTest(classes MybatisApp.class)
public class EmployeeTsst {Resourceprivate EmployeeMapper employeeMapper;Testpublic void test01(){Employee user new Employee();user.setName(雄霸);Employee employee employeeMapper.query(user);System.out.println(employee);}
}
1.5、_parameter内置参数
【_parameter】是MyBatis框架中提供的一个内置参数对象这个_parameter对象包含了Mapper接口方法的所有参数如果Mapper接口方法只有一个输入参数那么【_parameter】对象就表示这个输入参数
如果Mapper接口方法有多个输入参数那么MyBatis框架会将所有的参数封装为一个Map对象我们可以直接通过【_parameter.XXX】的方式获取具体的输入参数。 select idquery7 parameterTypecn.js.domain.User resultTypecn.js.domain.Userselect * from userwhereif test_parameter.username ! nulland username #{username}/if/where/select1.6、_databaseId内置参数
【_databaseId】内置参数可以获取到当前项目中使用的数据库类型例如是MySQL数据库还是Oracle数据库。要使用【_databaseId】内置参数必须在Mybatis的配置文件里面添加【databaseIdProvider】标签。
1添加databaseIdProvider
在mybatis的配置文件里面添加如下配置 databaseIdProvider typeDB_VENDOR!-- 定义参数 --property nameMySQL valuemysql//databaseIdProvider2使用_databaseId参数
?xml version1.0 encodingUTF-8 ?
!DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd
mapper namespacecom.mybatis.demo.mapper.UserMapperselect idquery6 parameterTypecn.js.domain.User resultTypecn.js.domain.Userif test_databaseId mysqlselect * from user limit 5,5/ifif test_databaseId oracleselect * from user where rownum ![CDATA[ ]] 5/if/select
/mapper