ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

如何写一个MyBatis动态SQL的学生信息查询系统

2024-09-13 09:43:26  阅读:171  来源: 互联网

标签:


下面是一个简单的示例,教你如何使用 MyBatis 编写一个动态 SQL 的学生信息查询系统。

项目结构

  1. 创建 Maven 项目
  2. 添加依赖
    • 在 pom.xml 中添加以下依赖:
      <dependency>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis</artifactId>
          <version>3.5.6</version>
      </dependency>
      <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>8.0.26</version>
      </dependency>
      <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-api</artifactId>
          <version>1.7.30</version>
      </dependency>
      <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-log4j12</artifactId>
          <version>1.7.30</version>
      </dependency>
      

      XML

创建数据库和表

  1. 创建 MySQL 数据库

    CREATE DATABASE StudentDB;
    USE StudentDB;
    
    CREATE TABLE student (
        id INT AUTO_INCREMENT PRIMARY KEY,
        name VARCHAR(100),
        age INT,
        gender VARCHAR(10)
    );
    

    SQL
  2. 插入一些测试数据

    INSERT INTO student (name, age, gender) VALUES ('Alice', 20, 'Female');
    INSERT INTO student (name, age, gender) VALUES ('Bob', 22, 'Male');
    INSERT INTO student (name, age, gender) VALUES ('Charlie', 21, 'Male');
    

    SQL

创建学生实体类

public class Student {
    private Integer id;
    private String name;
    private Integer age;
    private String gender;

    // Getters and setters...
}

Java

创建 StudentMapper 接口

import org.apache.ibatis.annotations.Param;
import java.util.List;

public interface StudentMapper {
    List<Student> selectStudents(@Param("name") String name, @Param("age") Integer age, @Param("gender") String gender);
}

Java

创建 Mapper XML 文件

创建 StudentMapper.xml 文件,内容如下:

<mapper namespace="your.package.name.StudentMapper">

    <select id="selectStudents" resultType="your.package.name.Student">
        SELECT * FROM student
        WHERE 1=1
        <if test="name != null">
            AND name = #{name}
        </if>
        <if test="age != null">
            AND age = #{age}
        </if>
        <if test="gender != null">
            AND gender = #{gender}
        </if>
    </select>

</mapper>

XML

配置 MyBatis

在 mybatis-config.xml 中配置 MyBatis:

<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/StudentDB"/>
                <property name="username" value="root"/>
                <property name="password" value="yourpassword"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="your/package/name/StudentMapper.xml"/>
    </mappers>
</configuration>

XML

创建主程序

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

public class Main {
    public static void main(String[] args) throws IOException {
        InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        try (SqlSession session = sqlSessionFactory.openSession()) {
            StudentMapper mapper = session.getMapper(StudentMapper.class);
            List<Student> students = mapper.selectStudents("Alice", null, null);
            for (Student student : students) {
                System.out.println(student.getName() + ", " + student.getAge() + ", " + student.getGender());
            }
        }
    }
}

Java

总结

以上步骤展示了如何使用 MyBatis 动态 SQL 创建一个简单的学生信息查询系统。你可以根据需求,修改查询参数并测试。在运行程序之前,确保数据库连接信息正确并且表结构已经创建。

标签:
来源:

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有