mybatis中的增删改查基本用法,包括分页,返回插入数据后的主键id

基于Maven项目,mybatis分页需要加入的依赖包,通过插件的方式进行分页的。

<dependency>
  		<groupId>com.github.pagehelper</groupId>
  		<artifactId>pagehelper</artifactId>
  		<version>5.1.10</version>
  	</dependency>
  	<!-- 解析sql的包 -->
		<dependency>
			<groupId>com.github.jsqlparser</groupId>
			<artifactId>jsqlparser</artifactId>
			<version>3.0</version>
		</dependency>

在mybatis-config主配置文件中,加入以下配置。

<!-- 配置分页插件 -->
    <plugins>
    	<!-- com.github.pagehelper为PageHelper类所在包名 -->
    	<plugin interceptor="com.github.pagehelper.PageInterceptor">
		</plugin>
	</plugins>

department 数据访问层接口类

package com.mapper;

import java.util.List;

import com.bean.Department;

public interface DepartmentMapper {
	/**
	 * 添加部门
	 * @param department 部门对象
	 */
	public void saveDepartment(Department department);
	/**
	 * 删除部门
	 * @param id 部门编号
	 */
	public void deleteDepartmentById(Integer id);
	
	/**
	 * 修改部门
	 * @param department 部门对象
	 */
	public void updateDepartment(Department department);
	
	/**
	 * 根据部门编号查询部门信息
	 * @param id 部门编号
	 * @return 返回查询部门信息
	 */
	public Department findDepartmentById(Integer id);
	
	/**
	 * 查询全部部门
	 * @return 返回部门列表
	 */
	public List<Department> findDepartments();	
}

数据访问层映射文件

<?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.mapper.DepartmentMapper">
    <!-- 添加部门 -->
    <!-- 
    需求:数据插入成功后,获取当前记录的主键值,如何做?
    有两种方式:
    第一种:使用insert标签中的属性来设置,需要设置以下几个属性:
    	1)useGeneratedKeys="true":把useGeneratedKeys打开
    	2)keyColumn:用于指定数据库表中的主键字段
    	3)keyProperty:指定主键对象的实体属性名称
    第二种:使用selectKey子标签来设置。属性如下:
    	1)keyColumn:用于指定数据库表中的主键字段
    	2)keyProperty:指定主键对象的实体属性名称
    	3)order:表示获取的时间顺序,有两个值:
    		a)BEFORE:表示执行insert语句之前获取
    		b)AFTER:表示执行insert语句之后获取,通常使用此值
    	4)resultType:获取得到主键类型
     -->
    <insert id="saveDepartment">
        <selectKey keyColumn="id" keyProperty="id" order="AFTER" resultType="int">
            SELECT LAST_INSERT_ID()
        </selectKey>
        INSERT INTO tb_depart(name) VALUES(#{name})
    </insert>
    
    <!-- 删除部门 -->
    <delete id="deleteDepartmentById" parameterType="int">
        DELETE FROM tb_depart WHERE id=#{id}
    </delete>
    
    <!-- 修改部门 -->
    <update id="updateDepartment" parameterType="Department">
       UPDATE tb_depart SET name=#{name} WHERE id=#{id}
    </update>
    
    <!-- 根据部门编号查询部门信息 -->
    <select id="findDepartmentById" parameterType="int" resultType="Department">
        SELECT * FROM tb_depart WHERE id=#{id}
    </select>
    
    <!-- 查询全部部门 -->
    <select id="findDepartments" resultType="Department">
        SELECT * FROM tb_depart
    </select>
    
</mapper>

测试类

package mybatis02;

import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.junit.Test;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.bean.Department;
import com.mapper.DepartmentMapper;
import com.util.MyBatisUtil;

/**
  * 部门测试类
 * @title DepartmentTest.java
 */
public class DepartmentTest {
	// 创建logger对象  日志文件
	private static final Logger logger = LogManager.getLogger(DepartmentTest.class);
	
	// 测试添加部门,要想获得添加后的id,需要通过获取对象id的方式,即对象.getId();方法
	@Test
	public void testSaveDepartment() {
		// 获取SqlSession
		SqlSession session = MyBatisUtil.openSession();
		// 获取mapper对象
		DepartmentMapper mapper = session.getMapper(DepartmentMapper.class);
		try {
			Department department = new Department("后勤部");
			// 执行添加方法
			mapper.saveDepartment(department);
			// 提交事务
			session.commit();
			logger.info("添加成功!" + department);
			System.out.println(department);
		} catch (Exception e) {
			e.printStackTrace();
			session.rollback(); // 回滚事务
			logger.info("添加失败!");
		} finally {
			// 关闭资源
			session.close();
		}
	}
	
	// 修改
	@Test
	public void testUpdateDepartment() {
		SqlSession session = MyBatisUtil.openSession();
		DepartmentMapper mapper = session.getMapper(DepartmentMapper.class);
		mapper.updateDepartment(new Department(2,"财务部"));
		session.commit();
		session.close();
	}
	
	// 查询
	@Test
	public void testFindDepartmentById() {
		SqlSession session = MyBatisUtil.openSession();
		DepartmentMapper mapper = session.getMapper(DepartmentMapper.class);
		Department department = mapper.findDepartmentById(2);
		System.out.println(department);
		session.close();
		logger.info("查询成功!");
	}
	
	// 查询全部
	@Test
	public void testFindDepartments() {
		SqlSession session = MyBatisUtil.openSession();
		DepartmentMapper mapper = session.getMapper(DepartmentMapper.class);
		
		//Page<Object> page = PageHelper.startPage(2, 3); // 设置分页
		
		PageHelper.startPage(4, 3);
		List<Department> departs = mapper.findDepartments();
		
		for (Department depart : departs) {
			System.out.println(depart);
		}
		/*
		System.out.println("列数:" + page.getCountColumn());
		System.out.println("当前页:" + page.getPageNum());
		System.out.println("总页:" + page.getPages());
		System.out.println("每页显示的记录数:" + page.getPageSize());
		System.out.println("排序:" + page.getOrderBy());
		System.out.println("最后一行:" + page.getEndRow());
		System.out.println("开始一行:" + page.getStartRow());
		System.out.println("总记录数:" + page.getTotal());
		*/
		
		PageInfo<Department> pageInfo = new PageInfo<Department>(departs, 3);
		System.out.println("下一页:" + pageInfo.getNextPage());
		System.out.println("当前页:" + pageInfo.getPageNum());
		System.out.println("总页数:" + pageInfo.getPages());
		System.out.println("是否为第一页:" + pageInfo.isIsFirstPage());
		System.out.println("是否为最后一页:" + pageInfo.isIsLastPage());
		System.out.println("是否有下一页:" + pageInfo.isHasNextPage());
		int[] ps = pageInfo.getNavigatepageNums();
		//int ps = pageInfo.getNavigatePages();
		for (int i = 0; i < ps.length; i++) {
			System.out.print(ps[i] + " ");
		}
		System.out.println();
		session.close();
	}
	
	// 删除
	@Test
	public void testDeleteDepartmentById() {
		SqlSession session = MyBatisUtil.openSession();
		DepartmentMapper mapper = session.getMapper(DepartmentMapper.class);
		mapper.deleteDepartmentById(3);
		session.commit();
		session.close();
	}	
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值