基本API
MyBatis概述:解决dao层频繁创建释放相关资源,解除sql语句与执行操作的耦合,简化封装实体的操作
相关API
SqlSessionFactoryBuilder:工厂构建器,用于创建SqlSessionFactory对象
** build() 参数一般为读取核心文件的流对象(文件对象),创建SqlSessionFactory对象
SqlSessionFactory:创建SqlSession核心对象
** openSession() 默认自动启动事务机制,可设置参数true自动提交,创建SqlSession:执行sql语句对象
SqlSession:执行sql语句对象(参数为sql映射文件的命名空间.具体语句的id 和参数)
** selectOne() 查询一条
** selectList() 查询多条
** insert update delete 增改删操作 commit 事务提交 rollback 事务回滚
配置文件基本的一些配置
映射文件(主要用来设置sql语句和与实体类之间的映射关系)
基本标签
<mapper> 此配置文件的根标签
** 属性 namespace 定义此映射关系的命名空间名
<inserrt> <delete> <update> <select> 对应增删改查标签
** 属性 id 此条sql语句的唯一标识,结合命名空间名在dao层内被操作
resultType 返回结果的类型(全包名/相应的别名),MyBatis会将结果封装到此类型的对象中
parameterType 参数的类型(同上),在sql语句中如果是实体类型可以根据 #{属性名} 的方式直接
使用,如果只有一个可直接使用
核心配置文件(用来设置数据源、引入映射文件、设置别名等)
基本标签
<configuration> 根标签
<properties resource="jdbc.properties"/>
** 读取外部properties配置文件
<environments default="development">
** 数据库环境配置,default默认环境(支持多环境)
<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>
<typeAliases>
<typeAlias type="domain.Bank" alias="bank"/>
</typeAliases>
<mappers>
<mapper resource="domain\BankMapper.xml"/>
</mappers>
示例(查询一条为例)
** maven相关jar坐标(需要依赖数据库连接包)
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
** BankMapper.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="bankMapper">
<select id="find" resultType="bank" parameterType="int">
select * from bank where id=#{id}
</select>
</mapper>
** SqlMapConfig.xml核心配置文件
<?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="jdbc.properties"/>
<typeAliases>
<typeAlias type="domain.Bank" alias="bank"/>
</typeAliases>
<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>
<mappers>
<mapper resource="domain\BankMapper.xml"/>
</mappers>
</configuration>
** 测试类
@Test
public void find() throws IOException {
InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = factory.openSession();
Bank bank = sqlSession.selectOne("bankMapper.find", 1);
System.out.println(bank);
}
Bank实体类为标准javaBean