Mybatis快速复习--全局配置文件(一)

简介: Mybatis快速复习--全局配置文件(一)

MyBatis-全局配置文件


配置文件很重要,下面我们来看看配置文件中的参数都是什么意思!

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

  • configuration(配置)
  • properties(属性)
  • settings(设置)
  • typeAliases(类型别名)
  • typeHandlers(类型处理器)
  • objectFactory(对象工厂)
  • plugins(插件)
  • environments(环境配置)
  • environment(环境变量)
  • transactionManager(事务管理器)
  • dataSource(数据源)
  • databaseIdProvider(数据库厂商标识)
  • mappers(映射器)


properties


mybatis可以使用properties来引入外部properties配置文件的内容 resource:引入类路径下的资源 url:引入网络路径或磁盘路径下资源

xml

复制代码

<propertiesresource="jdbc.properties"></properties>

设置好的属性可以在整个配置文件中用来替换需要动态配置的属性值。

<!--数据源-->
    <environments default="mysql">
        <environment id="mysql">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"></property>
                <property name="url" value="${jdbc.url}"></property>
                <property name="username" value="${jdbc.username}"></property>
                <property name="password" value="${jdbc.password}"></property>
            </dataSource>
        </environment>
    </environments>

前面的例子我们用的也是这种方式,写一个配置文件在外部,之后我们在全局配置文件中通过properties引入配置文件,之后通过${}来取配置文件中的值


settings


这是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。 下表描述了设置中各项设置的含义、默认值等。

驼峰命名的开启很重要,因为在数据库中的字段两个字母组成的意思的时候往往通过下划线(_)分割,但在java中都是驼峰型的。为了解决这个问题,可以开启mapUnderscoreToCamelCase 来进行数据库字段和java属性的映射。下面会有演示

settings包含很多重要的设置项 setting用来设置每一个设置项 name设置项名 value设置项取值

<settings>
    <setting name="mapUnderscoreToCamelCase" value="true"/>
    <setting name="aggressiveLazyLoading" value="false"/>
</settings>

第一个我们开启了驼峰映射,第二个是延迟加载后面我们会说

我们来看看是怎么映射的

@Alias("emp")
public class Employee {
    private Integer id;
    private String lastName;
}

我们的实体类Employee这个字段名是lastName

数据库中的这个字段是last_name 开启后,会自动把last_name映射为lastName所以查询的话是能查询成功的

这个是sql映射文件(接口式编程,我们要先在接口中定义getEmpById方法,参数设置为id)

<!--    id指定接口中的方法,这样不仅文件和接口绑定,select标签也和方法进行了绑定
什么意思呢?就是select这个标签是EmployeeMapper接口下getEmpById方法的实现
-->
<select id="getEmpById" resultType="emp">
    select * from tbl_employee
    where id = #{id}
</select>

测试

//    接口式编程,方便解耦
    @Test
    public void test01() throws IOException {
//        1、获取sqlSessionFactory对象
        SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
//        2、获取sqlSession对象
        SqlSession openSession = sqlSessionFactory.openSession();
        try {
            //        3、获取接口的实现类对象
            EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);
//            第二种方式是先获取接口的实现类对象,之后实现接口的方法传入参数
            Employee employee = mapper.getEmpById(1);
            System.out.println(employee);
        } finally {
            openSession.close();
        }
    }

Employee{id=1, lastName='tom', email='tom@caq.com', gender='0'}

可以看到lastName是有值的

如果关闭驼峰,lastName这列是不显示值的如下

<settings>
    <setting name="mapUnderscoreToCamelCase" value="false"/>
    <setting name="aggressiveLazyLoading" value="false"/>
</settings>
中间的步骤一样不在赘述,结果为:
Employee{id=1, lastName=NULL, email='tom@caq.com', gender='0'}


typeAliases


类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余的全限定类名书写。例如:

typeAliases:别名处理器,可以为我们的java类型起别名 别名不区分大小写 typeAliases为某个java类型起别名 type:指定要起别名的类型全类名;默认别名就是类名小写;employee alias:指定新的别名

package:为某个包下的所有类批量起别名name:指定包名(为当前包以及下面所有的后代包的每一个类都起一个默认别名(类名小写))

<typeAliases>
    <typeAlias type="com.caq.mybatis.bean.Employee" alias="emp"></typeAlias>
</typeAliases>
<!--批量别名-->
<typeAliases>
    <package name="com.caq.mybatis.bean"/>
</typeAliases>

批量起别名的情况下我们不想用默认的话,可以使用@Alias注解为某个类型指定新的别名

是吧,我们在Employee实体类上面加了个@Alias给它起了个别名叫emp

@Alias("emp")
public class Employee {}

但是呢,虽然有别名,为了项目更好的维护我们一般都使用全类名。要不然谁知道你写的别名是啥意思



相关文章
|
7月前
|
XML Oracle Java
mybatis反向生成实体类、dao层以及映射文件
mybatis反向生成实体类、dao层以及映射文件
|
7月前
|
XML Java 数据库连接
mybatis环境搭建步骤(含配置文件代码)
mybatis环境搭建步骤(含配置文件代码)
|
7月前
|
XML Java 数据库连接
mybatis中在xml文件中通用查询结果列如何使用
mybatis中在xml文件中通用查询结果列如何使用
443 0
|
7月前
|
SQL
Mybatis.xml文件中大于小于等于
Mybatis.xml文件中大于小于等于
82 0
|
6月前
|
XML Java 数据库连接
MyBatis入门——MyBatis XML配置文件(3)
MyBatis入门——MyBatis XML配置文件(3)
87 6
|
3月前
|
SQL XML Java
mybatis :sqlmapconfig.xml配置 ++++Mapper XML 文件(sql/insert/delete/update/select)(增删改查)用法
当然,这些仅是MyBatis功能的初步介绍。MyBatis还提供了高级特性,如动态SQL、类型处理器、插件等,可以进一步提供对数据库交互的强大支持和灵活性。希望上述内容对您理解MyBatis的基本操作有所帮助。在实际使用中,您可能还需要根据具体的业务要求调整和优化SQL语句和配置。
64 1
|
5月前
|
SQL Java 数据库连接
idea中配置mybatis 映射文件模版及 mybatis plus 自定义sql
idea中配置mybatis 映射文件模版及 mybatis plus 自定义sql
102 3
|
6月前
|
SQL XML Java
后端数据库开发JDBC编程Mybatis之用基于XML文件的方式映射SQL语句实操
后端数据库开发JDBC编程Mybatis之用基于XML文件的方式映射SQL语句实操
77 3
|
5月前
|
XML Java 数据格式
支付系统----微信支付20---创建案例项目--集成Mybatis-plus的补充,target下只有接口的编译文件,xml文件了,添加日志的写法
支付系统----微信支付20---创建案例项目--集成Mybatis-plus的补充,target下只有接口的编译文件,xml文件了,添加日志的写法
|
5月前
|
Java 数据库连接 Maven
Private method ‘getVideoList()‘ is never used,mybatis必须指定Mapper文件和实体目录,在参考其他人写的代码,要认真分析别人的代码,不要丢失
Private method ‘getVideoList()‘ is never used,mybatis必须指定Mapper文件和实体目录,在参考其他人写的代码,要认真分析别人的代码,不要丢失