浅谈MyBatis的应用

  • ## 浅谈MyBatis的应用
    这个账号是我不久才注册的,为的当然是学习。这篇文章也是我第一次发,如果有什么不好的,请多多指教,因为我就是菜鸟。
    前面当然是心灵鸡汤:谈谈自律:这里借用别人的一句话,你有多自律,你就有多自由。
    自由来源于自信,自信是对事的掌控。自信来源于自律,自律是对自我的掌控。

    由于项目可能要用到 ibatis ,所以我今天复习了一下mybatis的用法,这里只谈mybatis,不谈他和spring的结合应用,如果有所帮助,十分欣慰。
    1什么是mybatis?
    官方的说:mybatis是基于ORM(Object Relational Mapping,对象关系映射)的一个apache下的一个开源项目,他的前身是ibatis,两者相差不大(没仔细研究,听别人说的),用我的话说:它就是一个工具,一个jar包,一个用来操作数据的工具。将数据从数据库中映射到对象上–实现数据的可视化利用,或将对象映射到数据库中–保存对象的信息于数据库中。
    2 它的优点(copy的):
    MyBatis消除了几乎所有的 JDBC 代码 ,使用简单的XML 或注解用于配置和原始映射, 将数据库中的记录映射成 Java 的 POJOs(Plan Old Java Objects) 。
    3 说了这么多,到底是咋用的呢?
    说到底,他算是一个框架。
    准备工作:1 当然是Java的基本编程工具
    2 它所需要的基本zar包(网上随便找) 基本包
    4 执行流程(可以看看,挺好的)
    执行流程
    5 要开始了
    新建一个Java项目就行,随便建一个lib包,导入或直接copy进你的基本包(记得build path)。
    ****a:sqlConfi配置文件,最重要的配置文件,里面有数据源的配置,和事物的控制,随便建一个资源包,或就在src目录下新建一个xml文件,名字最好带config,这样容易区别,例如shachaConfig.xml,把下面的copy进去
       <!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"></transactionManager> 			
    	   				<dataSource type="POOLED">
    	   				<property name="driver" value="com.mysql.jdbc.Driver"/>
    	   				<property name="url" value="jdbc:mysql://localhost:3306/my?characterEncoding=UTF-8"/>
    	   				<property name="username" value="root"/>
    	   				<property name="password" value="zf123"/> 			
    	   				</dataSource> 		
    	   		</environment> 
    	   	</environments>
       		<mappers > 		
       			  <mapper  resource="beanMapping.xml"/> 	
       		</mappers> 
        </configuration>
          这个应该很容易看懂,如果你了解一点jdbc知识的话。(我这个是mysql数据库)
      **b:在相应的库中随便建一个demon表,插入几条数据**
         CREATE TABLE usertest(
           id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
           `name` VARCHAR(40), 
           age INT
		   )
   
	   INSERT INTO usertest  (`name`,age) VALUES('李四',28)
     c:建一个pojo类,就是普普通通的类,让他和你刚建的表字段相对应,(要一样,一样省事)(不一样可以,不过要配置一个字段和列相对应的xml)
package beanMapping;

public class UserTest {
	private int id;
	private String name;
	private int age;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	@Override
	public String toString() {
		return "UserTest [id=" + id + ", name=" + name + ", age=" + age + "]";
	}
	
}

      **d:建立Mapping文件,这个文件中写你的相应sql语句的,用来增删改查。看下面:**
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="beanMapping.Testm">
	<select id="seletById" parameterType="int"    resultType="beanMapping.UserTest">
		select * from usertest where id =#{a}
	</select>
</mapper>
      这里要说一下:id随便起,最好见词达意,
      							  parameterType:输入参数类型,要和数据库一致,
      							  resultType:返回类型,写你刚才建的那个pojo全路径(可以点进去)
      							   #{id} :#{}这个是占位符,里面传参名称也是随便写,形式而已。(这是传了一个参,传多个呢?有好多种解决方法,自己琢磨,可以从输入类型入手)
      							   namespace:mapper中的namespace用于绑定dao接口的,即面向接口编程。是不是说的有点官方,你可以把这个看成是,你调用增删改查的那个类名,他是唯一的,它其实就是限定了mapping.xml和你的调用增删改查类中的一些参数一一对应。
      		**e:新建测试类,类名就用你刚才namespace中的。**
package beanMapping;

import java.io.IOException;
import java.io.InputStream;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

public class Testm {
	private static  SqlSession sqlSession;
	static {
	
			//得到配置文件输入流
			InputStream in=null;
			try {
				in = Resources.getResourceAsStream("mybatisConfig.xml");
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			//利用输入文件输入流创建sqldessionfactory工厂
			SqlSessionFactory  sqlSessionFaction=new SqlSessionFactoryBuilder().build(in);
			//利用sqlsessionFactory得到sqlSession对象
			 sqlSession=sqlSessionFaction.openSession();
			
		
	}
	@Test
	public void getUser() {
		UserTest user=sqlSession.selectOne("seletById", 1);
		System.out.println(user);
		sqlSession.close();
		
	}
}

       这个seletById就是你刚才mapping中的sql语句中的id,1是你传的参数。 这里鼠标你右键JUnit运行就行了.

运行结果;UserTest [id=1, name=张三, age=25]
好了数据已经导通了。 这里他的修改和删除,以及增加都十分类似,就不细细说了。就只是mapping中的标签不一样,sqlSession调用的方法不一样,你要是做到了,看看方法试一试,就懂了。
谢谢大家,我会继续加油。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值