easyui做的网站网页界面设计作品推荐
2026/5/21 8:41:50 网站建设 项目流程
easyui做的网站,网页界面设计作品推荐,东莞市电池网站建设,delphi 做直播网站文章目录第8章#xff1a;从jdbc到MyBatisJDBC操作数据库原生JDBC访问数据库缺点和ORM框架介绍Mybatis基础知识SpringMybatis快速入门第8章#xff1a;从jdbc到MyBatis JDBC操作数据库 JDBC核心概念 Java Database Connectivity#xff08;Java数据库连接#xff09;Jav…文章目录第8章从jdbc到MyBatisJDBC操作数据库原生JDBC访问数据库缺点和ORM框架介绍Mybatis基础知识SpringMybatis快速入门第8章从jdbc到MyBatisJDBC操作数据库JDBC核心概念Java Database ConnectivityJava数据库连接Java访问数据库的标准API提供统一的数据库访问接口JDBC核心组件DriverManager驱动管理器Connection数据库连接Statement/PreparedStatementSQL语句执行器ResultSet结果集// 原生JDBC示例publicclassJdbcExample{publicstaticvoidmain(String[]args){Connectionconnnull;PreparedStatementpstmtnull;ResultSetrsnull;try{// 1. 加载数据库驱动Class.forName(com.mysql.cj.jdbc.Driver);// 2. 建立数据库连接connDriverManager.getConnection(jdbc:mysql://localhost:3306/test_db,root,123456);// 3. 创建PreparedStatement执行SQLStringsqlSELECT id, name, age FROM user WHERE age ?;pstmtconn.prepareStatement(sql);pstmt.setInt(1,18);// 4. 执行查询并处理结果集rspstmt.executeQuery();while(rs.next()){intidrs.getInt(id);Stringnamers.getString(name);intagers.getInt(age);System.out.printf(ID: %d, Name: %s, Age: %d%n,id,name,age);}}catch(Exceptione){e.printStackTrace();}finally{// 5. 关闭资源try{if(rs!null)rs.close();if(pstmt!null)pstmt.close();if(conn!null)conn.close();}catch(SQLExceptione){e.printStackTrace();}}}}原生JDBC访问数据库缺点和ORM框架介绍原生JDBC的主要缺点缺点描述影响代码冗余重复的创建连接、关闭资源代码开发效率低代码臃肿硬编码SQL与Java代码混合维护困难可读性差手动映射需要手动将ResultSet映射为对象容易出错工作量大异常处理需要处理大量checked异常代码繁琐易遗漏连接管理手动管理数据库连接性能差资源泄露风险ORM框架介绍Object-Relational Mapping对象关系映射将数据库表与Java对象建立映射关系自动完成对象与关系数据的转换主流ORM框架对比框架优点缺点适用场景MyBatisSQL灵活学习成本低需要手动编写SQL复杂SQL性能要求高Hibernate全自动功能强大学习曲线陡峭SQL优化难简单CRUD快速开发JPA标准规范移植性好功能相对简单标准企业应用Mybatis基础知识MyBatis核心概念SqlSessionFactory会话工厂创建SqlSessionSqlSession数据库会话执行SQL操作Mapper接口数据访问接口Mapper XMLSQL映射文件MyBatis架构层次应用程序 ↓ Mapper接口 ↓ SqlSession ↓ Executor执行器 ↓ StatementHandler ↓ 数据库MyBatis核心配置文件结构!-- mybatis-config.xml --?xml version1.0 encodingUTF-8 ?!DOCTYPEconfigurationPUBLIC-//mybatis.org//DTD Config 3.0//ENhttp://mybatis.org/dtd/mybatis-3-config.dtdconfigurationsettings!-- 开启驼峰命名自动映射 --settingnamemapUnderscoreToCamelCasevaluetrue//settingstypeAliases!-- 类型别名配置 --typeAliasaliasUsertypecom.example.entity.User//typeAliasesenvironmentsdefaultdevelopmentenvironmentiddevelopmenttransactionManagertypeJDBC/dataSourcetypePOOLEDpropertynamedrivervaluecom.mysql.cj.jdbc.Driver/propertynameurlvaluejdbc:mysql://localhost:3306/test_db/propertynameusernamevalueroot/propertynamepasswordvalue123456//dataSource/environment/environmentsmappers!-- Mapper文件配置 --mapperresourcemapper/UserMapper.xml//mappers/configurationSpringMybatis快速入门项目配置!-- pom.xml --dependencies!-- SpringBoot Starter --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency!-- MyBatis SpringBoot Starter --dependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactIdversion3.0.3/version/dependency!-- MySQL驱动 --dependencygroupIdcom.mysql/groupIdartifactIdmysql-connector-j/artifactIdscoperuntime/scope/dependency!-- Lombok --dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdoptionaltrue/optional/dependency/dependencies创建表和添加数据CREATETABLEuser(id BIGINT AUTO_INCREMENTPRIMARYKEY,usernameVARCHAR(50)NOTNULLUNIQUE,emailVARCHAR(100)NOTNULLUNIQUE,age INT,create_timeDATETIME(6)DEFAULTCURRENT_TIMESTAMP(6),update_timeDATETIME(6)DEFAULTCURRENT_TIMESTAMP(6)ONUPDATECURRENT_TIMESTAMP(6),INDEXidx_username(username),INDEXidx_email(email),INDEXidx_create_time(create_time))ENGINEInnoDBDEFAULTCHARSETutf8mb4 COLLATEutf8mb4_unicode_ci;INSERTINTOuser(username,email,age)VALUES(zhangsan, zhangsanexample.com,25);INSERTINTOuser(username,email,age)VALUES(lisi,lisiexample.com,30);INSERTINTOuser(username,email,age)VALUES(wangwu,wangwuexample.com,28);INSERTINTOuser(username,email)VALUES(zhaoliu, zhaoliuexample.com);INSERTINTOuser(username,email,age)VALUES(sunqi,sunqiexample.com,35),(zhouba,zhoubaexample.com,22),(wujiu,wujiuexample.com,29);应用配置文件# application.ymlspring:datasource:url:jdbc:mysql://localhost:3306/mybatis_demousername:rootpassword:123456driver-class-name:com.mysql.cj.jdbc.Driver# MyBatis配置mybatis:# Mapper XML文件位置mapper-locations:classpath:mapper/*.xml# 实体类包路径type-aliases-package:com.example.entityconfiguration:# 开启驼峰命名自动映射map-underscore-to-camel-case:true# 控制台打印SQLlog-impl:org.apache.ibatis.logging.stdout.StdOutImpl实体类// 用户实体类DatapublicclassUser{privateLongid;privateStringusername;privateStringemail;privateIntegerage;privateLocalDateTimecreateTime;privateLocalDateTimeupdateTime;}mapper接口定义MapperpublicinterfaceUserMapper{/** * 根据ID查询用户 */UserfindById(Longid);/** * 查询所有用户 */ListUserfindAll();/** * 根据用户名查询 */UserfindByUsername(Stringusername);}mapper xml配置!-- src/main/resources/mapper/UserMapper.xml --?xml version1.0 encodingUTF-8 ?!DOCTYPEmapperPUBLIC-//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtdmappernamespacecom.example.mapper.UserMapper!-- 根据ID查询用户 --selectidfindByIdparameterTypeLongresulTypecom.xd.entity.UserSELECT id, username, email, age, create_time, update_time FROM users WHERE id #{id}/select!-- 查询所有用户 --selectidfindAllresulTypeUserSELECT id, username, email, age, create_time, update_time FROM users ORDER BY id DESC/select!-- 根据用户名查询 --selectidfindByUsernameparameterTypeStringresulTypeUserSELECT id, username, email, age, create_time, update_time FROM users WHERE username #{username}/select/mapperservice层实现ServicepublicclassUserService{AutowiredprivateUserMapperuserMapper;/** * 根据ID获取用户 */publicUsergetUserById(Longid){returnuserMapper.findById(id);}/** * 获取所有用户 */publicListUsergetAllUsers(){returnuserMapper.findAll();}/** * 根据用户名查询用户 */publicUsergetUserByUsername(Stringusername){returnuserMapper.findByUsername(username);}}controller层实现RestControllerRequestMapping(/api/users)publicclassUserController{AutowiredprivateUserServiceuserService;/** * 根据ID查询用户 */GetMapping(/{id})publicResponseEntityUsergetUserById(PathVariableLongid){UseruseruserService.getUserById(id);returnResponseEntity.ok(user);}/** * 查询所有用户 */GetMappingpublicResponseEntityListUsergetAllUsers(){ListUserusersuserService.getAllUsers();returnResponseEntity.ok(users);}}配置SQLSessionFactoryConfigurationpublicclassMyBatisConfig{BeanpublicSqlSessionFactorysqlSessionFactory(DataSourcedataSource)throwsException{SqlSessionFactoryBeansessionFactorynewSqlSessionFactoryBean();sessionFactory.setDataSource(dataSource);// 注入数据源// 设置Mapper XML路径sessionFactory.setMapperLocations(newPathMatchingResourcePatternResolver().getResources(classpath:mapper/*.xml));sessionFactory.setTypeAliasesPackage(com.xd.springbootmybatis.entity);org.apache.ibatis.session.Configurationconfigurationneworg.apache.ibatis.session.Configuration();configuration.setMapUnderscoreToCamelCase(true);configuration.setLogImpl(StdOutImpl.class);sessionFactory.setConfiguration(configuration);returnsessionFactory.getObject();}}请求结果2026-01-22T10:28:36.10108:00 INFO 17556 --- [nio-8080-exec-9] c.g.interceptor.LoginInterceptor : 进入拦截器 2026-01-22T10:28:36.10108:00 INFO 17556 --- [nio-8080-exec-9] c.g.interceptor.LoginInterceptor : 请求URL: /api/users 2026-01-22T10:28:36.10108:00 INFO 17556 --- [nio-8080-exec-9] c.g.interceptor.LoginInterceptor : 请求方法: GET Creating a new SqlSession SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession2aefc5b9] was not registered for synchronization because synchronization is not active JDBC Connection [HikariProxyConnection606613140 wrapping com.mysql.cj.jdbc.ConnectionImpl28fa08c] will not be managed by Spring Preparing: SELECT id, username, email, age, create_time, update_time FROM user2 ORDER BY id DESC Parameters: Columns: id, username, email, age, create_time, update_time Row: 7, wujiu, wujiuexample.com, 29, 2026-01-22 10:28:18.937905, 2026-01-22 10:28:18.937905 Row: 6, zhouba, zhoubaexample.com, 22, 2026-01-22 10:28:18.937905, 2026-01-22 10:28:18.937905 Row: 5, sunqi, sunqiexample.com, 35, 2026-01-22 10:28:18.937905, 2026-01-22 10:28:18.937905 Row: 4, zhaoliu, zhaoliuexample.com, null, 2026-01-22 10:28:18.936642, 2026-01-22 10:28:18.936642 Row: 3, wangwu, wangwuexample.com, 28, 2026-01-22 10:28:18.934671, 2026-01-22 10:28:18.934671 Row: 2, lisi, lisiexample.com, 30, 2026-01-22 10:28:18.932989, 2026-01-22 10:28:18.932989 Row: 1, zhangsan, zhangsanexample.com, 25, 2026-01-22 10:28:18.926275, 2026-01-22 10:28:18.926275 Total: 7 Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession2aefc5b9] 2026-01-22T10:28:36.10508:00 INFO 17556 --- [nio-8080-exec-9] c.g.interceptor.LoginInterceptor : 控制器执行完成 2026-01-22T10:28:36.10508:00 INFO 17556 --- [nio-8080-exec-9] c.g.interceptor.LoginInterceptor : 请求处理完成 ngsan, zhangsanexample.com, 25, 2026-01-22 10:28:18.926275, 2026-01-22 10:28:18.926275 Total: 7 Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession2aefc5b9] 2026-01-22T10:28:36.10508:00 INFO 17556 --- [nio-8080-exec-9] c.g.interceptor.LoginInterceptor : 控制器执行完成 2026-01-22T10:28:36.10508:00 INFO 17556 --- [nio-8080-exec-9] c.g.interceptor.LoginInterceptor : 请求处理完成

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询