12【MyBatis注解开发】
创始人
2024-03-02 08:36:01
0

文章目录

  • 三、Mybatis注解开发
    • 3.1 快速入门
      • 3.1.1 常用注解说明
      • 3.1.2 注解实现开发
    • 3.2 注解实现一对一映射
      • 3.2.1 接口
      • 3.2.2 测试类
    • 3.3 注解实现一对多映射
      • 3.2.1 接口
      • 3.2.2 测试类

三、Mybatis注解开发

3.1 快速入门

3.1.1 常用注解说明

注解功能
@Insert新增
@Update更新
@Delete删除
@Select查询
@Result结果集封装
@Results与@Result 一起使用,封装多个结果集
@One一对一结果集封装
@Many一对多结果集封装

3.1.2 注解实现开发

  • SQL语句:
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`  (`id` int(11) NOT NULL AUTO_INCREMENT,`username` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`birthday` date NULL DEFAULT NULL,`sex` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`address` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;INSERT INTO `user` VALUES (1, '张三', '1999-02-04', '男', '佛山');
INSERT INTO `user` VALUES (2, '李四', '1998-01-15', '女', '湛江');
  • 实体类:
package com.dfbz.entity;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import java.util.Date;
import java.util.List;/*** @author lscl* @version 1.0* @intro:*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {private int  id;private String username;private Date birthday;private String sex;private String address;
}
  • dao接口:
package com.dfbz.dao;import com.dfbz.entity.User;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;import java.util.List;/*** @author lscl* @version 1.0* @intro:*/
public interface UserDao {@Select("select * from user where id=#{id}")User findById(int id);@Select("select * from user")List findAll();@Insert("insert into user values(null,#{username},#{birthday},#{sex},#{address})")void save(User user);@Update("update user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address} where id=#{id}")void update(User user);@Delete("delete from user where id=#{id}")void delete(int id);
}
  • 加载配置类:

在这里插入图片描述

  • 测试类:
package com.dfbz.test;import com.dfbz.dao.UserDao;
import com.dfbz.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.util.Date;
import java.util.List;public class Demo01 {private SqlSessionFactoryBuilder builder;private SqlSessionFactory factory;private SqlSession session;private UserDao userDao;@Beforepublic void before() throws IOException {builder=new SqlSessionFactoryBuilder();factory=builder.build(Resources.getResourceAsStream("SqlMapConfig.xml"));session= factory.openSession();userDao=session.getMapper(UserDao.class);}@Afterpublic void after(){session.commit();session.close();}@Testpublic void save(){         //增加User user=new User();user.setUsername("小龙");user.setBirthday(new Date());user.setSex("男");user.setAddress("广州");userDao.save(user);}@Testpublic void delete(){userDao.delete(1);}@Testpublic void update(){User user=new User();user.setId(2);user.setUsername("张三");user.setBirthday(new Date());user.setSex("男");user.setAddress("广州");userDao.update(user);}@Testpublic void findById(){User user = userDao.findById(2);System.out.println(user);}@Testpublic void findAll(){List userList = userDao.findAll();for (User user : userList) {System.out.println(user);}}
}

3.2 注解实现一对一映射

3.2.1 接口

  • Emp:
package com.dfbz.entity;import lombok.Data;/*** @author lscl* @version 1.0* @intro:*/
@Data
public class Emp {private Integer id;private String name;private Integer age;private String addr;private Double salary;// 一个员工属于一个部门private Dept dept;
}
  • Dept:
package com.dfbz.entity;import lombok.Data;import java.util.List;/*** @author lscl* @version 1.0* @intro:*/
@Data
public class Dept {private Integer id;private String name;private String location;// 一个部门下有多个员工private List empList;
}
  • DeptDao:
package com.dfbz.dao;import com.dfbz.entity.Dept;
import org.apache.ibatis.annotations.Select;public interface DeptDao {@Select("select * from dept where id=#{id}")Dept findById(Integer id);
}
  • EmpDao:
package com.dfbz.dao;import com.dfbz.entity.Dept;
import com.dfbz.entity.Emp;
import org.apache.ibatis.annotations.One;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.mapping.FetchType;public interface EmpDao {@Select("select * from emp where id=#{id}")@Results({@Result(id = true, property = "id", column = "id"),@Result(property = "name", column = "name"),@Result(property = "age", column = "age"),@Result(property = "addr", column = "addr"),@Result(property = "salary", column = "salary"),@Result(property = "dept", column = "dept_id", javaType = Dept.class,one = @One(select = "com.dfbz.dao.DeptDao.findById",fetchType = FetchType.LAZY)),})Emp findById(Integer id);
}

3.2.2 测试类

@Test
public void test1() {Emp emp = empDao.findById(1);System.out.println(emp);
}

3.3 注解实现一对多映射

3.2.1 接口

  • DeptDao:
@Select("select * from dept where id=#{id}")
@Results({@Result(id = true,property = "id",column = "id"),@Result(property = "name",column = "name"),@Result(property = "location",column = "location"),@Result(property = "empList",column = "id",javaType = List.class,many = @Many(select = "com.dfbz.dao.EmpDao.findByDeptId",fetchType = FetchType.LAZY))
})
Dept findDeptAllById(Integer id);
  • EmpDao:
@Select("select * from emp where dept_id=#{deptId}")
List findByDeptId(Integer deptId);

3.2.2 测试类

@Test
public void test2() {Dept dept = deptDao.findDeptAllById(1);System.out.println(dept);
}

相关内容

热门资讯

保存时出现了1个错误,导致这篇... 当保存文章时出现错误时,可以通过以下步骤解决问题:查看错误信息:查看错误提示信息可以帮助我们了解具体...
汇川伺服电机位置控制模式参数配... 1. 基本控制参数设置 1)设置位置控制模式   2)绝对值位置线性模...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
表格中数据未显示 当表格中的数据未显示时,可能是由于以下几个原因导致的:HTML代码问题:检查表格的HTML代码是否正...
本地主机上的图像未显示 问题描述:在本地主机上显示图像时,图像未能正常显示。解决方法:以下是一些可能的解决方法,具体取决于问...
表格列调整大小出现问题 问题描述:表格列调整大小出现问题,无法正常调整列宽。解决方法:检查表格的布局方式是否正确。确保表格使...
不一致的条件格式 要解决不一致的条件格式问题,可以按照以下步骤进行:确定条件格式的规则:首先,需要明确条件格式的规则是...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...