千家信息网

Mybatis全局配置及映射关系怎么实现

发表于:2025-01-17 作者:千家信息网编辑
千家信息网最后更新 2025年01月17日,这篇文章主要介绍了Mybatis全局配置及映射关系怎么实现,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、配置文件内容mybatis
千家信息网最后更新 2025年01月17日Mybatis全局配置及映射关系怎么实现

这篇文章主要介绍了Mybatis全局配置及映射关系怎么实现,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

一、配置文件内容

mybatis.xml就是Mybatis的全局配置文件。

全局配置文件需要在头部使用约束文件。

配置文件的顶层结构如下:

configuration(配置)    properties--属性:加载外部配置文件,例如数据库的连接信息    Settings--全局配置参数:例如日志配置    typeAliases--类型别名    typeHandlers--类型处理器    objectFactory--对象工厂    Plugins--插件:例如分页插件    Environments--环境集合属性对象        environment(环境变量)            transactionManager(事务管理器)            dataSource(数据源)    Mappers--映射器:注册映射文件

1.1、Proerties

属性可以在外部配置,并可以进行动态替换。我们既可以在properties元素的子元素设置(例如Datasource中的properties节点)也可以在java属性文件中配置。

数据源中有连接数据库的四个参数数据,我们一般都放在专门的属性文件中,mybatis的全局配置文件直接从属性文件中读取数据。

1、resources目录下创建jdbc.properties

jdbc.driver=com.mysql.cj.jdbc.Driverjdbc.url=jdbc:mysql://127.0.0.1:3306/mybatis?serverTimezone=UTC&characterEncoding=utf-8&serverTimezone=Asia/Shanghaijdbc.username=rootjdbc.password=123@qwe

2、mybatis.xml中引入配置文件

    

3、使用属性文件中的值

                      

1.2、设置setting

Mybatis中极为重要的调整设置,它们会改变Mybatis的运行行为,例如日志。

                 

1.3、类型别名typeAliases

可以为java类型设置一个缩写别名,仅用于xml配置,意在减低冗余全限定类名书写。
MyBatis中已经支持一些常见类型的别名,如下:

别名映射的类型
_bytebyte
_longlong
_shortshort
_intint
_integerint
_doubledouble
_floatfloat
_booleanboolean
stringString
byteByte
longLong
shortShort
intInteger
integerInteger
doubleDouble
floatFloat
booleanBoolean
dateDate
decimalBigDecimal
bigdecimalBigDecimal
objectObject
mapMap
hashmapHashMap
listList
arraylistArrayList
collectionCollection
iteratorIterator

也支持自定义别名:

                                     

1.4、映射器Mappers

1.4.1、使用相对于类路径的资源引用

语法:
使用相对于类路径的资源,从classpath路径查找文件
例如:

1.4.2、使用映射器接口实现类的完全限定类名

语法:
要求:接口和映射文件同包同名

1.4.3、将包内映射器接口全部注册为映射器

推荐

语法:
指定包下的所有mapper接口
例如:
注意:此种方法要求Mapper接口名称和mapper映射文件名称相同,且在同一个目录中

1.5、dataSource

Mybatis中访问数据库支持连接池技术,而且采用的自己的连接池技术。在mybatis.xml文件中进行配置,根据type属性创建相应类型数据源DataSource。
Mybatis数据源分三类:

  • UNPOOLED:不使用连接池数据源

  • POOLED:使用连接池数据源

  • JNDI:使用JNDI实现的数据源

前两个数据源都实现了javax.sql.Datasource接口

1.6、事务

默认手动提交事务:

Mybatis框架是对JDBC的封装,所以Mybatis事务的控制方式本身也是用JDBC的connection对象的commit()、rollback()方法,connection对象的setAutoCommit()设置事务提交方式为手动或者自动。

            

transactionManager 指定Mybatis所用事务管理器,支持:JDBC与MANAGED

JDBC事务管理机制,通过Connection对象的commit()方法提交,rollback()方法回滚。默认情况下Mybatis将关闭自动提交功能,观察日志可以看出,提交或者回滚都需要我们手动设置。

MANAGED:由容器来管理事务的整个生命周期(如Spring容器)

SqlSessionFactory的openSession()方法存在重载,可以设置自动提交方式。
如果sqlSession = SqlSessionFactory.openSession(true);
参数设置为true,再次执行增删改不需要执行sqlSession.commit(),事务会自动提交。

二、Mybatis中的关系映射

表结构如下:

2.1、一对一映射

添加实体类Player:

public class Player {     private Integer playerId;    private String playerName;    private Integer playerNum;    private Integer teamId;     private Team team1;    public Player() {    }    public Player(Integer playerId, String playerName, Integer playerNum, Integer teamId) {        this.playerId = playerId;        this.playerName = playerName;        this.playerNum = playerNum;        this.teamId = teamId;    }    @Override    public String toString() {        return "Player{" +                "playerId=" + playerId +                ", playerName='" + playerName + '\'' +                ", playerNum=" + playerNum +                ", teamId=" + teamId +                ", team1=" + team1 +                '}';    }    public Integer getPlayerId() {        return playerId;    }    public void setPlayerId(Integer playerId) {        this.playerId = playerId;    }    public String getPlayerName() {        return playerName;    }    public void setPlayerName(String playerName) {        this.playerName = playerName;    }    public Integer getPlayerNum() {        return playerNum;    }    public void setPlayerNum(Integer playerNum) {        this.playerNum = playerNum;    }    public Integer getTeamId() {        return teamId;    }    public void setTeamId(Integer teamId) {        this.teamId = teamId;    }    public Team getTeam1() {        return team1;    }    public void setTeam1(Team team1) {        this.team1 = team1;    }}

Mapper接口:

public interface PlayerMapper {    Player queryById(int playerId);    Player queryById1(int playerId);    Player queryById2(int playerId);    Player queryById3(int playerId);}

Mapper映射文件:

                                                                                                                                                 

测试类:

public class PlayerMapperTest {    private PlayerMapper mapper=MybatisUtil.getSqlSession().getMapper(PlayerMapper.class);    @Test    public void test1(){        Player player = mapper.queryById1(1);        System.out.println(player);    }    @Test    public void test2(){        Player player = mapper.queryById2(1);        System.out.println(player);    }    @Test    public void test3(){        Player player = mapper.queryById3(1);        System.out.println(player);    } }

2.2、一对多映射

修改实体类Team.java:

public class Team {    /**     * 球队ID     */    private Integer teamId;    /**     * 球队名称     */    private String teamName;    /**     * 球队地址     */    private String location;    /**     * 创立时间     */    private Date createTime;    /**     * 队员集合     */    private List playerList;    ...}

TeamMapper接口中添加方法:

    Team queryById1(int teamId);    Team queryById2(int teamId);

PlayerMapper接口中添加方法:

    List queryByTeamId(int teamId);

TeamMapper.xml中添加映射:

                                     

PlayerMapper.xml中添加映射:

  

测试类中添加测试方法:

 @Test    public void test13(){        TeamMapper mapper = sqlSession.getMapper(TeamMapper.class);        Team team = mapper.queryById1(1025);        System.out.println(team);    }    @Test    public void test14(){        TeamMapper mapper = sqlSession.getMapper(TeamMapper.class);        Team team = mapper.queryById2(1025);        System.out.println(team);    }

感谢你能够认真阅读完这篇文章,希望小编分享的"Mybatis全局配置及映射关系怎么实现"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

文件 配置 数据 事务 接口 数据源 方法 属性 类型 全局 别名 对象 射器 支持 篇文章 管理 事务管理 参数 名称 手动 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 凰家测评数据库 公安部网络安全学院 卸载党务系统数据库 教育网网络安全黑客 软件开发中常见的数据类型 git配置远程服务器 生活中的数据库新技术 株洲软件开发培训机构哪家好 虹口区品牌软件开发售后服务 年轻时尚的互联网科技公司名字 4g网络安全性比2g高吗 已断开与服务器的连接 深圳市合纵网络技术有限公司 12c rac删除数据库 南沙软件开发定制 按时租用服务器到时间了会怎么样 台服哪个服务器人多 通信网络技术服务业需求预测 金华淘宝客软件开发 打开数据库怎么设置日期 金山区咨询软件开发价钱 公安网络安全管理总结 佛山在远方互联网科技有限公司 年轻时尚的互联网科技公司名字 通讯软件开发价格比较 数据库提交成功是什么意思 护理学院思政数据库模块 网络安全法制教育活动 自己开发软件加服务器验证 aix查询数据库
0