当前位置: 首页 > news >正文

教育网站制作设计社交电商软件开发

教育网站制作设计,社交电商软件开发,推广软文案例,o2o电子商务模式是指MyBatis从入门到精通#xff1a;一站式学习指南 作为一款优秀的半自动ORM框架#xff0c;MyBatis以其灵活的SQL控制和简洁的配置方式#xff0c;成为Java后端开发中持久层框架的首选。本文将从基础概念到高级特性#xff0c;全面讲解MyBatis的使用方法#xff0c;包含实用…MyBatis从入门到精通一站式学习指南 作为一款优秀的半自动ORM框架MyBatis以其灵活的SQL控制和简洁的配置方式成为Java后端开发中持久层框架的首选。本文将从基础概念到高级特性全面讲解MyBatis的使用方法包含实用代码示例和最佳实践。 一、MyBatis核心概念 1. 什么是MyBatis MyBatis是一款半自动ORM对象关系映射框架本质是对JDBC的封装。与全自动ORM框架如Hibernate不同MyBatis需要开发者手动编写SQL语句但免除了JDBC中繁琐的连接管理、参数设置和结果集解析工作。 其核心优势在于 支持自定义SQL便于复杂查询和性能优化强大的结果映射能力自动完成数据库记录与Java对象的转换轻量灵活易于集成Spring等主流框架适用于高并发、大数据量的互联网项目 2. 核心组件 MyBatis的工作流程依赖于以下核心组件 SqlSessionFactory会话工厂由SqlSessionFactoryBuilder根据配置文件创建全局唯一SqlSession数据库会话对象用于执行SQL操作生命周期为方法级Mapper接口定义数据库操作方法的接口无需实现类MyBatis通过动态代理生成实现映射文件存储SQL语句和映射规则与Mapper接口对应 二、环境搭建Maven 1. 引入依赖 在pom.xml中添加MyBatis核心依赖和数据库驱动 dependencies!-- MyBatis核心包 --dependencygroupIdorg.mybatis/groupIdartifactIdmybatis/artifactIdversion3.5.7/version/dependency!-- MySQL驱动 --dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion8.0.26/version/dependency!-- 单元测试 --dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.12/versionscopetest/scope/dependency /dependencies2. 核心配置文件 创建mybatis-config.xml放在resources目录下配置数据库连接和映射文件 ?xml version1.0 encodingUTF-8? !DOCTYPE configurationPUBLIC -//mybatis.org//DTD Config 3.0//ENhttp://mybatis.org/dtd/mybatis-3-config.dtd configuration!-- 环境配置 --environments defaultmysqlenvironment idmysqltransactionManager typeJDBC/dataSource typePOOLEDproperty namedriver valuecom.mysql.cj.jdbc.Driver/property nameurl valuejdbc:mysql://localhost:3306/mybatis_db?serverTimezoneUTC/property nameusername valueroot/property namepassword valueroot//dataSource/environment/environments!-- 注册映射文件 --mappersmapper resourcemapper/UserMapper.xml//mappers /configuration三、基本CRUD操作 1. 定义实体类 创建与数据库表对应的POJO类 public class User {private Integer id;private String username;private String sex;private String address;// 省略getter、setter和toString方法 }2. Mapper接口与映射文件 1Mapper接口 public interface UserMapper {// 查询所有用户ListUser findAll();// 根据ID查询User findById(Integer id);// 新增用户void add(User user);// 更新用户void update(User user);// 删除用户void delete(Integer id); }2映射文件UserMapper.xml ?xml version1.0 encodingUTF-8? !DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.example.mapper.UserMapper!-- 查询所有 --select idfindAll resultTypecom.example.pojo.Userselect * from user/select!-- 根据ID查询 --select idfindById parameterTypeint resultTypecom.example.pojo.Userselect * from user where id #{id}/select!-- 新增 --insert idadd parameterTypecom.example.pojo.Userinsert into user(username, sex, address) values(#{username}, #{sex}, #{address})/insert!-- 更新 --update idupdate parameterTypecom.example.pojo.Userupdate user set username #{username}, sex #{sex}, address #{address} where id #{id}/update!-- 删除 --delete iddelete parameterTypeintdelete from user where id #{id}/delete /mapper3. 测试代码 public class UserMapperTest {private SqlSession session;private UserMapper userMapper;Beforepublic void init() throws IOException {// 读取配置文件InputStream is Resources.getResourceAsStream(mybatis-config.xml);// 创建SqlSessionFactorySqlSessionFactory factory new SqlSessionFactoryBuilder().build(is);// 获取SqlSessionsession factory.openSession();// 获取Mapper代理对象userMapper session.getMapper(UserMapper.class);}Testpublic void testFindAll() {ListUser users userMapper.findAll();users.forEach(System.out::println);}Testpublic void testAdd() {User user new User();user.setUsername(张三);user.setSex(男);user.setAddress(北京);userMapper.add(user);session.commit(); // 手动提交事务}Afterpublic void destroy() {session.close();} }注意MyBatis的事务默认手动提交执行增删改操作后需调用session.commit()。四、动态SQL 动态SQL是MyBatis的强大特性可根据条件动态生成SQL片段避免手动拼接SQL的繁琐和错误。 1. if标签条件判断 select idfindByCondition parameterTypecom.example.pojo.User resultTypecom.example.pojo.Userselect * from userwhereif testusername ! null and username ! and username like #{username}/ifif testsex ! null and sex ! and sex #{sex}/if/where /selectwhere标签会自动处理多余的AND替代传统的where 11写法 2. foreach标签遍历集合 用于批量操作如批量删除 delete iddeleteBatch parameterTypeintdelete from user where id inforeach collectionarray open( close) separator, itemid#{id}/foreach /deletecollection集合类型数组用arrayList用listitem遍历的元素名open/closeSQL片段的开始/结束符separator元素间的分隔符 3. choose标签多条件分支 类似Java的switch-case select idfindByLevel parameterTypeUser resultTypeUserselect * from userwherechoosewhen testlevel 1and age lt; 18/whenwhen testlevel 2and age between 18 and 30/whenotherwiseand age gt; 30/otherwise/choose/where /select五、缓存机制 MyBatis提供两级缓存用于减少数据库交互提高查询效率。 1. 一级缓存 作用域SqlSession会话级特性默认开启同一SqlSession内的相同查询会复用缓存失效场景执行增删改操作、调用clearCache()或commit()、关闭SqlSession Test public void testL1Cache() {// 第一次查询从数据库获取User user1 userMapper.findById(1);// 第二次查询从一级缓存获取User user2 userMapper.findById(1);System.out.println(user1 user2); // true }2. 二级缓存 作用域SqlSessionFactory应用级特性需手动开启同一工厂创建的SqlSession共享缓存要求缓存的POJO需实现Serializable接口 开启步骤 配置全局开关mybatis-config.xml settingssetting namecacheEnabled valuetrue/ /settings在映射文件中声明缓存 mapper namespacecom.example.mapper.UserMappercache size1024/ !-- 开启二级缓存 --!-- SQL语句... -- /mapper实体类实现序列化 public class User implements Serializable {// 字段和方法... }六、关联查询 MyBatis支持一对一、一对多等关联查询通过association和collection标签实现。 1. 一对一查询如学生-班级 resultMap idstudentMap typecom.example.pojo.Studentid propertyid columnsid/result propertyname columnsname/!-- 关联班级对象 --association propertyclazz columncid javaTypecom.example.pojo.Clazzid propertyid columncid/result propertyname columncname//association /resultMapselect idfindStudentWithClazz resultMapstudentMapselect s.id sid, s.name sname, c.id cid, c.name cnamefrom student s left join clazz c on s.cid c.id /select2. 一对多查询如班级-学生 resultMap idclazzMap typecom.example.pojo.Clazzid propertyid columncid/result propertyname columncname/!-- 关联学生集合 --collection propertystudents columncid ofTypecom.example.pojo.Studentid propertyid columnsid/result propertyname columnsname//collection /resultMapselect idfindClazzWithStudents resultMapclazzMapselect c.id cid, c.name cname, s.id sid, s.name snamefrom clazz c left join student s on c.id s.cid /select七、MyBatis Generator自动生成代码 MyBatis GeneratorMBG是官方代码生成器可根据数据库表自动生成POJO、Mapper接口和映射文件减少重复工作。 1. 配置MBG插件pom.xml buildpluginsplugingroupIdorg.mybatis.generator/groupIdartifactIdmybatis-generator-maven-plugin/artifactIdversion1.3.7/versionconfigurationconfigurationFilesrc/main/resources/generatorConfig.xml/configurationFileoverwritetrue/overwrite/configuration/plugin/plugins /build2. 编写配置文件generatorConfig.xml ?xml version1.0 encodingUTF-8? !DOCTYPE generatorConfigurationPUBLIC -//mybatis.org//DTD MyBatis Generator Configuration 1.0//ENhttp://mybatis.org/dtd/mybatis-generator-config_1_0.dtd generatorConfiguration!-- 数据库驱动路径 --classPathEntry locationF:/maven/repository/mysql/mysql-connector-java/8.0.26/mysql-connector-java-8.0.26.jar/context idmysql targetRuntimeMyBatis3!-- 去除注释 --commentGeneratorproperty namesuppressAllComments valuetrue//commentGenerator!-- 数据库连接 --jdbcConnection driverClasscom.mysql.cj.jdbc.DriverconnectionURLjdbc:mysql://localhost:3306/mybatis_dbuserIdrootpasswordroot/!-- 生成POJO --javaModelGenerator targetPackagecom.example.pojo targetProjectsrc/main/java/!-- 生成映射文件 --sqlMapGenerator targetPackagemapper targetProjectsrc/main/resources/!-- 生成Mapper接口 --javaClientGenerator typeXMLMAPPERtargetPackagecom.example.mappertargetProjectsrc/main/java/!-- 指定表 --table tableNameuser//context /generatorConfiguration3. 运行生成命令 在Maven插件中执行mybatis-generator:generate自动生成以下文件 User.javaPOJO类UserMapper.javaMapper接口UserMapper.xml映射文件UserExample.java复杂查询条件构建类 八、分页插件PageHelper PageHelper是MyBatis常用的分页插件可简化分页查询实现。 1. 引入依赖 dependencygroupIdcom.github.pagehelper/groupIdartifactIdpagehelper/artifactIdversion5.3.0/version /dependency2. 配置插件mybatis-config.xml pluginsplugin interceptorcom.github.pagehelper.PageInterceptorproperty namehelperDialect valuemysql//plugin /plugins3. 使用示例 Test public void testPage() {// 设置分页参数页码从1开始每页3条PageHelper.startPage(1, 3);// 执行查询ListUser users userMapper.findAll();// 封装分页结果PageInfoUser pageInfo new PageInfo(users);System.out.println(总条数 pageInfo.getTotal());System.out.println(总页数 pageInfo.getPages());System.out.println(当前页数据 pageInfo.getList()); }总结 MyBatis以其灵活性和高效性在Java持久层框架中占据重要地位。本文从环境搭建到高级特性涵盖了MyBatis的核心用法包括CRUD操作、动态SQL、缓存机制、关联查询等。掌握这些内容后可轻松应对日常开发中的数据库操作需求。 建议在实际项目中根据场景选择XML配置或注解开发XML更适合复杂SQL注解更简洁并合理使用缓存和分页插件优化性能。
http://www.zqtcl.cn/news/903563/

相关文章:

  • 国外mod大型网站财税公司
  • 一个很好的个人网站开发做一个简单网页多少钱
  • 东莞在哪里学网站建设网站建设团队与分工
  • 网站功能插件昆明网站建设技术研发中心
  • 网站开发培训中心 市桥移动端ui
  • 高碑店地区网站建设上海排名十大装潢公司
  • 无锡自助建站网站还是新能源专业好
  • pc 手机网站 微站如何建设与维护网站
  • 大学生兼职网站开发毕设论文杭州网络排名优化
  • 做教育机器网站网站建设的步骤图
  • 桔子建站是什么平台郑州公司注册网上核名
  • 网站开发技能有哪些网站建设艾金手指科杰
  • 网站建设挂什么费用网站建设学那些课
  • 网站定位与功能分析在互联网公司做网站
  • 安阳网站建设兼职做网站推广有哪些公司
  • 网站制作的一般过程怎么用手机搭建网站
  • 备案 网站名称 怎么改深圳建网站公司
  • html 企业网站模板网站策划书免费
  • 网站建设销售ppt拖拽建站系统源码
  • 网站托管费用多少网站的开发流程
  • 周到的商城网站建设北京品牌网站
  • 网站开发费用属于什么科目网站建设考试多选题
  • c asp做网站wordpress4.5.2文章采集
  • 百度网站建设电话建立网站站建设可以吗
  • 网站后台代码在哪修改网站如何做下一页
  • 网站开发职业要求百度推广代理商与总公司的区别
  • 西安网站建设中心网页 网 址网站区别
  • 技术支持东莞网站建设机械seo岗位是什么意思
  • 做商城网站需要备案什么域名硬件开发工具有哪些
  • 网络网站制作技巧wordpress全文