Map的使用
接口: int addUserMap(Map<String,Object> map);
实现: <insert id="addUserMap" parameterType="map">
insert into ljqdb.user (username, password) VALUES (#{name},#{pass})
</insert>
测试类:
@Test
public void addUserMap(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//创建map接收
Map<String,Object> map = new HashMap<>();
map.put("name","麻子黄");
map.put("pass","xiao");
mapper.addUserMap(map);
//提交事务
sqlSession.commit();
//关闭sqlSession实例
sqlSession.close();
}
配置中的属性优化、别名优化、映射器说明
配置文件mybatis-config.xml,在xml中标签排列都有规则和顺序
首先每一个mapper.xml都需要在配置文件中注册
<mappers>
<mapper resource="dao/UserMapper.xml"/>
</mappers>
环境配置(environments)
不过要记住:尽管可以配置多个环境,
但每个 SqlSessionFactory 实例只能选择一种环境。
所以,如果你想连接两个数据库,就需要创建两个 SqlSessionFactory 实例,
每个数据库对应一个。而如果是三个数据库,就需要三个实例,依此类推,记起来很简单:
每个数据库对应一个 SqlSessionFactory 实例
<environments default="development">
<environment id="development">
<transactionManager type="JDBC">
<property name="..." value="..."/>
</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>
其中事务管理器中有两种
jdbc和managed 默认jdbc,带有提交和回滚设施
数据源
默认用池POOLED– 这种数据源的实现利用“池”的概念将 JDBC 连接对象组织起来,
避免了创建新的连接实例时所必需的初始化和认证时间。
这种处理方式很流行,能使并发 Web 应用快速响应请求。
属性(properties)
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
可以在properties文件中配置后引入
<properties resource="db.properties"/>引入位置在最上方
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ljqdb
jdbc.username=root
jdbc.password=root
类型别名(typeAliases)
类型别名可为 Java 类型设置一个缩写名
<typeAliases>
<typeAlias alias="Author" type="domain.blog.Author"/>
</typeAliases>
<typeAliases>
<package name="pojo"/>扫描整个包,将首字母小写类名定为其别名
</typeAliases>
如果实体类上有注解则别名为其注解值
@Alias("author") 是mybatis下的注解
public class Author {
...
}
设置(settings)
一个完整的设置
<settings>
<setting name="cacheEnabled" value="true"/>
<setting name="lazyLoadingEnabled" value="true"/>
<setting name="multipleResultSetsEnabled" value="true"/>
<setting name="useColumnLabel" value="true"/>
<setting name="useGeneratedKeys" value="false"/>
<setting name="autoMappingBehavior" value="PARTIAL"/>
<setting name="autoMappingUnknownColumnBehavior" value="WARNING"/>
<setting name="defaultExecutorType" value="SIMPLE"/>
<setting name="defaultStatementTimeout" value="25"/>
<setting name="defaultFetchSize" value="100"/>
<setting name="safeRowBoundsEnabled" value="false"/>
<setting name="mapUnderscoreToCamelCase" value="false"/>
<setting name="localCacheScope" value="SESSION"/>
<setting name="jdbcTypeForNull" value="OTHER"/>
<setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
</settings>
映射器(mappers)
直接告诉 MyBatis 到哪里去找映射文件
<!-- 使用相对于类路径的资源引用 -->
<mappers>
<mapper resource="org/mybatis/builder/AuthorMapper.xml"/>
</mappers>
<!-- 使用完全限定资源定位符(URL) -->
<mappers>
<mapper url="file:///var/mappers/AuthorMapper.xml"/>
</mappers>
<!-- 使用映射器接口实现类的完全限定类名 -->
<mappers>
<mapper class="org.mybatis.builder.AuthorMapper"/>
</mappers>
<!-- 将包内的映射器接口实现全部注册为映射器 -->
<mappers>
<package name="org.mybatis.builder"/>
</mappers>