栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

mybatis4

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

mybatis4

六.分页插件 1.添加依赖



    com.github.pagehelper
    pagehelper
    5.3.0

2.在mybatis_config.xml配置插件

    
        
    
3. 分页实例:

3.1普通分页

//分页插件使用
    @Test
    public void listStudentByPage(){
        StudentDAO studentDAO=mybatisUtils.getMapper(StudentDAO.class);

        //引入分页插件,创建拦截器,设置请求页码及页面数据条数
        PageHelper.startPage(1,3);
        //查询所有符合条件的数据时检查是否有拦截器,根据拦截器产生响应数据条数
        List students=studentDAO.listStudent();
        students.forEach(System.out::println);
        System.out.println("-----------------");

        //将得到的数据和页码,数据数,开始行结束行,上一页下一页等信息封装
        PageInfo pageInfo=new PageInfo<>(students);

        List list=pageInfo.getList();
        list.forEach(System.out::println);

    }
七.关联映射 1.实体关系

在关系型数据库中,多表之间存在着三种关联关系,分别为一对一、一对多和多对多,如图1所示。

图1 关系型数据库中多表之间的三种关联关系

这三种关联关系的具体说明如下:

● 一对一:在任意一方引入对方主键作为外键;

● 一对多:在“多”的一方,添加“一”的一方的主键作为外键;

● 多对多:产生中间关系表,引入两张表的主键作为外键,两个主键成为联合主键或使用新的字段作为主键。

通过数据库中的表可以描述数据之间的关系,同样,在Java中,通过对象也可以进行关系描述,如图2所示。

图2 Java对象描述数据表之间的关系

在图2中,三种关联关系的描述如下:

● 一对一的关系:就是在本类中定义对方类型的对象,如A类中定义B类类型的属性b,B类中定义A类类型的属性a;

● 一对多的关系:就是一个A类类型对应多个B类类型的情况,需要在A类中以集合的方式引入B类类型的对象,在B类中定义A类类型的属性a;

● 多对多的关系:在A类中定义B类类型的集合,在B类中定义A类类型的集合。

1.1 一对一关联

主键关联:在两个表的数据的主键id相同

表1                    表2

id .....                 id  ......

1   张三             1  18565425643

2   李四             2  16549632145

唯一外键关联

表1                        表2

id   ......                  id   ......   表1id

1                            1                2

2                            2                1

元素中,包含了一个子元素,MyBatis就是通过该元素来处理一对一关联关系的。

在元素中,通常可以配置以下属性:

● property:指定映射到的实体类对象属性,与表字段一一对应;

● column:指定表中对应的字段;

● javaType:指定映射到实体对象属性的类型;

● select:指定引入嵌套查询的子SQL语句,该属性用于关联映射中的嵌套查询;

● fetchType:指定在关联查询时是否启用延迟加载。fetchType属性有lazy和eager两个属性值,默认值为lazy(即默认关联映射延迟加载)。

 添加:

user类detail类
@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class User {

    private int userId;
    private String userName;
    private String userPassword;
    //将类detail作为user属性用于关联
    private Detail detail;

}
@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class Detail {

    private int detailId;
    private String userGender;
    private String userPhone;
    private int uid;
}
 @org.junit.Test
    public void insertUser() {
        //用户注册,提交基本信息和详细信息到servlet中,servlet接收注册信息并保存在User和Detail对象中
        Detail detail = new Detail(0, "女", "12345678902", 0);

        User user = new User(0, "小花", "456789",detail);

        //插入两个表有先后顺序,避免其中一个出错,手动提交事务
        SqlSession sqlSession=mybatisUtils.getSqlSession(false);
        UserDAO userDAO = sqlSession.getMapper(UserDAO.class);
        DetailDAO detailDAO = sqlSession.getMapper(DetailDAO.class);
        try {
            int i = userDAO.insertUser(user);
            //将生成的用户主键id设置为detail的uid属性,形成一对一关联
            detail.setUid(user.getUserId());

            int j = detailDAO.insertDetail(detail);
            System.out.println(i+" "+j);

            //手动提交
            sqlSession.commit();
        } catch (Exception e) {
            //出错回滚
            sqlSession.rollback();
            e.printStackTrace();
        }

按名字查询:

1.连接查询

 

 

2.子查询(嵌套查询)

usermapperdetailmapper

 测试

3.嵌套结果查询

测试:

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/872002.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号