Mybatis初体验

这篇博客介绍了Mybatis的初步使用,从创建SqlSessionFactory开始,详细讲解了如何根据配置文件创建对象,解析mapper.xml文件,以及如何通过动态代理获取并使用代理对象进行数据库操作。在实际操作中遇到了配置文件找不到的问题,原因是mapper.xml未被编译到class目录,通过配置maven解决了这个问题。
摘要由CSDN通过智能技术生成

Mybatis初体验

1.根据配置文件创建SqlSessionFactory

想要使用mybatis,最先创建的对象为SqlSessionFactory的实例。这个对象的创建需要使用SqlSessionFactoryBuilder.builder()方法,这个方法需要一个参数,将配置文件传入。

   String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

下面的XML可以看个大概,<properties/>用来引入一个配置文件,看到下面的EL表达式,以及引入的配置文件名,可以看出来这个标签就是引入一个JDBC的配置文件。

<environments/>用来配置数据源。

剧透一下,<mappers/>用来注册<mapper/>,关于mapper的作用,下面介绍。

<?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-config.properties"></properties>

    <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="com/test/mapper/CollegeDaoMapper.xml"/>
    </mappers>
</configuration>

mapper

mybatis可以通过动态代理,根据mapper,动态创建一个对象

请看下面的mapper:

<?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.test.dao.ICollegeDao">
    <select id="getCollegeById" resultMap="college">
        select * from college where college_id = #{id};
    </select>

    <resultMap id="college" type="com.test.entity.College">
        <id column="college_id" property="id"></id>
        <result column="college_name" property="name"></result>
    </resultMap>

</mapper>
  • namespace属性:指出接口的全限定类名
  • <select/>表示接口中的查询方法,id属性指出方法名,resultMap指出表的记录每一列与实体类之间的对应关系。
  • <resultMap>配置数据库中表的记录每一列与实体类的关系。

分析得出,这里配置了一个查询方法,方法名为getCollegeById,他有一个参数id(下面的sql中,通过#{id}使用这个参数)。

表中college_id这一列,被封装到javabean时,封装到id字段;college_name这一列,被封装到javabean中时,封装到name字段。

根据上面的配置,Mybatis就可以通过动态代理生成一个代理对象

怎样获取代理对象?

获取上述的代理对象,需要使用SqlSession中的方法,所以,要先获取SqlSession的实例。

2.从SqlSessionFacory中获取SqlSession

 SqlSession sqlSession = sqlSessionFactory.openSession();

3.从SqlSession中获取代理对象

ICollegeDao collegeDao = sqlSession.getMapper(ICollegeDao.class);

4.使用代理对象操作

	College college = collegeDao.getCollegeById(1);
    System.out.println(college);

使用过程出现的问题:找不到配置文件

在这里插入图片描述

问题原因:IDEA编译之后,在class文件夹中没有将mapper.xml文件所在的文件加(包)拷贝到target\classes\com\test目录下,所以会找不到这个文件

在这里插入图片描述

解决方法:配置maven

src/main/java目录下的所有xml都参与编译

	<build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
        </resources>
	</build>

配置完之后,再次进行编译,就会出现一个文件夹,就是我们配置的包。

在这里插入图片描述

这样,类就可以找到配置文件了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值