如何把数据库的连接信息放到配置文件中加载呢
首先我们先创建一个配置文件。
driverClass=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatisplus
username=root
然后我们在mybatis的全局配置文件中配置响应的信息即可搞定。
<configuration>
<properties resource="db.properties"></properties>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driverClass}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value=""/>
</dataSource>
</environment>
从上面的方式可以看出我们在properties标签中有一个属性resource指向了数据库连接文件,然后在下面只要用${}就可以将配置文件中的值引入,除了resource属性还有url属性,区别是resource属性是相对于类路径下,url是绝对路径。
对mybatis框架运行时设置标签
<!--
2、settings包含很多重要的设置项,这个设置表示让mybatis遵循驼峰命名法,其实就是一般数据库中字段起名是user_name的方式,而pojo类中字段是userName驼峰形式,所以加入这个设置表示把数据库字段映射为pojo驼峰形式的字段。
-->
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"></setting>
</settings>
上图settings包含很多重要的设置项,这个设置表示让mybatis遵循驼峰命名法,其实就是一般数据库中字段起名是user_name的方式,而pojo类中字段是userName驼峰形式,所以加入这个设置表示把数据库字段映射为pojo驼峰形式的字段。
下面是设置别名
<!-- 3、typeAliases:别名处理器;可以为我们的java类型起别名
-->
<typeAliases>
<!-- typeAlias:为某个java类型起别名 type:指定要起别名的类型全类名,默认别名是类名小写 alias:指定新的别名-->
<!--<typeAlias type="com.test.Student" alias="stu"/>-->
<!-- package:为某个包下的所有类批量起别名 name:指定包名(为当前包及下面所有的后代包的每一个类都起一个默认别名,类名小写 ) -->
<package name="com.test" />
<!-- 批量起别名的情况下,使用@Alias注解为某个类型指定新的别名 -->
</typeAliases>
上面就是给pojo类取别名的方式,如果用这种方式取别名在mapper配置文件中返回类型就不用写全类名了,下面是包扫描,意思是在指定包下的所有类都遵循默认的别名,就是类名小写,但是有一种隐患,就是在指定包下的子包会有类名重复的可能,这就需要在pojo类上标上注解,指定别名就可以了。
@Alias("stu")
public class Student {
private int sid;
private String userName;
private String age;
切换不同的数据库连接
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driverClass}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value=""/>
</dataSource>
</environment>
<environment id="test">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driverClass}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value=""/>
</dataSource>
</environment>
</environments>
从上面可以看出我们配置了两个数据库连接,而environments标签的default指定的是默认使用哪一个数据库连接,可以自由切换,比如开发的数据库,测试的数据库,或者生产的数据库。
mybatis不同数据库执行sql语句的解决方案。
<!-- 5、databaseIdProvider:支持多数据库厂商的:
type="DB_VENDOR":VendorDatabaseIdProvider
作用就是得到数据库厂商的标识(驱动getDatabaseProductName())、mybatis就能识别Mysql、Oracle、Sql Server.....-->
<databaseIdProvider type="DB_VENDOR">
<property name="MySql" value="mysql"/>
<property name="Oracle" value="oracle"/>
<property name="Sql Server" value="sql server"/>
</databaseIdProvider>
首先先给不同的数据库定义好不同的别名。
<mapper namespace="com.test.mapper.StudentMapper">
<select id="findStudentAll" resultType="student" databaseId="oracle">
SELECT * from student where sid = #{sid}
</select>
<insert id="addStudentInfo" parameterType="com.test.Student" databaseId="mysql">
insert into student(user_name,age,user_address,sex,version) values(#{userName},#{age},#{userAddress},#{sex},#{version})
</insert>
</mapper>
上面的代码中 databaseId属性就可以指定当前sql按照哪个数据库的标准执行sql语句
mybatis配置文件中mapper标签的使用方法
<mappers>
<mapper resource="sql/studentMapper.xml"/>
<mapper url="file:E:\\IntelliJ IDEA 2018.3.2\\TestMybatis\\src\\main\\resources\\sql\\studentMapper.xml"/>
<mapper class="com.test.mapper.StudentMapper"/>
<!-- 批量注册: -->
<package name="com.test.mapper"/>
</mappers>
上面的图就是我们注册mapper的方式,其中有四种。
第一种是resource就是指定类路径下的mybatis的映射文件路径。
第二种方式就是url这种方式是指定映射文件的全路径,也就是磁盘的全路径。
第三种class就是接口映射,这种方式直接写上接口类路径是不行的,还要把映射文件与指定接口的文件放在同一类路径下才可以,当然用注解方式的话在创建的接口里在方法上标注注解,就不需要将mapper映射文件放在同类路径下,直接设定这个接口就可以运行。
第四种就是批量注册,它可以指定包下所有的映射文件加载上来。