Mybatis简单架构之静态SQL语句

dao层:

java 复制代码
package com.qcby.dao;

import com.qcby.entity.Student;
import com.qcby.entity.User;

import java.util.List;

public interface StudentDao {
    List<Student> findAll();
    Integer delete(Integer id);
    Student findById(Integer id);
    List<Student> findByName(String name);
    List<Student> findByStudent(Student student);
    Integer insert(Student student);
    List<Student> findAllStudent(Integer pageSize,Integer pageStart);
    List<Student> findAllStudentByName(Student student);
    List<Student> findStudentByName(String name);
}

实体层:

java 复制代码
package com.qcby.entity;

import java.util.List;

public class Student {
    private Integer id;
    private String name;
    private String sex;
    private String phone;
    private String password;
    private Integer age;

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", sex='" + sex + '\'' +
                ", phone='" + phone + '\'' +
                ", password='" + password + '\'' +
                ", age=" + age +
                '}';
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

mapper:

XML 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.qcby.dao.StudentDao">
    <!--id: 方法的名称-->
    <!--resultType:数据返回的类型-->
    <select id="findAll" resultType="com.qcby.entity.Student">
        select * from student;
    </select>

    <delete id="delete" parameterType="java.lang.Integer">
        delete from student where id = #{id}
    </delete>

    <select id="findById" resultType="com.qcby.entity.Student" parameterType="java.lang.Integer">
        select * from studednt where id = #{id}
    </select>

    <select id="findByName" resultType="com.qcby.entity.Student" parameterType="java.lang.String">
        select * from student where name = #{name}
    </select>

    <!--多个参数可以直接使用user对象-->
    <select id="findByStudent" resultType="com.qcby.entity.Student" parameterType="com.qcby.entity.Student">
        select * from student where name = #{username} and password = #{password}
    </select>

    <insert id="insert" parameterType="com.qcby.entity.Student">
        insert into student (name,sex,phone,password,age) value (#{name},#{sex},#{phone},#{password},#{age})
    </insert>

    <!--返回主键,我们的主键需要设置自动递增  注册-->
    <insert id="insertGetId" parameterType="com.qcby.entity.Student">
        <selectKey keyProperty="id" resultType="java.lang.Integer" order="AFTER">
            SELECT LAST_INSERT_ID()
        </selectKey>
        insert into student (name,sex,phone,password,age) values (#{name},#{sex},#{phone},#{password},#{age});
    </insert>

    <!--分页查询-->
    <select id="findAllStudent" parameterType="java.lang.Integer" resultType="com.qcby.entity.Student">
        select * from student limit #{param1} offset #{param2}
    </select>

    <select id="findAllUserByUserName" parameterType="com.qcby.entity.Student" resultType="com.qcby.entity.Student">
        select * from student where name = #{name} limit #{pagesize} offset #{pageStart}
    </select>

    <!--模糊查询-->
    <select id="findStudentByName" parameterType="java.lang.String" resultType="com.qcby.entity.Student">
        select * from student where name like #{value};
    </select>
</mapper>

Test文件:

java 复制代码
import com.qcby.dao.StudentDao;
import com.qcby.entity.Student;
import com.qcby.entity.User;
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 org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Date;
import java.util.Arrays;
import java.util.List;
public class StudentTest {
    private InputStream in = null;
    private SqlSession session = null;
    private StudentDao mapper = null;

    @Before  //前置通知, 在方法执行之前执行
    public void init() throws IOException {
        //加载主配置文件,目的是为了构建SqlSessionFactory对象
        in = Resources.getResourceAsStream("SqlMapConfig.xml");
        //创建SqlSessionFactory对象
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
        //通过SqlSessionFactory工厂对象创建SqlSesssion对象
        session = factory.openSession();
        //通过Session创建UserDao接口代理对象
        mapper = session.getMapper(StudentDao.class);
    }

    @After  //@After: 后置通知, 在方法执行之后执行 。
    public void destory() throws IOException {
        //释放资源
        session.close();
        in.close();
    }

    @Test
    public void aaa(){
        List<Student>  students = mapper.findAll();
        for (Student student: students
        ) {
            System.out.println(student.toString());
        }
    }

    @Test
    public void delete(){
        mapper.delete(4);
        session.commit();//事务提交
    }

    @Test
    public void findById(){
        Student student = mapper.findById(1);
        System.out.println(student.toString());
    }

    @Test
    public void findByName(){
        List<Student> students = mapper.findByName("熊大");
        for (Student student : students) {
            System.out.println(student.toString());
        }
    }

    @Test
    public void findByUser(){
        Student student = new Student();
        student.setName("熊二");
        student.setPassword("123");
        List<Student> students = mapper.findByStudent(student);
        for (Student student1 : students) {
            System.out.println(student1.toString());
        }
    }

    @Test
    public void insert(){
        Student student = new Student();
        student.setSex("女");
        student.setPhone("123444444");
        student.setName("貂蝉");
        mapper.insert(student);
        session.commit();
    }

    @Test
    public void findAllStudent(){
        Integer pageSize = 5;
        Integer pageIndex = 1;
        Integer pageStart = pageSize * (pageIndex - 1);
        List<Student> students = mapper.findAllStudent(pageSize, pageStart);
        for (Student student1 : students) {
            System.out.println(student1.toString());
        }
    }
    @Test
    public void findStudentByName(){
        List<Student> students = mapper.findStudentByName("%张%");
        for (Student student1 : students) {
            System.out.println(student1.toString());
        }
    }
}
相关推荐
远方160942 分钟前
47-Oracle ASH报告解读
数据库·sql·oracle·database
熙客3 小时前
Redis底层数据结构与内部实现
数据库·redis·mybatis
掘金-我是哪吒4 小时前
分布式微服务系统架构第152集:JavaPlus技术文档平台日更
分布式·微服务·云原生·架构·系统架构
怪只怪满眼尽是人间烟火5 小时前
SQL分片工具类
网络·数据库·sql
风铃喵游6 小时前
平地起高楼: 环境搭建
前端·架构
森焱森7 小时前
驱动开发,队列,环形缓冲区:以GD32 CAN 消息处理为例
c语言·单片机·算法·架构
weixin_438335407 小时前
MyBatis :何时选择连接查询,何时使用<collection>标签?
mybatis
Wgllss7 小时前
Kotlin + Flow 实现责任链模式的4种案例
android·架构·android jetpack
Carpoor奇7 小时前
Mybatis之Integer类型字段为0,入库为null
android·mybatis
假客套9 小时前
2025 Java EasyExcel 基于Excel模板填充数据 SpringBoot+Mybatis-Flex
java·spring boot·mybatis·easyexcel