全局配置文件
全局配置文件指的就是
MyBatis学习(一)中的mybatis-config.xml
必须实现的两个功能:
- 对数据库的配置
- 绑定sql映射的文件配置
<!-- 注意:每个标签必须按顺序写,不然蛋疼的DTD会提示错误:
The content of element type "configuration" must match
"(properties?,settings?,typeAliases?,typeHandlers?,objectFactory?,objectWrapperFactory?,plugins?,environments?,mappers?)".
-->
properties属性
在资源目录下新建一个数据库信息的配置文件dbconfig.properties
——数据库驱动为8.0版
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis?&serverTimezone = UTC&useSSL=false
jdbc.username=root
jdbc.password=777777
<!--利用properties引入数据库连接配置文件-->
<properties resource="dbconfig.properties"></properties>
<!--仅引入还不够,还需要读取-->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<!-- 修改数据源信息 -->
<dataSource type="POOLED">
<!--修改连接配置-->
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
settings设置
settings属性属于configuration属性下
mapUnderscoreToCamelCase参数
作用:是否开启自动驼峰命名规则映射,即从经典数据库列名A_Column到经典Java属性名aColumn的类似映射。默认为false
<configuration>
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
</configuration>
当开启自动驼峰命名映射后,对应数据库中表单项的Java类的属性名不必和数据库的列名一致,查询时会自动进行匹配
所以有两种方式可以解决pojo类和数据库表单项的属性名不一致:
- 查询的sql语句添加别名
- 在全局配置文件中添加settings属性mapUnderscoreToCamelCase参数
typeAliases类型命名
<typeAliases>
<!--1. 为单个类起别名
type:类的全路径
alias:别名,默认为类的首字母小写
-->
<!-- <typeAlias type="com.mybatis.bean.Employee" alias="emp"></typeAlias>-->
<!--2. 批量起别名
name:包名
别名为类名,大小写都可以,不区分大小写
同时可以搭配在特定类上添加@Alias("")注解来指定别名,不过这时只能使用指定的注解别名
-->
<package name="com.mybatis.bean"/>
</typeAliases>
mappers映射器
- 之前示例工程中是在全局配置文件mybatis-config.xml中使用标签mappers中的mapper resource参数来注册sql映射文件
<!--将sql映射文件注册到全局配置中-->
<mappers>
<mapper resource="EmployeeMapper.xml"/>
</mappers>
然后再sql映射文件配置sql语句
<mapper namespace="com.mybatis.sql.EmployeeMapper">
<!--名称空间:可以自定义名称
id:唯一标识
resultType:查询返回类型,值为表单项对应类的全类名
#{id}:从传递过来的参数中取出id值
-->
<!--1. 查询某个id的表单项-->
<select id="getEmpById" resultType="emp" >
select * from tbl_employee where id = #{id}
</select>
</mapper>
- 另一种方式是使用标签mappers中的mapper class参数来绑定sql映射接口
<mappers>
<mapper class="com.mybatis.sql.EmployeeMapper"></mapper>
</mappers>
然后在接口的方法上使用注释来配置sql语句
public interface EmployeeMapper {
@Select("select * from tbl_employee where id=#{id}")
public Employee getEmpById(Integer id);
}
- 批量注册,使用标签mappers中的package参数批量注册
- 比较重要的,复杂的Dao接口用sql映射文件实现;不重要,简单的Dao接口为了开发快速可以使用注解。