企业宣传网站系统建设方案宁波seo软件
企业宣传网站系统建设方案,宁波seo软件,wordpress 建论坛,山西传染病最新消息今天本文主要来讲解6大标签#xff0c;以便更好的MyBatis操作数据库#xff01; if标签trim标签where标签set标签foreach标签include标签 前提需求#xff1a;
MyBatis是一个持久层框架#xff0c;和Spring没有任何关系…本文主要来讲解6大标签以便更好的MyBatis操作数据库 if标签trim标签where标签set标签foreach标签include标签 前提需求
MyBatis是一个持久层框架和Spring没有任何关系可以用来简化数据库的操作
创建工作
创建Spring Boot工程并导入MyBatis的起步依赖Mysql的依赖等 配置数据
#配置数据库的连接字符串
spring:datasource:url: jdbc:mysql://127.0.0.1:3306/mybatis_test?characterEncodingutf8username: rootpassword: 你自己设置的密码driver-class-name: com.mysql.cj.jdbc.Drivermybatis:configuration: # 配置打印 MyBatis 执行的 SQLlog-impl: org.apache.ibatis.logging.stdout.StdOutImplmap-underscore-to-camel-case: true #自动驼峰转换#配置mybatis xml的文件路径在resources/mapper创建所有表的xml文件mapper-locations: classpath:mapper/**Mapper.xml本文主要讲解MyBatis来操作数据库
然而操作数据库主要是用来增删改查四个方面因此本文着重于增删改查来讲解
在操作数据库之前我们需要创建一个数据库
-- 创建数据库
DROP DATABASE IF EXISTS mybatis_test;
CREATE DATABASE mybatis_test DEFAULT CHARACTER SET utf8mb4;
-- 使⽤数据数据
USE mybatis_test;
-- 创建表[⽤⼾表]
DROP TABLE IF EXISTS userinfo;
CREATE TABLE userinfo (id INT ( 11 ) NOT NULL AUTO_INCREMENT,username VARCHAR ( 127 ) NOT NULL,password VARCHAR ( 127 ) NOT NULL,age TINYINT ( 4 ) NOT NULL,gender TINYINT ( 4 ) DEFAULT 0 COMMENT 1-男 2-⼥ 0-默认,phone VARCHAR ( 15 ) DEFAULT NULL,delete_flag TINYINT ( 4 ) DEFAULT 0 COMMENT 0-正常, 1-删除,create_time DATETIME DEFAULT now(),update_time DATETIME DEFAULT now(),PRIMARY KEY ( id )
) ENGINE INNODB DEFAULT CHARSET utf8mb4;
-- 添加⽤⼾信息
INSERT INTO mybatis_test.userinfo ( username, password, age, gender, phone )
VALUES ( admin, admin, 18, 1, 18612340001 );
INSERT INTO mybatis_test.userinfo ( username, password, age, gender, phone )
VALUES ( zhangsan, zhangsan, 18, 1, 18612340002 );
INSERT INTO mybatis_test.userinfo ( username, password, age, gender, phone )
VALUES ( lisi, lisi, 18, 1, 18612340003 );
INSERT INTO mybatis_test.userinfo ( username, password, age, gender, phone )
VALUES ( wangwu, wangwu, 18, 1, 18612340004 ); 那么此时我们需要创建一个UserInfo类使其各个参数名称与数据库参数名称相同类似
Data
public class UserInfo {private Integer id;private String username;private String password;private Integer age;private Integer gender;private String phone;private Integer deleteFlag;private LocalDateTime createTime;private LocalDateTime updateTime;
} 值得注意的是由于Java参数名称语法的原因不能带有_(下划线因此Java中参数名称与数据库中参数名称出现了不一样的情况 另外还需要在application.xml中引入配置必须
mybatis:
# mapper-locations: classpath:mapper/*Mapper.xmlconfiguration: # 配置打印 MyBatis 执行的 SQLlog-impl: org.apache.ibatis.logging.stdout.StdOutImplmap-underscore-to-camel-case: true #自动驼峰转换#配置mybatis xml的文件路径在resources/mapper创建所有表的xml文件mapper-locations: classpath:mapper/**Mapper.xml新创建的UserInfoXMLMapper.xml文件中存储
?xml version1.0 encodingUTF-8?
!DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd
mapper namespacecom.example.mapper.UserInfoXMLMapper!-- UserInfoXMLMappe指的是要实现哪个接口要写接口的全限定类名包名类名 --/mapper
有了上述的前提我们便开始步入正题吧
if标签
比如我要注册某账号但是在填写信息页面有着必填项非必填项那么填写数据就需要往数据库增加某条数据但是对于一些数据我不确定要不要增加因此这就需要我们理性写SQL语句了
Mapper
public interface UserInfoXML2Mapper {//增Integer insert(UserInfo userInfo);}?xml version1.0 encodingUTF-8?
!DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd
mapper namespacecom.example.mapper.UserInfoXML2Mapper
!-- UserInfoXMLMappe指的是要实现哪个接口要写接口的全限定类名包名类名 --insert idinsertinsert into userinfo(trim suffixOverrides,iftestid ! nullid,/ififtestusername ! nullusername,/ififtestpassword ! nullpassword,/ififtestphone ! nullphone,/ififtestgender ! nullgender,/ififtestage ! nullage,/if/trim)values(trim suffixOverrides,iftestid ! null#{id},/ififtestusername ! null#{username},/ififtestpassword ! null#{password},/ififtestphone ! null#{phone},/ififtestgender ! null#{gender},/ififtestage ! null#{age},/if/trim)/insert/mapper
Spring Boot测试代码 SpringBootTest
Slf4j
class UserInfoXML2MapperTest {Autowiredprivate UserInfoXML2Mapper userInfoXML2Mapper;Testvoid insert() {UserInfo userInfonew UserInfo();userInfo.setId(47);userInfo.setAge(4);userInfo.setUsername(test);userInfo.setPassword(123456);userInfo.setPhone(13511111111);userInfo.setUpdateTime(LocalDateTime.now());userInfo.setCreateTime(LocalDateTime.now());userInfoXML2Mapper.insert(userInfo);}
}
代码的运行结果为 查询数据库为 当我们随机不输入几个参数的时候 具有选择性质的填写功能就可得以实现 MyBatis的if标签是一个功能强大的动态SQL元素它允许你在SQL语句中包含条件判断。以下是if标签的一些主要用法 字段非空判断你可以使用if标签来判断某个字段是否为空。如果字段不为空则在SQL语句中添加相应的条件。这对于避免因null值而导致的查询错误非常有用。参数比较if标签还可以用来判断传入的参数是否满足某些条件。例如你可以检查一个传入的参数是否等于某个特定值如果是则在SQL语句中添加相应的条件。逻辑组合if标签可以用于构建复杂的逻辑条件。你可以使用多个if标签来构建AND或OR的逻辑组合从而创建更加精确的查询条件。灵活的查询条件通过if标签你可以根据实体类属性的值来动态生成查询条件。这允许你根据实际需要包含或排除某些查询条件从而提高SQL语句的灵活性。OGNL表达式if标签的test属性必须填写它是一个OGNLObject-Graph Navigation Language表达式通常以true或false作为结果。这意味着你可以使用任何符合OGNL语法的表达式来进行条件判断。备选条件在某些情况下你可以使用if标签来提供备选条件。例如如果name字段无效你可能会选择使用nickName或id作为过滤条件。与其他标签结合if标签可以与其他MyBatis标签如trim、choose、when等结合使用以实现更复杂的SQL逻辑。 总的来说if标签是MyBatis动态SQL中一个非常有用的工具它允许开发者根据不同的条件构建灵活且强大的SQL语句。在实际开发中合理运用if标签可以帮助你编写更加简洁和高效的代码。 trim标签
简单来说trim标签有四个对应的属性添加前缀后缀删除前缀后缀该功能非常强大 rim标签在MyBatis中用于格式化SQL语句它可以添加前缀和后缀也可以覆盖掉内容的首部或尾部。具体来说trim标签有以下几种用法 包裹where条件使用trim标签可以去除WHERE或AND前的空格或逗号以及SELECT或SET后的空格或逗号。添加前缀和后缀通过prefix属性添加前缀suffix属性添加后缀。这些属性可以帮助构建完整的SQL语句。覆盖前缀和后缀prefixOverrides属性用于去除内容的首部某些内容suffixOverrides属性用于去除尾部的某些内容。这在构建复杂的SQL语句时非常有用。拼接select语句在拼接select语句的where部分时可以使用trim标签和prefixOverrides属性来消除可能存在的多余AND关键字。拼接insert语句在拼接insert语句时可以使用trim标签为表名后添加括号并消除末尾不需要的逗号。同时需要添加values (前缀和)后缀并消除末尾不需要的逗号。拼接update语句在拼接update语句的set部分时可以使用trim标签来消除末尾不需要的逗号。替代where或set标签trim标签可以完成where或set标签的功能使得SQL语句更加简洁和易于管理。组合使用trim标签可以与其他动态SQL标签如if、foreach等结合使用以实现更复杂的SQL逻辑。 总的来说trim标签是MyBatis中一个非常灵活且强大的工具它可以帮助开发者构建更加干净、高效的SQL语句。在实际开发中合理运用trim标签可以简化SQL语句的书写提高代码的可读性和可维护性。 ?xml version1.0 encodingUTF-8?
!DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd
mapper namespacecom.example.mapper.UserInfoXML2Mapper
!-- UserInfoXMLMappe指的是要实现哪个接口要写接口的全限定类名包名类名 --insert idinsertinsert into userinfotrim suffixOverrides, prefix( suffix)iftestid ! nullid,/ififtestusername ! nullusername,/ififtestpassword ! nullpassword,/ififtestphone ! nullphone,/ififtestgender ! nullgender,/ififtestage ! nullage,/if/trimvaluestrim suffixOverrides, prefix( suffix)iftestid ! null#{id},/ififtestusername ! null#{username},/ififtestpassword ! null#{password},/ififtestphone ! null#{phone},/ififtestgender ! null#{gender},/ififtestage ! null#{age},/if/trim/insertinsert idinsert2insert into userinfo(trim suffixOverrides,iftestid ! nullid,/ififtestusername ! nullusername,/ififtestpassword ! nullpassword,/if/trim)values(trim suffixOverrides,iftestid ! null#{id},/ififtestusername ! null#{username},/ififtestpassword ! null#{password},/if/trim)/insert/mapper where标签
比如我要删除某条数据但是我需要根据参数id或者参数username或者参数age等各种参数来进行筛选一下因此这就需要我们理性写SQL语句了
Mapper
public interface UserInfoXML2Mapper {//删Integer delete(UserInfo userInfo);}?xml version1.0 encodingUTF-8?
!DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd
mapper namespacecom.example.mapper.UserInfoXML2Mapper!-- UserInfoXMLMappe指的是要实现哪个接口要写接口的全限定类名包名类名 --delete iddeletedelete from userinfotrim suffixOverrides,whereiftestid ! nullid #{id}/ififtestusername ! nulland username #{username}/ififtestpassword ! nulland password #{password}/if/where/trim/delete/mapper
Spring Boot测试代码
SpringBootTest
Slf4j
class UserInfoXML2MapperTest {Autowiredprivate UserInfoXML2Mapper userInfoXML2Mapper;Testvoid delete() {UserInfo userInfonew UserInfo();userInfo.setId(45);// userInfo.setUsername(trim标签);// userInfo.setPassword(123456);userInfoXML2Mapper.delete(userInfo);}
}代码的运行结果为; 查看数据库 MyBatis的标签是一个用于动态生成SQL语句中的WHERE子句的标签。它的主要作用是自动处理WHERE关键字和AND关键字之间的空格以及去除多余的逗号。以下是标签的一些主要用法 自动处理WHERE关键字当使用标签时MyBatis会自动在WHERE关键字前添加一个空格并在AND关键字前添加一个空格。这样可以避免手动编写这些空格减少代码量并提高可读性。去除多余逗号在使用标签时如果条件列表中存在多个条件MyBatis会自动去除最后一个条件的末尾逗号。这可以避免手动编写这些逗号减少代码量并提高可读性。组合使用标签可以与其他动态SQL标签如if、foreach等结合使用以实现更复杂的SQL逻辑。例如你可以使用标签来构建包含多个条件的查询语句然后使用if标签来判断某些条件是否满足从而动态地生成最终的SQL语句。嵌套使用标签可以嵌套在其他标签内部使用以实现更复杂的SQL逻辑。例如你可以使用一个标签来构建主查询条件然后在另一个标签中使用if标签来判断某些条件是否满足从而动态地生成最终的SQL语句。灵活的查询条件通过标签你可以根据实体类属性的值来动态生成查询条件。这允许你根据实际需要包含或排除某些查询条件从而提高SQL语句的灵活性。简化代码使用标签可以减少手动编写SQL语句时的代码量使代码更加简洁易读。 总的来说标签是MyBatis动态SQL中一个非常有用的工具它可以帮助开发者自动处理WHERE关键字和AND关键字之间的空格以及去除多余的逗号。在实际开发中合理运用标签可以帮助你编写更加简洁和高效的代码。 set标签
在某app中我们需要经常的更改某些个人信息啥的但是对于很多的个人信息有些需要改有些又不想改那么我们该如何处理呢因此这就需要我们理性写SQL语句了
Mapper
public interface UserInfoXML2Mapper {//改Integer update(UserInfo userInfo);}?xml version1.0 encodingUTF-8?
!DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd
mapper namespacecom.example.mapper.UserInfoXML2Mapper!-- UserInfoXMLMappe指的是要实现哪个接口要写接口的全限定类名包名类名 --update idupdateupdate userinfotrim suffixOverrides,setif testphone ! nullphone #{phone},/ifif testage ! nullage #{age},/if/setwhereif testid ! nullid #{id}/if/where/trim/update/mapper
Spring Boot测试代码 SpringBootTest
Slf4j
class UserInfoXML2MapperTest {Autowiredprivate UserInfoXML2Mapper userInfoXML2Mapper;Testvoid update() {log.info(userInfoXML2Mapper.update());UserInfo userInfonew UserInfo();userInfo.setAge(3);userInfo.setPhone(1099);userInfo.setId(5);// userInfo.setUsername(test);userInfoXML2Mapper.update(userInfo);}
}
代码的运行结果为 查看数据库 set标签在MyBatis中用于动态构建UPDATE语句的SET部分主要用于更新列信息。以下是它的一些用法特点 动态包含列set标签可以动态地包含需要更新的列忽略那些不需要更新的列这样可以避免在SQL语句中出现多余的逗号。结合if使用通常set标签会和if标签一起使用以便根据条件来决定是否包含某个列的更新。例如只有当某个属性值不为空时才在SET子句中包含该属性的更新。去除多余逗号set标签还具有自动去除末尾多余逗号的功能这有助于保持SQL语句的整洁性。简化代码使用set标签可以减少代码量使得编写的SQL语句更加简洁和易于维护。示例用法在编写UPDATE语句时可以使用标签包裹一系列的标签每个标签内包含一个属性的更新条件。例如如果用户的name或gender属性不为空则在SET子句中添加相应的更新语句。 总的来说set标签是MyBatis动态SQL中一个非常实用的工具它可以帮助开发者更灵活地构建UPDATE语句实现对数据库记录的精确更新。在实际开发中合理运用set标签可以提高代码的效率和可读性。 foreach标签 MyBatis的标签是一个用于动态生成SQL语句中的循环结构的标签。它的主要作用是遍历一个集合或数组并根据集合中的元素生成相应的SQL语句片段。以下是标签的一些主要用法 遍历集合标签可以遍历一个集合或数组并根据集合中的元素生成相应的SQL语句片段。例如你可以使用标签来遍历一个用户列表并为每个用户生成一条INSERT语句。动态构建IN子句标签可以用于动态构建SQL语句中的IN子句以便根据集合中的元素生成多个条件。例如你可以使用标签来遍历一个ID列表并生成一个包含多个ID条件的IN子句。结合其他标签使用标签通常与其他动态SQL标签如if、choose等结合使用以实现更复杂的SQL逻辑。例如你可以使用标签遍历一个订单列表并结合if标签来判断订单状态是否满足某个条件从而动态地生成相应的SQL语句。嵌套使用标签可以嵌套在其他标签内部使用以实现更复杂的SQL逻辑。例如你可以使用一个标签来遍历一个部门列表然后在另一个标签中使用if标签来判断某个部门下的员工数量是否满足某个条件从而动态地生成最终的SQL语句。示例用法在编写SELECT语句时可以使用标签遍历一个ID列表并生成一个包含多个ID条件的WHERE子句。例如如果需要查询ID为1、2、3的用户信息可以使用以下代码 select idselectUsers resultTypeUserSELECT * FROM user WHERE id INforeach itemid collectionids open( separator, close)#{id}/foreach
/select在这个例子中collectionids表示你要遍历的集合名为idsitemid表示集合中每个元素的别名为idopen(和close)定义了整个IN子句的开始和结束字符而separator,则定义了集合中每个元素之间的分隔符。这样如果ids集合包含[1, 2, 3]那么生成的SQL语句将会是 SELECT * FROM user WHERE id IN (1, 2, 3)总的来说标签是MyBatis动态SQL中一个非常实用的工具它可以帮助开发者更灵活地构建SQL语句实现对数据库记录的精确查询和更新。在实际开发中合理运用标签可以提高代码的效率和可读性。 include标签 MyBatis的标签用于引用其他映射文件中的内容可以将多个映射文件组合在一起提高代码复用性和可维护性。 具体来说当你需要在不同的映射文件中使用相同的SQL片段时你可以将这些SQL片段定义在一个单独的映射文件中然后在其他映射文件中使用标签来引用这些SQL片段。这样可以避免重复编写相同的SQL语句提高代码的可读性和可维护性。 例如假设你有一个名为common.xml的映射文件其中包含了一些常用的SQL片段 !-- common.xml --
sql idselectColumnsid, name, age
/sqlsql idorderByAgeDescORDER BY age DESC
/sql然后在另一个映射文件中你可以使用标签来引用这些SQL片段 !-- userMapper.xml --
select idselectUsers resultTypeUserSELECTinclude refidselectColumns/FROM userinclude refidorderByAgeDesc/
/select在这个例子中include refidselectColumns/表示引用了common.xml文件中的selectColumns SQL片段而include refidorderByAgeDesc/则表示引用了common.xml文件中的orderByAgeDesc SQL片段。这样你就可以在不同的映射文件中共享相同的SQL片段提高代码的复用性和可维护性
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/88212.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!