电子商务网站建设对毕业设计,wordpress 边栏,电商网站新闻怎么做的,app开发网上app开发文章目录 1 MyBatis概述2 MyBatis入门2.1 相关依赖2.2 properties配置文件2.3 预编译SQL 3 基本操作3.1 新增操作3.2 删除操作3.3 更新操作3.4 查询操作 4 动态SQL4.1 XML映射文件4.2 if/set/where标签4.3 foreach标签4.4 sql/include标签 5 参考资料 1 MyBatis概述
MyBatis是… 文章目录 1 MyBatis概述2 MyBatis入门2.1 相关依赖2.2 properties配置文件2.3 预编译SQL 3 基本操作3.1 新增操作3.2 删除操作3.3 更新操作3.4 查询操作 4 动态SQL4.1 XML映射文件4.2 if/set/where标签4.3 foreach标签4.4 sql/include标签 5 参考资料 1 MyBatis概述
MyBatis是一款优秀的持久层即数据访问层框架它支持定制化SQL、存储过程避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解来配置和映射原生信息将接口和Java对象映射成数据库中的记录。
官网https://mybatis.org/mybatis-3/zh/index.html 2 MyBatis入门
2.1 相关依赖
创建Spring Boot工程并导入MyBatis Framework、MySQL Driver。 dependenciesdependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactIdversion3.0.3/version/dependencydependencygroupIdcom.mysql/groupIdartifactIdmysql-connector-j/artifactIdscoperuntime/scope/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependencydependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter-test/artifactIdversion3.0.3/versionscopetest/scope/dependency/dependenciesLombok工具包通过注解的形式自动生成构造器、getter、setter、equals、hashcode、toString等方法并可以自动化生成日志变量简化java开发、提高效率。 Data Getter Setter ToString EqualsAndHashCode为所有的属性提供get方法、set方法生成易阅读的 toString 方法自动重写 equals 方法和 hashCode 方法。 NoArgsConstructor为实体类生成无参的构造器方法。 AllArgsConstructor为实体类生成除了static修饰的字段之外带有各参数的构造器方法。 dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdoptionaltrue/optional/dependency2.2 properties配置文件
在Spring Boot项目中可以编写application.properties文件配置数据库连接信息包括driver-class-name、url 、usernamepassword。同时可以根据需要进行其他配置。
# 数据库连接信息
spring.datasource.driver-class-namecom.mysql.cj.jdbc.Driver
spring.datasource.urljdbc:mysql://localhost:3306/mybatis
spring.datasource.usernameroot
spring.datasource.password1234# 将MyBatis日志输出到控制台
mybatis.configuration.log-implorg.apache.ibatis.logging.stdout.StdOutImpl# 自动将下划线命名的字段名按驼峰命名规则映射
mybatis.configuration.map-underscore-to-camel-casetrue2.3 预编译SQL
编译一次之后会将编译后的SQL语句缓存起来后面再次执行这条语句时不会再次编译只是输入的参数不同。同时能将敏感字进行转义保障SQL的安全性防止SQL注入。 在Mybatis中提供的参数占位符有两种${…} 、#{…} #{…}执行SQL时会将#{…}替换为 ? ? ?生成预编译SQL会自动设置参数值一般用于参数传递项目开发中更推荐使用。 ${…}拼接SQL直接将参数拼接在SQL语句中存在SQL注入问题如果对表名、列表进行动态设置时使用。 3 基本操作
3.1 新增操作
Mapper注解MyBatis框架中的注解用于标注数据访问层的接口。
Insert注解用于编写INSERT操作的SQL语句。
Options注解可以用于设置缓存时间或为对象生成自增的主键值。
Mapper
public interface EmpMapper {Options(useGeneratedKeys true,keyProperty id)Insert(INSERT INTO emp(username, name, gender, job, entry_date, dept_id, create_time, update_time) VALUES(#{username},#{name},#{gender},#{job},#{entryDate},#{dept},#{createTime},#{updateTime}))void insertEmp(Emp emp);
}3.2 删除操作
Delete注解用于编写DELETE操作的SQL语句。
Mapper
public interface EmpMapper {Delete(DELETE FROM emp WHERE id#{id})void deleteEmpById(Integer id);
}3.3 更新操作
Update注解用于编写UPDATE操作的SQL语句。
Mapper
public interface EmpMapper {Update(UPDATE emp SET username#{username},name#{name},image#{image},update_time#{updateTime} WHERE id#{id})void updateEmp(Emp emp);
}3.4 查询操作
Select注解
Mapper
public interface EmpMapper {Select(SELECT id, username, password, name, gender, image, job, entry_date, dept_id, create_time, update_time FROM emp WHERE id#{id})Emp selectEmpById(Integer id);
}4 动态SQL
4.1 XML映射文件
实现复杂的SQL功能建议使用XML来配置映射语句在Mybatis中使用XML映射文件方式开发需要符合一定的规范 XML映射文件的名称与Mapper接口名称一致并且将XML映射文件和Mapper接口放置在Resource中相同包下 XML映射文件的namespace属性为Mapper接口全限定名一致 XML映射文件中sql语句的id与Mapper接口中的方法名一致并保持返回类型一致。 4.2 if/set/where标签
if用于判断条件是否成立。使用test属性进行条件判断如果条件为true则拼接SQL。
if test条件表达式要拼接的sql语句
/ifwhere只会在子元素有内容的情况下才插入WHERE子句而且会自动去除子句的开头的AND或OR。
set动态的在SQL语句中插入SET关键字并会删掉额外的逗号。
EmpMapper.java
Mapper
public interface EmpMapper {void updateEmp2(Emp emp);
}EmpMapper.xml
?xml version1.0 encodingUTF-8 ?
!DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtdmapper namespacecom.example.mapper.EmpMapperupdate idupdateEmp2UPDATE empsetif testusername!nullusername#{username},/ifif testname!nullname#{name},/ifif testimage!nullimage#{image},/ifif testupdateTime!nullupdate_time#{updateTime}/ifWHERE id#{id}/set/update/mapper4.3 foreach标签
foreach遍历集合内的参数并进行拼接。
foreach collection集合名称 item集合遍历出来的元素/项 separator每一次遍历使用的分隔符 open遍历开始前拼接的片段 close遍历结束后拼接的片段
/foreachEmpMapper.java
Mapper
public interface EmpMapper {void deleteEmpByIds(ListInteger ids);
}EmpMapper.xml
?xml version1.0 encodingUTF-8 ?
!DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtdmapper namespacecom.example.mapper.EmpMapperdelete iddeleteEmpByIdsDELETE FROM emp WHERE id inforeach collectionids itemid separator, open( close)#{id}/foreach/delete/mapper4.4 sql/include标签
sql定义可重用的SQL片段。
include通过属性refid指定包含的SQL片段。
EmpMapper.java
Mapper
public interface EmpMapper {void updateEmp2(Emp emp);
}EmpMapper.xml
?xml version1.0 encodingUTF-8 ?
!DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtdmapper namespacecom.example.mapper.EmpMappersql idcommonSelectSELECT id, username, password, name, gender, image, job, entry_date, dept_id, create_time, update_timeFROM emp/sqlselect idselectEmpByCondition resultTypecom.example.pojo.Empinclude refidcommonSelect/whereif testname!nullname LIKE CONCAT(%,#{name},%)/ifif testgender!nullAND gender#{gender}/ifif testbegin!null and end!nullAND entry_date BETWEEN #{begin} AND #{end}/ifORDER BY update_time DESC/where/select/mapper5 参考资料
黑马程序员JavaWeb开发教程-bilibili