使用注解实现MyBatis映射


前言

提示:这里可以添加本文要记录的大概内容:

注解实现的最大的好处是简单SQL语句放注解里,映射文件就不用写了

数据库代码:

create table DEPT
(
    DEPTNO int primary key,   # 主键不是自增
    DNAME varchar(20),
    LOC varchar(30)
);

在 main/java 文件夹下新建包 mapper 和 po

其中 mapper 包中新建同名的接口和映射文件

po 类代码:

public class Dept {
    
    
	private Integer deptno;
	private String dname;
	private String loc;
// 自动生成 Getter、Setter、toString()、有参无参方法
}

提示:以下是本篇文章正文内容,下面案例可供参考

简单语句用注解

增加功能

在接口文件中:

	// 在注解后直接写SQL语句  因为主键不是自增的,这里需要加上主键
	// 如果是自增的:@Insert("insert into dept (dname,loc) values(#{dname},#{loc})")
	@Insert("insert into dept values(#{deptno},#{dname},#{loc})")
	// 后在上面增加注解
	int insertDept(Dept dept);

测试代码:

	@Test 
	public void test() {
    
    
		DeptMapper mapper = session.getMapper(DeptMapper.class); 
		Dept dept = new Dept(60,"销售部","津海");
		mapper.insertDept(dept);
	}

在这里插入图片描述

更新功能

接口代码:

	@Update("update dept set dname = #{dname},loc = #{loc} where deptno = #{deptno}")
	int updateDept(Dept dept);

测试代码:

	@Test 
	public void test() {
    
    
		DeptMapper mapper = session.getMapper(DeptMapper.class); 
		Dept dept = new Dept(60,"管理销售部","津海区");
		mapper.updateDept(dept);
	}

在这里插入图片描述

删除功能

接口代码:

								    // 基本类型随便起名
	@Delete("delete from dept where deptno = #{abc}")
	int deleteDept(int no);

测试代码:

	@Test 
	public void test() {
    
    
		DeptMapper mapper = session.getMapper(DeptMapper.class); 
//		Dept dept = new Dept(60,"管理销售部","津海区");
		mapper.deleteDept(60);
	}

在这里插入图片描述

查询功能

1、根据部门编号查询某个部门

接口代码:

// 根据编号查询部门						 // 基本类型随便起名
	@Select("select * from dept where deptno = #{xxx}")
	Dept queryDeptByNo(int no);

测试代码:

	@Test 
	public void test() {
    
    
		DeptMapper mapper = session.getMapper(DeptMapper.class); 
		mapper.queryDeptByNo(20);
	}

在这里插入图片描述
2、查所有部门

//	查所有部门
	@Select("select * from dept")
	List<Dept> queryAllDepts();

测试代码:

	@Test
	public void test() {
    
    
		DeptMapper mapper = session.getMapper(DeptMapper.class); 
		List<Dept> depts = mapper.queryAllDepts();
		System.out.println(depts);
	}

在这里插入图片描述

复杂语句用映射

查询功能

新建与接口文件同名的映射文件,映射文件中的namespace是接口文件的限定名

接口文件中:

	List<Dept> queryDepts(Dept dept);
	int queryAllDepts(Dept dept);

映射文件代码:

<mapper namespace="com.mybatis.mapper.DeptMapper">
	<select id="queryDepts" parameterType="Dept" resultType="Dept">
		select * from dept
		<where>
			<if test="deptno != null">
				and deptno = #{
    
    deptno}
			</if>
			<if test="dname != null and dname != '' ">
				and dname = #{
    
    dname}
			</if>
			<if test="loc != null and loc != '' ">
				and loc like concat('%',#{
    
    loc},'%')
			</if>
		</where>
	</select>
</mapper>

测试代码:

	@Test
	public void test() {
    
    
		DeptMapper mapper = session.getMapper(DeptMapper.class); 
		Dept dept = new Dept(60,"管理销售部","津海区");
		mapper.queryDepts(dept);
	}

重点看语句
在这里插入图片描述


猜你喜欢

转载自blog.csdn.net/rej177/article/details/132090068