mybatis入门学习


         作为一个程序员,第一个接触的orm框架就是hibernate,使用了很长时间。可是正是应为使用这个,让自己所学习的sql置于了一个很尴尬的地方,程序开发很少直接接触,却又不能够放弃。好在发现了mybiats 。相比于hibernate,mybatis可以说是灵活小巧了,因此也就很容易上手。我想正是因为它的小巧,在官网上则可以很容易的查找到它的中文文档,这对对于英文不怎么样的我来说不得不说是一个好消息.如果不知道他的中文参考文档请猛戳这里:http://mybatis.github.io/mybatis-3/zh/index.html.学习了mybatis也有一段时间了,总的来说就是mybatis可以提高程序在dao层的灵活性与性能,但是在开发效率上还是觉得hibernate比较高.

     接下来就写一个简单的小例子算是入门吧。首先嘛当然创建一个maven项目了。然后在pom文件中添加mybatis与mysql,已以及测试的依赖配置了

,然后依照它的官方文档添加mybatis-config.xml与PersonMapper.xml了。

因为mybatis是用于操作数据库的,所以则需要配置连接数据库的数据源以及事务管理了,这些东西都可以直接从官方文档中拿过来.

个人比较喜欢将数据库的信息写在配置文件中,然后再引入。

然后是实体bean 的映射文件

<?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="Person">
  	<insert id="insert" parameterType="Person" useGeneratedKeys="true" keyColumn="id">
  		insert into t_person(age,name)values(#{age},#{name});
  	</insert>
  </mapper>

这里采用主键自动增长。

然后编写添加的代码

package com.mybatis.crud;

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 com.mybatis.bean.Person;

public class MyBatisCRUD {

	public static SqlSessionFactory sqlSessionFactory;
	static{
		String resource = "mybatis-config.xml";
		InputStream inputStream;
		try {
			inputStream = Resources.getResourceAsStream(resource);
			sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	//添加
	public void add(){
		Person person=new Person();
		person.setAge(20);
		person.setName("宇智波鼬");
		SqlSession sqlSession=sqlSessionFactory.openSession();
		
		int count=sqlSession.insert("Person.insert", person);
		sqlSession.commit();
		System.out.println(count);
	}
	
}

这里利用mybatis提供Resource从xml中构建sqlsessionFactory,这一块代码可以直接从文档中copy过来,因为测试的原因,我将其写在的静态代码块中。这里要注意的是事务是默认开启的,必须手动提交,也就是 SqlSession.comit();sqlSession.insert的第一个参数是映射文件的namespace+要引用sql的id。
<span style="font-size:24px;">最后编写测试代码:</span>

package com.mybatis.test;

import org.junit.Test;

import com.mybatis.crud.MyBatisCRUD;
import com.sun.swing.internal.plaf.metal.resources.metal;

public class MybatisTest {

	@Test
	public void addTest(){
		MyBatisCRUD myBatisCRUD=new MyBatisCRUD();
		myBatisCRUD.add();
	}
}


然后测试,就可以查看数据库了.



 

OK。那么接下来就是更新 删除 修改了.

下面是完整的代码与配置文件

POM文件

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.maven.ibatis</groupId>
  <artifactId>MybatisStudy</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>MybatisStudy Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
  
  	<dependency>
	  <groupId>org.mybatis</groupId>
	  <artifactId>mybatis</artifactId>
	  <version>3.2.7</version>
	</dependency>
   <dependency>
	<groupId>junit</groupId>
	<artifactId>junit</artifactId>
	<version>4.11</version>
	<scope>test</scope>
</dependency>
    <dependency>
		<groupId>mysql</groupId>
		<artifactId>mysql-connector-java</artifactId>
		<version>5.1.31</version>
	</dependency>
    
  </dependencies>
  <build>
    <finalName>MybatisStudy</finalName>
  </build>
</project>
mybatis-config.xml


<?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>
	<!-- 引入外部配置文件 -->
  	<properties resource="db.properties"></properties>
  	<typeAliases>
  		<typeAlias type="com.mybatis.bean.Person" alias="Person"/>
  	</typeAliases>
   <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="${driver}"/>
        <property name="url" value="${url}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="com/mybatis/PersonMapper.xml"/>
  </mappers>
 </configuration>

personMapper.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="Person">
  	<insert id="insert" parameterType="Person" useGeneratedKeys="true" keyColumn="id">
  		insert into t_person(age,name)values(#{age},#{name});
  	</insert>
  	
  	<update id="update" parameterType="Person">
  		update t_person set name=#{name},age=#{age} where id=#{id}
  	</update>
  	<select id="list" resultType="Person">
  		select * from t_person
  	</select>
  	<select id="findbyid" resultType="Person">
  		select * from t_person where id=#{id}
  	</select>
  	<delete id="delete">
  		delete from t_person where id=#{id}
  	</delete>
  </mapper>

MybatisCURD.java

package com.mybatis.crud;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

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.omg.CORBA.PUBLIC_MEMBER;

import com.mybatis.bean.Person;

public class MyBatisCRUD {

	public static SqlSessionFactory sqlSessionFactory;
	static{
		String resource = "mybatis-config.xml";
		InputStream inputStream;
		try {
			inputStream = Resources.getResourceAsStream(resource);
			sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	//添加
	public void add(){
		Person person=new Person();
		person.setAge(20);
		person.setName("宇智波鼬");
		SqlSession sqlSession=sqlSessionFactory.openSession();
		
		int count=sqlSession.insert("Person.insert", person);
		sqlSession.commit();
		System.out.println(count);
	}
	//更新
	public void edit(){
		Person person=new Person();
		person.setId(1);
		person.setAge(22);
		person.setName("卡卡西");
		SqlSession sqlSession=sqlSessionFactory.openSession();
		int count=sqlSession.update("Person.update", person);
		sqlSession.commit();
		System.out.println(count);
	}
	//根据条件查询
	public void findbyCond(){
		SqlSession sqlSession=sqlSessionFactory.openSession();
		Person person=sqlSession.selectOne("Person.findbyid", 1);
		System.out.println(person);
	}
	//列表查询
	public void list(){
		SqlSession sqlSession=sqlSessionFactory.openSession();
		List<Person> list=sqlSession.selectList("Person.list");
		for (Person person : list) {
			System.out.println(person);
		}

		 
	}
	//删除
	public void delete(){
		SqlSession sqlSession=sqlSessionFactory.openSession();
		int i=sqlSession.delete("Person.delete",1);
		sqlSession.commit();
		System.out.println(i);
	}
	
	
}

mybatisTest.java

package com.mybatis.test;

import org.junit.Test;

import com.mybatis.crud.MyBatisCRUD;
import com.sun.swing.internal.plaf.metal.resources.metal;

public class MybatisTest {

	@Test
	public void addTest(){
		MyBatisCRUD myBatisCRUD=new MyBatisCRUD();
		myBatisCRUD.add();
	}
	
	@Test
	public void updateTest(){
		MyBatisCRUD myBatisCRUD=new MyBatisCRUD();
		myBatisCRUD.edit();
	}
	@Test
	public void findByCondTest(){
		MyBatisCRUD myBatisCRUD=new MyBatisCRUD();
		myBatisCRUD.findbyCond();
	}
	@Test
	public void listTest(){
		MyBatisCRUD myBatisCRUD=new MyBatisCRUD();
		myBatisCRUD.list();
	}
	
	@Test
	public void deleteTest(){
		MyBatisCRUD myBatisCRUD=new MyBatisCRUD();
		myBatisCRUD.delete();
	}
	
}







  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值