案例:现有员工表(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(); }