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

澄海建网站中国建设银行官网站电脑版

澄海建网站,中国建设银行官网站电脑版,做公司的网站,网站首页图片轮播Spring 和 MyBatis 是 Java 开发中广泛使用的两个框架。Spring 提供了全面的基础设施支持,而 MyBatis 是一个优秀的持久层框架,两者结合能够简化数据访问层的开发。本文将详细介绍如何在 Spring 中使用 MyBatis 进行各种查询操作,包括简单查询…

Spring 和 MyBatis 是 Java 开发中广泛使用的两个框架。Spring 提供了全面的基础设施支持,而 MyBatis 是一个优秀的持久层框架,两者结合能够简化数据访问层的开发。本文将详细介绍如何在 Spring 中使用 MyBatis 进行各种查询操作,包括简单查询、条件查询、分页查询、联合查询和动态 SQL 查询。

一、环境配置

1. Maven 依赖

在 pom.xml 文件中添加 Spring 和 MyBatis 的相关依赖:

<dependencies><!-- Spring Boot Starter Web --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- Spring Boot Starter MyBatis --><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.0</version></dependency><!-- MySQL Connector --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency>
</dependencies>
​
2. 配置文件

在 application.yml 中配置数据库连接和 MyBatis 设置:

spring:datasource:url: jdbc:mysql://localhost:3306/your_databaseusername: your_usernamepassword: your_passworddriver-class-name: com.mysql.cj.jdbc.Drivermybatis:mapper-locations: classpath:mappers/*.xmltype-aliases-package: com.example.demo.model
​

二、实体类和 Mapper 接口

1. 实体类

创建一个简单的实体类 User

package com.example.demo.model;public class User {private Long id;private String name;private String email;// Getters and setters
}
​
2. Mapper 接口

定义 UserMapper 接口:

package com.example.demo.mapper;import com.example.demo.model.User;
import org.apache.ibatis.annotations.*;import java.util.List;@Mapper
public interface UserMapper {@Select("SELECT * FROM users WHERE id = #{id}")User findById(Long id);@Select("SELECT * FROM users")List<User> findAll();@Select("SELECT * FROM users WHERE name = #{name}")List<User> findByName(String name);@Insert("INSERT INTO users(name, email) VALUES(#{name}, #{email})")@Options(useGeneratedKeys = true, keyProperty = "id")void insert(User user);@Update("UPDATE users SET name = #{name}, email = #{email} WHERE id = #{id}")void update(User user);@Delete("DELETE FROM users WHERE id = #{id}")void delete(Long id);
}
​

三、各种查询操作

1. 简单查询

通过主键 ID 查询用户:

User user = userMapper.findById(1L);
System.out.println(user.getName());
​
2. 条件查询

根据用户名查询用户列表:

List<User> users = userMapper.findByName("John");
users.forEach(user -> System.out.println(user.getEmail()));
​
3. 分页查询

分页查询可以通过 SQL 语句中的 LIMIT 关键字实现。首先在 Mapper 接口中添加分页查询方法:

@Select("SELECT * FROM users LIMIT #{offset}, #{limit}")
List<User> findByPage(@Param("offset") int offset, @Param("limit") int limit);
​

然后在业务代码中调用分页查询方法:

int page = 1;
int pageSize = 10;
int offset = (page - 1) * pageSize;
List<User> users = userMapper.findByPage(offset, pageSize);
users.forEach(user -> System.out.println(user.getName()));
​
4. 联合查询

假设有另一个表 orders,我们需要查询用户及其订单信息。首先创建 Order 实体类:

package com.example.demo.model;public class Order {private Long id;private Long userId;private String product;private int quantity;// Getters and setters
}
​

然后在 UserMapper 中添加联合查询方法:

@Select("SELECT u.*, o.* FROM users u JOIN orders o ON u.id = o.user_id WHERE u.id = #{userId}")
@Results({@Result(property = "id", column = "id"),@Result(property = "name", column = "name"),@Result(property = "email", column = "email"),@Result(property = "orders", column = "user_id", many = @Many(select = "com.example.demo.mapper.OrderMapper.findByUserId"))
})
User findUserWithOrders(Long userId);
​

在 OrderMapper 中添加 findByUserId 方法:

package com.example.demo.mapper;import com.example.demo.model.Order;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;import java.util.List;@Mapper
public interface OrderMapper {@Select("SELECT * FROM orders WHERE user_id = #{userId}")List<Order> findByUserId(Long userId);
}
​

调用联合查询方法:

User user = userMapper.findUserWithOrders(1L);
System.out.println(user.getName());
user.getOrders().forEach(order -> System.out.println(order.getProduct()));
​
5. 动态 SQL 查询

动态 SQL 查询使用 MyBatis 的 <if> 和 <choose> 等标签。首先创建 XML 映射文件 UserMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.example.demo.mapper.UserMapper"><select id="findUsersByCriteria" parameterType="map" resultType="com.example.demo.model.User">SELECT * FROM users<where><if test="name != null">AND name = #{name}</if><if test="email != null">AND email = #{email}</if></where></select>
</mapper>
​

在 UserMapper 接口中声明方法:

List<User> findUsersByCriteria(@Param("name") String name, @Param("email") String email);
​

调用动态查询方法:

Map<String, Object> params = new HashMap<>();
params.put("name", "John");
params.put("email", null);List<User> users = userMapper.findUsersByCriteria(params);
users.forEach(user -> System.out.println(user.getEmail()));
​

四、总结

Spring 和 MyBatis 的结合使得数据访问层的开发变得更加简洁和高效。


文章转载自:

http://syajw2gd.bpddc.cn
http://1zzoLjjo.bpddc.cn
http://nkqC57kb.bpddc.cn
http://rzqfAxCj.bpddc.cn
http://FSbhqFZV.bpddc.cn
http://hm4Ai5ED.bpddc.cn
http://1Jv2HrGl.bpddc.cn
http://pxJvrk3h.bpddc.cn
http://V4UksbsE.bpddc.cn
http://4zP21WdZ.bpddc.cn
http://X69tgmld.bpddc.cn
http://9BxxyUrk.bpddc.cn
http://yJW8x8MP.bpddc.cn
http://E49p7twG.bpddc.cn
http://vfa4y8MF.bpddc.cn
http://GsQIxNaa.bpddc.cn
http://QgEOTDai.bpddc.cn
http://DTDbh53t.bpddc.cn
http://tvXYzptw.bpddc.cn
http://HH06qQ9O.bpddc.cn
http://ixMBNA1u.bpddc.cn
http://O34SizsW.bpddc.cn
http://DXWPm1Lu.bpddc.cn
http://hcnIOH6I.bpddc.cn
http://mBWDGNE6.bpddc.cn
http://DloMcx8g.bpddc.cn
http://PZJMPSj2.bpddc.cn
http://bOAtEm4r.bpddc.cn
http://dr5GzItj.bpddc.cn
http://DYNQBZRW.bpddc.cn
http://www.dtcms.com/wzjs/684566.html

相关文章:

  • 数据网站建设网站框架结构图
  • 电子商务网站建设实验心得搭建网站平台
  • 网站备案名字填写海口网站建设方案咨询
  • 东莞做营销型网站的湖南营销网站建设
  • 有什么网站开发软件怎么寻找做有意做网站的客户
  • 适合做网站服务器的主机网站网页设计0基础学
  • 公司网站建设价济南莱芜最新消息
  • 珠海哪里做网站的wordpress的媒体选项
  • 打开网站说建设中是什么问题上海网站制作建设
  • 资源seo网站优化排名商城网站建设要多少钱
  • 廊坊网页模板建站怎么查网站icp
  • 北京长空建设有限公司网站微信二维码网站建设
  • 免费网站下载直播软件如何做电子商务网站
  • 免费网站一级a做爰在免费线看深圳英文网站建设去哪家
  • 学做网站看什么网站建设自学多长时间
  • 网站的开发建设要做什么wordpress仿多特
  • 鼎诚网站建设网站建设的商品分类编码
  • 深圳网站优化哪家好手机app制作用什么软件
  • 品牌网站建设3小蝌蚪公司英文网站建设
  • 成都新东方烹饪学校网站建设主管惠安网站建设
  • 购物网站排名2018泊头市建设局官方网站
  • 郑州建站排名抖音代运营是啥
  • 网站 免费空间门户网站系统建设清单
  • 中国建设银行网站转账百度h5为什么发布不了
  • cms开源网站管理系统学做网站会员
  • 一流的高密网站建设中企动力科技股份有限公司广州分公司
  • 临沂房产和房建设局网站双和科技vi设计
  • 做自媒体小视屏哪个网站好wordpress修改作者链接
  • 企业网站制作 西安中英繁网站源码
  • 深圳品牌网站设计公司价格拐角型布局网站