一、什么是mybaits
mybatis是基于普通sql查询,存储过程,以及高级映射的持久层框架
二、mybatis核心对象
大家都知道每一个框架都有一个核心对象,mybatis不列外,SqlSessionFactory就是mybatis核心对象
,该对象可以通过SqlSessionFactoryBuilder从xml配置文件,或者从Configuration累的习惯准备的实例中获
得,我们主要学习从xml中获取
三、怎么从xml中获取对应的核心对象
1、准备mybatis的xml文件myBatis-config.xml
<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEconfigurationPUBLIC"-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 环境 -->
<environmentsdefault="development">
<environmentid="development">
<transactionManagertype="JDBC"/>
<dataSourcetype="POOLED">
<propertyname="driver"value="com.MySQL.jdbc.Driver"/>
<propertyname="url"value="jdbc:mysql://localhost:3306/mybatis"/>
<propertyname="username"value="root"/>
<propertyname="password"value="admin"/>
</dataSource>
</environment>
</environments>
<!-- 包含所有映射器 -->
</configuration>
2、xml文件myBatis-config.xml的介绍
environments 节点:mybatis的环境集合
environment 节点:用于配置环境,id则为环境名称,environments中的default属性的值则从
environment的id中选取,选取后则为默认的数据库运行连接环境
transactionManager:事务处理区,默认的为jdbc的事务处理器
dataSource :数据源的配置
3、新建一个新的动态web工程,项目结构如下:
导入mybatis的jar文件
可以看到以上有log4j的jar文件,那么我们需要引入一个log4j.properties的资源文件,可以参考hibernate或者struts中会有相应文件的demo
3、从xml中获取SqlsessionFactory对象
String resource = "myBatis-config.xml";
//解析数据源
Reader reader = Resources.getResourceAsReader(resource);
//获取绘画工厂
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
我们可以将sessionFactory进行打印,则可以看到是否是获取到对应的SqlSessionFactory对象
四、大家最关心的问题是怎么和数据库关联
我们新建一个简单的pojo类,如Employee.Java,这里getter和setter方法大家自己加上,我这里省去在数据库表中建立好对应的数据库,mybatis,并建立对应的表employee
publicclass Employee {
private Longid;
private Stringname;
private Stringpassword;
}
要和数据库关联那我们就得有一个数据库的配置文件,在mybatis总通常用xxxMapper.xml进行配置,并一般情况卸载domain类中,如这里的EmployeeMapper.xml;配置如下:
<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEmapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- -->
<mappernamespace="cn.mybatis.domain.EmployeeMapper">
<!--
parameterType:如果Sql需要传入参数,指传入参数类型
resultType: 查询的数据需要封装为哪个对象,将返回
ResultSet记录自动封装成指定类型的对象集(全类名)
-->
<selectid="selectBlog"parameterType="Long"resultType="cn.mybatis.domain.Employee">
select * from Employee where id = #{id}
</select>
<!-- <delete id=""></delete> -->
<!-- <update id=""></update> -->
<!-- <insert id=""></insert> -->
</mapper>
这里的namespace在以前是可以不需要的,在新版本中这个是必须的,通常命名规范为,包名+类名+Mapper
特别注意<select>标签这是mybatis的标签,同样可以看到我在下面添加了另外三种常用的标签;这样写完之后,大家看下select * fromBlog where id = #{id};以前我们的占位符都是?,这里用#{}切忌不能换成?
写了mapper.xml那我们要用起来,则需要在原来myBatis-config.xml添加差早方式
<!-- 包含所有映射器 -->
<mappers>
<mapperresource="cn/ycj/mybatis/domain/EmployeeMapper.xml"/>
</mappers>
添加在environments标签外
那么执行持久化操作,
先前我们已经拿到sessionFactory对象,通过该对象进行持久化操作
//获取session
SqlSession session =sessionFactory.openSession();
//执行操作
Blog blog=session.selectOne("selectBlog",1L);
System.out.println(blog);
session.close();
这样便简单执行了一个查询方法;同理还有其他的crud操作
<E> List<E> selectList(String statement, Object parameter);
void close();
void commit(boolean force);
void commit();
int delete(String statement, Object parameter);
int update(String statement, Object parameter);
int insert(String statement, Object parameter);
<T> T selectOne(String statement, Object parameter);
这里只列举了常用方法,其他方法我们可以在源码SqlSession接口中查看