用对象的思维了解使用Mybatis框架

来源:互联网 发布:apache modwsgi 编辑:程序博客网 时间:2024/06/06 02:34

1.虽然不想说一些闲话,但是我还是觉得有些必要,关于思维的思考。

最近在学习Mybatis的时候,我发现我一直都仅仅把Mybatis框架看作是一个技术的框架,一个工具,也跟hibernate联系的学习了起来,虽然收获颇丰,但是总觉得好像在

兜圈子,深深的想了下,发现这样的理解可能是对的,但是我觉得这样好像会使自己的思维固定,所以我又认真的想了想,有没有更好的方法呢?后面我发现用对象的思想的理

解好了很多,因为万物都是对象吗,我们可以把我们用到的一些框架当作是一个个的对象来理解,不知道这样会不会更好理解一点呢?

我觉得框架拥有对象应该有的一切属性。

2.自从有了这个思维,我就开始的去想,去验证,到底是不是这样:

首先我们创建对象的步骤是不是这样的:

(1)创建一个高度抽象的对象,其实就是我们常用的类

(2)在使用我们创建的对象的时候,用new关键字来创建对象

(3)接着就是调用对象里面的方法。

然后我们看看使用框架的使用的步骤:

(1)肯定要导入jar包,java中省略是因为本身就由很多的jar

(2)肯定是导入一些配置文件,然后再去修改配置达到我们的目的。(类比了一下,我觉得这就是我们创建类的过程)

(3)毫无疑问,就是创建使用的对象了,就是读取xml文档等,获得对象

(4)也是调用它提供给我们的方法

这样看来是不是感觉有点的相似呢?

接着,我们每一次主动的去配置文件,是不是就是相当于给我们的类去添加方法,无非就是方法的名,传入的参数,返回值的类型等,不过每个框架都有自己的原则规范。

我觉得自从我这样理解,我就感觉框架我就会了一半了,当然这是夸张的说法,毕竟框架要考虑的东西还有很多,但对于我们去使用,应该不成问题。

所以在理解上,框架就是一个对象

3.下面我们就通过一个例子来玩转Mybatis框架的基本使用;

3.1首先应用它做一个查询的操作:

跟上面说的框架的使用步骤一样:

我们就跳过(1)(2)步骤,直接从第三个步骤开始:

(3)配置mybatis-config.xml文件跟UserMapper.xml文件,如下图所示(不懂得可以参照我的上一篇文章,或许你会有点感悟Mybatis学习)

mybatis-config.xml文件(这个就是相当于我们创建的基本类,通过mappers标签引入嵌入类)


<?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/mybatis_db" />    <property name="username" value="root" />    <property name="password" value="yqy" />                       </dataSource></environment></environments><mappers>         <mapper resource="com/zqu/mybatis/dao/pojo/User.xml" /></mappers></configuration>
UserMapper.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="com.zqu.mybatis.dao.pojo.UserMapper"><select id="GetUserByID" parameterType="int" resultType="User">select uname as "uname",upwd as "upasword" from `user` where uid = #{uid}    </select></mapper>
一个mapper就相当于一个嵌入类,select标签就是一个方法的类型,还有insert,update,delete等,其实就是

相当于平常对象里面的void,String,int等类型,id = 方法名 ,parameterType = 参数,resultType = 返回类型

毫无疑问下面的sql语句就是我们的定义一个方法的过程,在Mybatis用OGNL的方法接受参数,就是#{},用${}也行,但是线程不安全,pojo类的难以处理,建议用#{}

这样是不是就感觉简单了很多,我知道很多人也有这种的感觉

(4)创建一个POJO类java的普通对象User

package com.zqu.mybatis.dao.pojo;public class User {private int uid;private String uname;private String upasword;public User() {// TODO Auto-generated constructor stub}public User(int uid, String uname, String upasword) {super();this.uid = uid;this.uname = uname;this.upasword = upasword;}public int getUid() {return uid;}public void setUid(int uid) {this.uid = uid;}public String getUname() {return uname;}public void setUname(String uname) {this.uname = uname;}public String getUpasword() {return upasword;}public void setUpasword(String upasword) {this.upasword = upasword;}}
(5)我们就要去使用了,装备都已经装好了,现在上战场把:

package com.zqu.mybatis.dao.pojo;import java.io.Reader;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;public class HelloWorld {private static SqlSessionFactory sqlSessionFactory;private static Reader reader;static {try {reader = Resources.getResourceAsReader("Config.xml");sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);} catch (Exception e) {e.printStackTrace();}}public static SqlSessionFactory getSession() {return sqlSessionFactory;}/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubSqlSession session = sqlSessionFactory.openSession();try {String statement = "com.zqu.mybatis.dao.pojo.UserMapper.GetUserByID";User user = (User) session.selectOne(statement, 2);if(user!=null){String userInfo = "名字:"+user.getUname()+", 密码::"+user.getUpasword();System.out.println(userInfo);}} finally {session.close();}}}

结果显示:

名字:剑魔, 密码::12345631


文章就写到这里啦,有什么不对的地方,希望多多谅解,留言让我改正,学习,谢谢。





0 0