MyBatis是支持普通SQL语句查询,存储过程和高级映射的优秀持久层框架。
MyBatis封装了几乎所有的JDBC代码和参数的手工设置以及结果的检索。
MyBatis使用简单的xml或注解做配置和定义映射关系,将java的pojos(plain old java objects)映射成数据库中的记录。
MyBatis体系结构主要有以下几个关键部分:(1)加载配置(2)SQL解析
(加载配置)
(SQL解析)重点讲解
Mybatis工作流程:
1:首先要导入mybatis架包;
2:创建MybatisUtil.java,创建builder,然后builder创建factory,读取SqlMapConfig.xml,SqliMapConfig.xml里面关联着Mapper.xml文件,SqlMapConfig.xml里面主要是写数据源信息,Mapper.xml里面是一些查询语句,实现与java代码的分离,解耦作用
3:工厂创建SqlSession,然后从命名空间里面得到sqlid和参数,获取响应的statement,然后执行相应的方法
4:把调用方法得到的结果转换成相应的对象(list,map)输出。
<!-- 在mybatis中#与$的区别?? -->
看我的博客https://blog.youkuaiyun.com/qq_38704184
需要的架包:1:mybatis
2:mysql-connector
3:tomcat-dbcp
4:tomcat-jdbc
5:spring-web
1:对应数据库先写entity下的实体类,最好是实体类属性和数据库中的字段一样。
2:在util包下创建MyBatisUtil类,创建factoryBuilder,
Builder创建factory,factory读取SqlMapConfig.xml,文件,SqlMapConfig.xml文件里面读取你相应的和实体类一样名字+Mapper.xml文件,factory打开session,
3:配置SqlMapConfig.xml
<configuration>
<environments dafault=”environment”>
<environment id=”environment”>
<transactionManager type=”JDBC”/>
<dataSource type=”POOLED”>
<property name=”url” values=””/>
<property name=”driver” values=””/>
<property name=”username” values=””/>
<property name=”password” values=””/>
</environment>
</environments>
<mappers>
<mapper resource=”**Mapper.xml”/>
</mappers>
</configuration>
4:配置**Mapper.xml
<mapper namespace=””>
<select id=””></select>
如果实体类的属性和数据库中的字段不一致的话,下面我们将用resultMap,将我们实体类中的属性转换成数据库可以识别的字段,换个说法或者是转换成和数据库字段一样。
<insert id=””></insert>
<update id=””></update>
<delete id=””></delete>
</mapper>
此处的namespace值得是我们下面将要创建的**Mapper.java,用的是指定映射关系
5:创建**Mapper.java
这里我们创建的**Mapper.java是一个接口,里面的方法命名必须和我们**Mapper.xml里面的id是一一对应的。不要问为什么,甲鱼的背规定
6:创建一个测试类
用MyBatisUtil调用里面的getSession方法,然后session在调用getMapper方法,注意getMapper()括号里面要写成**Mapper.class,只有找到这也接口,下面才能使用接口中的方法,用mapper调用**Mapper.java里面的增删改查方法,,最后将结果转换成你想要的结果类型
7:总结:使用MyBatis好处是,使SQL语句和java代码分离,起到代码解耦作用,方便维护,方便修改。