mybatis框架
1.MyBatis是什么?
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis,实质上Mybatis对ibatis进行一些改进。
MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。
Mybatis通过xml或注解的方式将要执行的各种statement(statement、preparedStatemnt、CallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回
2.Mybatis架构图
3.使用Mybatis
3.1引入Mybatis的jar包
略
3.2配置Mybatis的全局配置文件
mybatis-config.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"></properties> <settings> <setting name="cacheEnabled" value="true"></setting> <setting name="lazyLoadingEnabled" value="true"/> <setting name="aggressiveLazyLoading" value="true"/> </settings> <!--使用该包下的类的简单名称做别名--> <typeAliases> <package name="cn.happy.entity"></package> </typeAliases> <environments default="development"><!--环境--> <environment id="development"> <transactionManager type="JDBC"/><!--一共两种jdbc和jdbc【manage】--> <dataSource type="POOLED"><!--unpolled jndi--> <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="cn/happy/dao/IUserInfoDao.xml"/>--><!--扫描对应的小配置文件,仅能扫描单个--> <package name="cn.happy.dao"></package><!--扫描对应包下的小配置--> </mappers> </configuration>
jdbc.properties文件
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql:///user jdbc.username=root jdbc.password=root
ICategoryDAO.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="cn.happy.dao.ICategoryDAO"><!--关联的dao层文件--> <resultMap id="categoryMapper" type="Category"> <id column="id" property="id"></id> <result column="name" property="name"></result> <result column="parentid" property="parentid"></result> <collection property="list" ofType="Category" select="getlist" column="id"> </collection> </resultMap> <select id="getlist" resultMap="categoryMapper"> SELECT * from category WHERE parentid=#{id} </select> </mapper>