
MyBatis
坚定你坚定的步伐
这个作者很懒,什么都没留下…
展开
-
12关联查询_多对多
数据库Course表Student表middle表多对多的关系需要使用第三张表指定两表的对应关系。实体类Course.java@Getter@Setter@ToStringpublic class Course { private Integer cid; private String cname;}Student.java@Getter@Setter@ToStringpublic class Student { private Integer sid;原创 2020-07-19 14:53:08 · 135 阅读 · 0 评论 -
11关联查询_多对一
实体类:1、Country.java@Getter@Setter@ToStringpublic class Country { private Integer cid; private String cname;}2、Minister.java@Getter@Setter@ToStringpublic class Minister { private Integer mid; private String mname; //关联属性 private Country cou原创 2020-07-19 12:51:33 · 221 阅读 · 0 评论 -
10关联查询_一对多
数据库表1、country表2、minister表一个国家可包含多个部长,多个部长可隶属一个国家。实体类1、Minister.java@Getter@Setter@ToStringpublic class Minister { private Integer mid; private String mname;}2、Country.java@Getter@Setter@ToStringpublic class Country { private Integer原创 2020-07-19 11:22:24 · 193 阅读 · 0 评论 -
9使用动态SQL
1、if可以传入的数据进行判断筛选。测试类: @Test public void test01() { Map<String, Object> map = new HashMap<>(); map.put("pname",null); map.put("page", 20); for(Student student : dao.selectStudentByIf(map)) { System.out.println(student); } }原创 2020-07-19 07:36:39 · 220 阅读 · 0 评论 -
8mapper的动态代理
之前的dao层接口总是做着重复性的工作,造成代码冗余,而且也不美观,其实mybatis框架可以帮我们做dao层接口中session的操作、关闭部分。之前的dao层实现类:public class StudentDaoImpl implements IStudentDao { private SqlSession session; @Override public void insertStudent(Student student) { try { //1、获取sqlsession原创 2020-07-18 11:43:36 · 131 阅读 · 0 评论 -
7字段名与属性名不相同resultMap
数据库表的定义和实体类的定义,往往不是同一个人,个人的命名习惯可能不同,那么可能就会出现表的字段名和实体类中的属性名不相同的状况。比如:我将数据库中的字段名修改,mapper.xml文件中的sql语句中的字段名也同步修改,但是实体类的属性还是不变。数据库字段:mapper.xml文件:<select id="selectAllStudent" resultType="Student"> select sid,sname,age from student </select&原创 2020-07-18 09:47:59 · 216 阅读 · 0 评论 -
6多种查询
1查询所有测试类:@Test public void test05() { List<Student> students = dao.selectAllStudent(); for(Student student : students) { System.out.println(student); } }注意:现在省略了service层,从view层直接调用dao层。dao层接口:public interface IStudentDao { List<S原创 2020-07-17 21:26:19 · 459 阅读 · 0 评论 -
5使用新插入数据id值初始化对象
在数据库中如果我在数据库中写了一条这样的插入sql语句:insert into student(name,age) value ('三三',21);此时我并不知道数据库中自动增长的id是多少,那么就有两种办法查看刚插入数据的id。1、@@identityinsert into student(name,age) value ('三三',21);select @@identity newid这样在执行完第一句插入操作后,通过执行第二句就可以显示出刚才插入操作所生成的id。2、last_i原创 2020-07-17 17:34:42 · 342 阅读 · 0 评论 -
4JUnit单元测试与单表的CURD操作
1、JUnit单元测试可以同时存在多个测试方法,每一个测试方法都可以单独运行,不受其他测试方法的影响。@Test的设置:方法名可以任意取,但必须是public void,需要在方法头上加注解@Test表明此方法可进行单元测试,第一次使用时需要导入JUnit。@Test的使用:需要测试哪一个方法时,就把鼠标光标放在此方法名上,然后在运行。不能放在其他位置。@Before的使用:使用@Before的方法会在需要测试的方法执行之前执行,此方法一般用于搭建测试方法的执行环境。@After的使用:使原创 2020-07-16 20:57:51 · 514 阅读 · 0 评论 -
3对配置文件进行修改及定义工具类
1、为实体类取别名在主配置文件中mybatis.xml 中添加typeAliases标签。<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration> <!-- 为实体类取别名原创 2020-07-16 15:55:56 · 213 阅读 · 0 评论 -
完成一次插入操作
一个简单的三层架构包含关系图实体类Student.java中的内容:@NoArgsConstructor@Getter@Setter@ToStringpublic class Student { private Integer id; private String name; private Integer age; public Student(String name, Integer age) { super(); this.name = name; this.age.原创 2020-07-16 13:36:02 · 594 阅读 · 0 评论 -
MyBatis的文件配置
mapper.xml 映射文件mybatis.xml 主配置文件需要为这两个配置文件添加相关的约束1、mapper.xml一般放在dao层下<?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 > .原创 2020-07-16 10:42:02 · 225 阅读 · 0 评论