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

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 stub
		SqlSession 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


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





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值