mybatis简单介绍:
它是一种ORM(object relational mapping)框架,即对象关系映射。意在根据对象和数据库记录之间的联系,实现操作对象就达到数据库的持久化存储(存储到硬盘)。
案例:做一个简单的图书表的增删改查,只涉及dao层
1.不管是xml配置还是注解配置,都需要这以下几个步骤。
(1)导入相应架包
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <!--3.3.0没有sessionFactory--> <mybatis.version>3.2.8</mybatis.version> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <!--mybatis--> <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dependency> <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.29</version> </dependency> </dependencies> <!--此配置指不忽略java文件夹下的所有xml文件和属性文件,十分重要--> <build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> </resources> </build>
(2)添加pojo类,即领域类,与数据库表对应,有基本属性(字段),get、set方法,toString()
(3)在resources文件夹下创建mybatis的配置文件,主要配置数据源(数据库参数),和相关mapper.xml的注册(如果基于xml配置)。
mybatis配置文件conf.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> <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/book" /> <property name="username" value="root" /> <property name="password" value="1234" /> </dataSource> </environment> </environments> <mappers> <!-- 注册BookMapper.xml文件,基于xml配置mybatis使用,若不是,不需要配置 userMapper.xml位于me.gacl.mapping这个包下,所以resource写成me/gacl/mapping/userMapper.xml--> <mapper resource="edu/cn/mapper/BookMapper.xml"/> </mappers> </configuration>
基于xml配置和基于注解配置的不同点的不仅是是否需要在配置文件上注册mapper文件,更大的不同是基于注解直接省略了mapper.xml文件的创建,相关的sql语句都写在dao层接口上,可以直接调用接口实现数据库的操作。
基于xml方式(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,namespace的值习惯上设置成包名+sql映射文件名,这样就能够保证namespace的值是唯一的 例如namespace="edu.cn.mapper.bookMapper"就是edu.cn.mapper(包名)+bookMapper(bookMapper.xml文件去除后缀) --> <mapper namespace="edu.cn.mapper.BookMapper"> <!-- 在select标签中编写查询的SQL语句, 设置select标签的id属性为getBook,id属性值必须是唯一的,不能够重复 使用parameterType属性指明查询时使用的参数类型,resultType属性指明查询返回的结果集类型 resultType="edu.cn.pojo.Book"就表示将查询结果封装成一个User类的对象返回 Book类就是bookta表所对应的实体类 --> <!-- 根据id查询得到一个book对象 --> <select id="getBook" parameterType="String" resultType="edu.cn.pojo.Book"> select * from bookta where isbn=#{isbn} </select> </mapper>