(七)、配置解析
1.核心配置文件
- mybatis-configxml
2.环境配置(environment)
(1).Mybatis : 可以配置成适应多种环境
记住: 尽管可以配置多个环境,但每个SqlSessionFactory实列只能选择一种环境
(2).Mybatis 默认的事务管理器是JDBC, 默认的数据源是: POOLED
3.属性(properties)
属性可以在外部进行配置,并可以进行动态替换。你既可以在典型的 Java 属性文件中配置这些属性,也可以在 properties 元素的子元素中设置。
(1).属性在外部进行配置
属性在外部进行配置
【db.properties】
driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/mybatis?useSSL=false&useUnicode=true&charEncoding=gbk username=root password=121788
<?xml version="1.0" encoding="UTF8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "https://mybatis.org/dtd/mybatis-3-config.dtd"> <!--configuration核心配置文件--> <configuration> <properties resource="db.properties"></properties> <!-- 默认选项--> <environments default="development"> <!-- 第一套环境--> <environment id="development"> <!-- 事务管理器--> <transactionManager type="JDBC"/> <!-- 数据源 --> <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> <!-- 每一个Mapper.xml都需要在Mybatis核心配置文件中注册--> <mappers> <mapper resource="Com/Jsxs/Dao/UserMapper.xml"/> </mappers> </configuration>
(2).在内部配置文件
<?xml version="1.0" encoding="UTF8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "https://mybatis.org/dtd/mybatis-3-config.dtd"> <!--configuration核心配置文件--> <configuration> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false&useUnicode=true&charEncoding=gbk"/> <property name="username" value="root"/> <property name="password" value="121788"/> </dataSource> </environment> </environments> <!-- 每一个Mapper.xml都需要在Mybatis核心配置文件中注册--> <mappers> <mapper resource="Com/Jsxs/Dao/UserMapper.xml"/> </mappers> </configuration>
(3).如果两个文件有同一个字段,优先使用外部配置文件的
<?xml version="1.0" encoding="UTF8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "https://mybatis.org/dtd/mybatis-3-config.dtd"> <!--configuration核心配置文件--> <configuration> <properties resource="db.properties"> <property name="username" value="12345"/> <property name="password" value="123456"/> </properties> <!-- 默认选项--> <environments default="development"> <!-- 第一套环境--> <environment id="development"> <!-- 事务管理器--> <transactionManager type="JDBC"/> <!-- 数据源 --> <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> <!-- 每一个Mapper.xml都需要在Mybatis核心配置文件中注册--> <mappers> <mapper resource="Com/Jsxs/Dao/UserMapper.xml"/> </mappers> </configuration>
driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/mybatis?useSSL=false&useUnicode=true&charEncoding=gbk username=root password=121788
4.配置文件的位置顺序(约定大于配置)
5.类型别名(typeAliases)
(1).类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余的全限定类名书写。
核心配置文件
<?xml version="1.0" encoding="UTF8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "https://mybatis.org/dtd/mybatis-3-config.dtd"> <!--configuration核心配置文件--> <configuration> <properties resource="db.properties"></properties> <!-- 类型别名--> <typeAliases> <typeAlias type="Com.Jsxs.pojo.User" alias="User"></typeAlias> </typeAliases> <!-- 默认选项--> <environments default="development"> <!-- 第一套环境--> <environment id="development"> <!-- 事务管理器--> <transactionManager type="JDBC"/> <!-- 数据源 --> <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> <!-- 每一个Mapper.xml都需要在Mybatis核心配置文件中注册--> <mappers> <mapper resource="Com/Jsxs/Dao/UserMapper.xml"/> </mappers> </configuration>
返回类型运用别名代替
<?xml version="1.0" encoding="UTF8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "https://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!--namespace绑定一个对应的Dao/Mapper接口--> <mapper namespace="Com.Jsxs.Dao.UserMapper"> <!-- 查询语句全部用户--> <select id="getUserList" resultType="User"> select *from mybatis.user </select> <!-- 根据ID查询用户--> <select id="getUserById" parameterType="int" resultType="User"> select *from mybatis.user where id=#{id} </select> <!-- 增加一个用户,对象中的可以直接取出来--> <insert id="addUser" parameterType="User"> insert into mybatis.user(id,name,pwd) values (#{id},#{name},#{pwd}) </insert> <!-- 删除一个用户--> <delete id="removeUser" parameterType="int"> delete from mybatis.user where id=#{id} </delete> <!-- 更改用户的信息--> <update id="updateUser" > update mybatis.user set pwd="123456789" </update> </mapper>
(2).扫描实体类的包,它的默认别名就为这个类的类名。(不限大小写)
核心配置文件(扫描实体类的包)
<?xml version="1.0" encoding="UTF8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "https://mybatis.org/dtd/mybatis-3-config.dtd"> <!--configuration核心配置文件--> <configuration> <properties resource="db.properties"></properties> <!-- 类型别名--> <typeAliases> <package name="Com.Jsxs.pojo"/> </typeAliases> <!-- 默认选项--> <environments default="development"> <!-- 第一套环境--> <environment id="development"> <!-- 事务管理器--> <transactionManager type="JDBC"/> <!-- 数据源 --> <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> <!-- 每一个Mapper.xml都需要在Mybatis核心配置文件中注册--> <mappers> <mapper resource="Com/Jsxs/Dao/UserMapper.xml"/> </mappers> </configuration>
返回类型用别名来替代
<?xml version="1.0" encoding="UTF8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "https://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!--namespace绑定一个对应的Dao/Mapper接口--> <mapper namespace="Com.Jsxs.Dao.UserMapper"> <!-- 查询语句全部用户--> <select id="getUserList" resultType="User"> select *from mybatis.user </select> <!-- 根据ID查询用户--> <select id="getUserById" parameterType="int" resultType="User"> select *from mybatis.user where id=#{id} </select> <!-- 增加一个用户,对象中的可以直接取出来--> <insert id="addUser" parameterType="User"> insert into mybatis.user(id,name,pwd) values (#{id},#{name},#{pwd}) </insert> <!-- 删除一个用户--> <delete id="removeUser" parameterType="int"> delete from mybatis.user where id=#{id} </delete> <!-- 更改用户的信息--> <update id="updateUser" > update mybatis.user set pwd="123456789" </update> </mapper>
(3).使用建议
(1).在实体类比较少的时候,使用第一种方式。
(2).如果实体类十分多,建议使用第二种方式。
(3).区别: 第一种方式可以DIY(自定义)。第二种: 不行,如果非要改,需要在实体类上增加注解。
(4).注解优先级比配置高
@Alias("user");