Mybatis(一:初级)

MyBatis
是一个半ORM的数据库持久化框架,就是来替换JDBC的,底层还是JDBC(所有持久层框架底层都是),所以单用Mybatis时,事务需要手动提交

历史扩展:它本是apache的一个开源项目iBatis,所以很多jar的名字还是iBatis

ORM:对象关系映射(Object Relational Mapping),一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术;
操作数据库关系方式有很多种,常用的是这两种:
1、半映射:把SQL写在配置文件中,通过不同SQL中完成对象实体和数据库关系相互转换的操作,如Mybatis
2、完整映射:直接使用对象实体和数据库关系进行映射,不用写SQL(简单的操作),由框架自己生成,如JPA、Hibenate
(P.S:就是需要写sql的就是半映射,不需要的就是完整映射,但是完整映射的sql也只是简单级别的,复杂度高的还是要自己写 )

=============================================================
1、核心配置文件:MyBatis-Config.xml,放在Source Folder下(这种文件夹下的文件,项目启动后会自动去读取)

<configuration>
    
	<properties resource="db.properties">properties>
	
	<environments default="development">
		
		<environment id="development">
			
			<transactionManager type="JDBC" />
			
			<dataSource type="POOLED">
                
                <property name="driver" value="${db.driver}" />
				<property name="url" value="${db.url}" />
				<property name="username" value="${db.username}" />	
				<property name="password" value="${db.password}" />
			dataSource>
		environment>
	environments>
   
	<mappers> 
		<mapper resource="cn/itsource/domain/ProductMapper.xml" /> 
	mappers> 
configuration> 

2、映射文件:关于配置文件,都放在resource文件下,包和java的要相同,这样在硬盘中是在同一目录下的




<mapper namespace="cn.itsource.dao.IProductDao">
	
	<select id="findById" parameterType="long" resultType="cn.itsource.domain.Product">
		select * from product where id = #{id}
	select>
mapper> 

3、抽取工具

public class MybatisUtils {

    private static SqlSessionFactory sqlSessionFactory;

    static {
        try {
            Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static SqlSession opSession() {
        if (sqlSessionFactory != null) {
            return sqlSessionFactory.openSession();
        }
        return null;
    }
}

4、测试:执行xml中的sql语句
4.1、传统方式:

	@Test
    public void testFindAll() throws Exception{
        //获取到会话对象
        SqlSession session = MybatisUtils.opSession();
        //通过命名空间+id,调用sql
        Product product = session.findById(“cn.itsource.dao.IProductDao”,1L);
    }

4.2、映射器Mapper
创建条件:
(1)Mapper映射文件(.xml)的命名空间,必须和接口的"完全限定名"一致;
(2)定义sql标签的id,需要和"接口的方法名"一致;

	@Test
    public void testFindAll() throws Exception{
        //获取到会话对象
        SqlSession session = MybatisUtils.opSession();
        //拿到映射对象,是通过mybatis自动创建的指定接口代理对象
        ProductMapper mapper = session.getMapper(ProductMapper.class);
        List<Product> products = mapper.findById(1L);
        //如果是增删改操作,事务需要手动提交
        //session.commit()
        //lambda表达式
        products.forEach(System.out::println);
    }

你可能感兴趣的:(java学习,mybatis,java)