MyBatis主配置文件中的properties元素的propertie子元素的value屬性的值,便可以直接定義,也能夠在主配置文件中定義而後引用,也能夠引用外部的properties文件。舉例子來講就是,以下的兩個xml的配置效果是同樣的。java
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <environments default="development"> <environment id="development"> <transactionManager type="jdbc"></transactionManager> <dataSource type="pooled"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/eesy"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> </environments> <mappers> <mapper resource="com/mybatis/dao/UserDao.xml"></mapper> </mappers> </configuration>
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <properties> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/eesy"/> <property name="username" value="root"/> <property name="password" value="root"/> </properties> <environments default="development"> <environment id="development"> <transactionManager type="jdbc"></transactionManager> <dataSource type="pooled"> <property name="driver" value="${driver}"/> <property name="url" value="${url}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> </dataSource> </environment> </environments> <mappers> <mapper resource="com/mybatis/dao/UserDao.xml"></mapper> </mappers> </configuration>
以上兩種形式,在開發過程當中通常不會這麼用。通常是直接類路徑下(在maven工程下就是resources目錄下)定義一個properties文件,而後在MyBatis的主配置文件中引用該文件,而後就能夠在主配置文件中直接引用。以下所示:mysql
jdbc.driver = com.mysql.jdbc.Driver jdbc.url = jdbc:mysql://localhost:3306/mybatis jdbc.username = root jdbc.password = root
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <properties resource="datasource.properties"></properties> <environments default="development"> <environment id="development"> <transactionManager type="jdbc"></transactionManager> <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> <mappers> <mapper resource="com/mybatis/dao/UserDao.xml"></mapper> </mappers> </configuration>
若是屬性在不僅一個地方進行了配置,那麼 MyBatis 將按照下面的順序來加載:sql
在MyBatis的映射配置文件中(也就是接口對應的XxxMapper.xml文件),每當指定一個java類的所屬類型時,都須要拼寫出該類的全限定類名。例以下面的xml配置所示。數據庫
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.mybatis.dao.UserDao"> <!-- 查詢全部 --> <select id="findAll" resultType="com.mybatis.domain.User"> SELECT * FROM user </select> <!-- 保存用戶 --> <insert id="saveUser" parameterType="com.mybatis.domain.User"> INSERT INTO user(username,birthday,sex,address) values(#{username},#{birthday},#{sex},#{address}) </insert> </mapper>
如上這樣配置存在一個問題,當配置文件少的時候還好,若是配置文件的數量一旦增多,就會致使工做量激增。因此就有了給java類的全限定類名取一個簡短的別名,用別名代替全限定類名,減小沒必要要的工做量。具體操做以下。mybatis
主配置文件中使用typeAliases標籤爲pojo的全限定類名去一個別名,而後把映射配置文件中pojo的全限定類名替換成別名便可。別名能夠任意,且當使用了別名後,別名將不區分大小寫。具體配置以下。app
主配置文件dom
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-- 注意configuration下的子標籤嚴格區分定義順序(使用順序) --> <properties resource="datasource.properties"></properties> <typeAliases> <!-- type:用於指定pojo的全限定類名; alias:用於指定別名 --> <typeAlias type="com.mybatis.domain.User" alias="user"></typeAlias> </typeAliases> <environments default="development"> <environment id="development"> <transactionManager type="jdbc"></transactionManager> <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> <mappers> <mapper resource="com/mybatis/dao/UserDao.xml"></mapper> </mappers> </configuration>
映射文件maven
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.mybatis.dao.UserDao"> <!-- 查詢全部 --> <!-- 使用了別名後pojo的別名不區分大小寫 --> <select id="findAll" resultType="user"> SELECT * FROM user </select> <!-- 保存用戶 --> <insert id="saveUser" parameterType="User"> INSERT INTO user(username,birthday,sex,address) values(#{username},#{birthday},#{sex},#{address}) </insert> </mapper>
以上操做雖然已經能極大的簡化咱們的開發,可是,一個項目中不可能只有一兩個pojo。因此若是咱們要使用上述的方式指定定義一個項目中全部pojo的話也不現實。typeAliases下除了typeAlias子標籤外,還有一個package子標籤,該標籤的做用是爲某個指定的包下全部的pojo一塊兒取別名,默認類名即爲別名。具體以下所示。url
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-- 注意configuration下的子標籤嚴格區分定義順序(使用順序) --> <properties resource="datasource.properties"></properties> <typeAliases> <!-- type:用於指定pojo的全限定類名; alias:用於指定別名 --> <typeAlias type="com.mybatis.domain.User" alias="user"></typeAlias> <!-- 爲com.mybatis.domain子包下的pojo一塊兒取別名,別名即爲類名 --> <package name="com.mybatis.domain"/> </typeAliases> <environments default="development"> <environment id="development"> <transactionManager type="jdbc"></transactionManager> <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> <mappers> <mapper resource="com/mybatis/dao/UserDao.xml"></mapper> </mappers> </configuration>
<select id="findById" parameterType="java.lang.Integer" resultType="com.mybatis.domain.User"> SELECT * FROM user WHERE id = #{id} </select>
屬性說明spa
<insert id="saveUser" useGeneratedKeys="true" keyColumn="id" keyProperty="id" parameterType="com.mybatis.domain.User"> INSERT INTO user(username,birthday,sex,address) values(#{username},#{birthday},#{sex},#{address}) </insert>
屬性說明
<update id="updateUser" parameterType="com.mybatis.domain.User"> UPDATE user SET username = #{username}, birthday = #{birthday}, sex = #{sex}, address = #{address} WHERE id = #{id} </update>
屬性說明
<delete id="deleteUser" parameterType="java.lang.Integer"> <!-- 當只有一個參數時,參數名稱能夠任意 --> DELETE FROM user WHERE id = #{id} </delete>