Mybatis使用工具类创建SqlSession对象实现单条件查询

案例:现有员工表(Employee)如下图所示

单条件查询

1.根据员工的姓名查询员工信息、

2.新增员工信息

3.根据id修改员工的年龄和职位信息

4.根据id删除员工信息

一、项目架构

二、创建数据库

(一)创建一个Mybatis数据库

create database mybatis character set utf8 collate utf8_general_ci;

(二)创建员工表并插入数据

use mybatis;
CREATE TABLE employee(
id INT(32) PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50),
age int(32),
position VARCHAR(50)
);
INSERT INTO employee(id,name,age,position) VALUES(1,"张三",20,"员工"),(2,"李四",18,"员工"),(3,"王五",35,"经理");

三、创建实体类

Employee类 

package org.example.pojo;
public class Employee {

    private int id;
    private String  name;
    private int age;
    private  String position;

    public int getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

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

    public String getPosition() {
        return position;
    }

    public void setPosition(String position) {
        this.position = position;
    }

    @Override
    public String toString() {
        return "Employee{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", position='" + position + '\'' +
                '}';
    }
}

四、创建MybatisUtils工具类

MybatisUtils工具类

package org.example.util;

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.Reader;

public class MybatisUtils {
    private static SqlSessionFactory sqlSessionFactory = null;
    static{

        try{
            Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
    public static SqlSession getSession() {

        return sqlSessionFactory.openSession();
    }

}

五、创建及配置映射文件

(一)创建映射文件EmployeeMapper.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="org.example.pojo.Employee">
<!--    根据员工的姓名查询员工信息-->
    <select id="findEmployeeByName" parameterType="org.example.pojo.Employee" resultType="org.example.pojo.Employee">
        select *  from employee where name = #{name};
    </select>

<!--    新增用户-->
    <insert id="addEmployee" parameterType="org.example.pojo.Employee" >
        insert into employee(id,name,age,position ) values(#{id},#{name},#{age},#{position});
    </insert>

<!--    根据id修改员工的年龄和职位信息、-->
    <update id="updateEmployee" parameterType="org.example.pojo.Employee">
        update employee set age=#{age} ,position=#{position } where id= #{id};
    </update>

<!--    根据id删除员工信息。-->
    <delete id="deleteEmployee" parameterType="int">
        delete from employee where id=#{id};
    </delete>
</mapper>                                                                     

(二)配置映射文件EmployeeMapper.xml

 在db.properties文件中使用<mapper>元素引入EmployeeMapper.xml(注:需根据自己的实际文件路径进行添加)

<mapper resource="mapper/EmployeeMapper.xml"/>

六、运行测试(所有的函数名称需要与mapper中的id名保持一致)

1.根据员工的姓名查询员工信息、

@Test
public void findEmployeeByNameTest(){
    SqlSession sqlSession = MybatisUtils.getSession();
    Employee employee = new Employee();
    employee.setName("李四");
    List<Employee> employees= sqlSession.selectList("findEmployeeByName",employee);
    for(Employee employee1:employees){
        System.out.println(employee1);
    }
    sqlSession.close();

}

2.新增员工信息

@Test
public void addEmployeeTest(){
    SqlSession sqlSession = MybatisUtils.getSession();
    Employee employee = new Employee();
    employee.setId(4);
    employee.setName("李龙妹");
    employee.setAge(23);
    employee.setPosition("经理");
    int num = sqlSession.insert("addEmployee",employee);
    if (num>0){
        System.out.println("添加成功");
    }else{
        System.out.println("添加失败");
    }
    sqlSession.commit();
    sqlSession.close();

}

3.根据id修改员工的年龄和职位信息

@Test
public void updateEmployeeTest(){
    SqlSession sqlSession = MybatisUtils.getSession();
    Employee employee = new Employee();
    employee.setId(2);
    employee.setAge(25);
    employee.setPosition("组长");
    int num = sqlSession.insert("updateEmployee",employee);
    if (num>0){
        System.out.println("修改成功");
    }else{
        System.out.println("修改失败");
    }
    sqlSession.commit();
    sqlSession.close();
}

4.根据id删除员工信息

@Test
public void deleteEmployee(){
    SqlSession sqlSession = MybatisUtils.getSession();
    int num = sqlSession.delete("deleteEmployee",2);
    if (num>0){
        System.out.println("删除成功");
    }else{
        System.out.println("删除失败");
    }
    sqlSession.commit();
    sqlSession.close();
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MyBatis 中进行多表查询可以通过使用嵌套查询、关联查询和结果映射来实现。下面是一个示例代码,展示了如何使用 MyBatis 工具类进行多表查询: 首先,在 XML 配置文件中定义多个 SQL 语句,每个语句对应不同的表: ```xml <!-- 定义查询语句1 --> <select id="selectUserWithOrders" resultMap="userWithOrdersResult"> SELECT * FROM user </select> <!-- 定义查询语句2 --> <select id="selectOrderWithUser" resultMap="orderWithUserResult"> SELECT * FROM orders </select> ``` 然后,在 Java 代码中调用这些 SQL 语句,并进行结果映射: ```java public class MyBatisUtil { private static SqlSessionFactory sqlSessionFactory; static { try { // 创建 SqlSessionFactory 实例 Reader reader = Resources.getResourceAsReader("mybatis-config.xml"); sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); } catch (IOException e) { e.printStackTrace(); } } // 查询用户及其订信息 public List<User> selectUserWithOrders() { SqlSession session = sqlSessionFactory.openSession(); List<User> userList = session.selectList("selectUserWithOrders"); session.close(); return userList; } // 查询及其用户信息 public List<Order> selectOrderWithUser() { SqlSession session = sqlSessionFactory.openSession(); List<Order> orderList = session.selectList("selectOrderWithUser"); session.close(); return orderList; } } ``` 以上示例代码中,`selectUserWithOrders` 方法执行了查询用户及其订信息SQL 语句,并返回一个包含 User 对象的列表。`selectOrderWithUser` 方法执行了查询及其用户信息SQL 语句,并返回一个包含 Order 对象的列表。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值