一、背景
最近在研究Java的框架,刚刚接触到java对于数据访问层封装的框架之一,MyBatis,不得不说使用起来很是方便,跟写sql语句的感觉一样一样的;顺便读了少部分官方文档,由于英文有限读的太慢,只是读了一点关于作用域的内容,后续继续发现新东西...本文都是建立在自己对于MyBatis的理解之上的,标准还是要参靠官方文档...
二、理解
1.两种使用方式
注解:使用注解在接口中的方法上方插入sql语句即可,缺点:如果sql语句很长,那么就会显得不那么美观了,而且觉得会破坏java代码的可读性
xml:清晰明了
两种方式用哪种都行,看个人喜好吧...性能都差不多(反正注解也是在编译期间生成文件)
2.使用步骤
①创建mybatis的配置文件,配置文件的内容有很多,目前只用了这几种配置
<configuration>
<!--外部文件指定了驱动,连接,账号,密码-->
<properties resource="jdbc.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>
<!--指定mapper文件(xml写法需要指定)-->
<mappers>
<mapper resource="Regist.xml"/>
<mapper resource="Login.xml"/>
</mappers>
</configuration>
②创建接口
public interface IRegist {
public void regist(User user);
}
③创建Mapper文件
<!--命名空间必须为接口全路径-->
<mapper namespace="com.huimin.mybatis.IRegist">
<!--id是接口中的方法名,parameterType是参数类型,resultType是返回值类型-->
<select id="regist" parameterType="com.huimin.dao.User" resultType="">
-- sql语句,#{}会被翻译成PreparedStatement,${}会被翻译成普通的Statement
INSERT INTO person (username,password) VALUES (#{username},#{password})
</select>
</mapper>
④写Dao层
try {
SqlSession sqlSession = new SsfInstance().Instance().openSession();
IRegist regist = sqlSession.getMapper(IRegist.class);
regist.regist(user);
sqlSession.commit();
sqlSession.close();
return 1;
} catch (Exception e) {
e.printStackTrace();
}
SqlSessionFactory用单例模式创建的,整个项目就一个,直接用就行
三、分析
1.方便,内部封装了数据库连接池,省去了反复创建连接,关闭连接,而且极大的优化数据库操作的性能
2.稳定,内部分装了事务,保证了数据库的一致性,对于数据库的增删改都需要提交和关闭操作
相对于jdbc来说,mybatis是真的方便,以上只是对于单独使用mybatis时的简单理解,有待继续深究...