Mybatis学习与使用

MyBatis
一、前言    

最近学习了经典框架Mybatis,为了能后更好的,有效的学习与使用,现做笔记如下:MyBatis 是一个可以自定义SQL、存储过程和高级映射的持久层框架。MyBatis 摒除了大部分的JDBC代码、手工设置参数和结果集重获。MyBatis 只使用简单的XML 和注解来配置和映射基本数据类型、Map 接口和POJO 到数据库记录。相对Hibernate和Apache OJB等“一站式”ORM解决方案而言,Mybatis 是一种“半自动化”的ORM实现。


二、工程目录




三、代码


Dept.java:

package bean;

public class Dept {
	private int deptno;
	private String dname;
	private String loc;
	public Dept(){
		
	}
	public Dept(int deptno, String dname, String loc) {
		super();
		this.deptno = deptno;
		this.dname = dname;
		this.loc = loc;
	}
	public int  getDeptno() {
		return deptno;
	}
	public void setDeptno(int deptno) {
		this.deptno = deptno;
	}
	public String getDname() {
		return dname;
	}
	public void setDname(String dname) {
		this.dname = dname;
	}
	public String getLoc() {
		return loc;
	}
	public void setLoc(String loc) {
		this.loc = loc;
	}
	@Override
	public String toString() {
		return "Dept [deptno=" + deptno + ", dname=" + dname + ", loc=" + loc
				+ "]";
	}
	
}


Dept.xml:

<?xml version="1.0" encoding="UTF-8" ?>  
<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" 
	"http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
<mapper namespace="mapper.DeptMapper">
	<insert id="addDept" parameterType="bean.Dept">
		insert into T_dept values(#{deptno},#{dname},#{loc})
	</insert>
	<update id="updateDept" parameterType="bean.Dept">
		update T_dept set  deptno=#{deptno},dname=#{dname},loc=#{loc} where deptno=#{deptno}
	</update>
	<delete id="deleteDept" parameterType="int">
	    delete from T_dept where deptno=#{deptno}
	</delete>
	<select id="findDept" parameterType="int" resultType="bean.Dept">
	    select * from T_dept where deptno=#{deptno}
	</select>
	<select id="findAllDept" resultType="bean.Dept">
		select * from T_dept
	</select>

</mapper>


DeptMapper.java:

package mapper;
import java.util.List;

import bean.Dept;

public interface DeptMapper {
	void addDept(Dept dept);
	void updateDept(Dept dept);
	void deleteDept(int detpno);
	Dept findDept(int deptno);
	List<Dept> findAllDept();
}


Test.java:

package test;

import java.io.IOException;
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 Test {
	public static void main(String[] args) {
		try {
			Reader reader=Resources.getResourceAsReader("SqlMapConfig.xml");
			SqlSessionFactoryBuilder sfb=new SqlSessionFactoryBuilder();
			SqlSessionFactory sf=sfb.build(reader);
			SqlSession session =sf.openSession();
			System.out.println(session);
			session.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}


TestMapper.java:

package test;

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

import mapper.DeptMapper;

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

import bean.Dept;

public class TestMapper {
	
	public static void main(String[] args) {
		//findByPage(); // 分页查询
		try {
			Reader reader=Resources.getResourceAsReader("SqlMapConfig.xml");
			SqlSessionFactoryBuilder sfb=new SqlSessionFactoryBuilder();
			SqlSessionFactory sf=sfb.build(reader);
			SqlSession session =sf.openSession();
		    //通过接口创建实现类。进而通过接口引用   ,创建的时候应该是和Dept.xml的方法有关
			DeptMapper mapper=session.getMapper(mapper.DeptMapper.class);
			List<Dept> lists=mapper.findAllDept();
			System.out.println(lists);
			session.commit();
			session.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public static void addDept(){
		try {
			Reader reader=Resources.getResourceAsReader("SqlMapConfig.xml");
			SqlSessionFactoryBuilder sfb=new SqlSessionFactoryBuilder();
			SqlSessionFactory sf=sfb.build(reader);
			SqlSession session =sf.openSession();
		
			Dept dept=new Dept(1002,"wtf","beijing");
			session.insert("addDept",dept);
			System.out.println("sucess");
			session.commit();
			session.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	public static void updateDept(){
		try {
			Reader reader=Resources.getResourceAsReader("SqlMapConfig.xml");
			SqlSessionFactoryBuilder sfb=new SqlSessionFactoryBuilder();
			SqlSessionFactory sf=sfb.build(reader);
			SqlSession session =sf.openSession();
		
			Dept dept=new Dept(1002,"wtfxhs","beijing");
			session.update("updateDept",dept);
			System.out.println("sucess");
			session.commit();
			session.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	public static void deleteDept(){
		try {
			Reader reader=Resources.getResourceAsReader("SqlMapConfig.xml");
			SqlSessionFactoryBuilder sfb=new SqlSessionFactoryBuilder();
			SqlSessionFactory sf=sfb.build(reader);
			SqlSession session =sf.openSession();
		
			int dept=1002;
			session.delete("deleteDept",dept);
			System.out.println("sucess");
			session.commit();
			session.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	public static void findDept(){
		try {
			Reader reader=Resources.getResourceAsReader("SqlMapConfig.xml");
			SqlSessionFactoryBuilder sfb=new SqlSessionFactoryBuilder();
			SqlSessionFactory sf=sfb.build(reader);
			SqlSession session =sf.openSession();
		
			int dept=1003;
			Dept depts=session.selectOne("findDept",dept);
			System.out.println(depts);
			session.commit();
			session.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	public static void findAllDept(){
		try {
			Reader reader=Resources.getResourceAsReader("SqlMapConfig.xml");
			SqlSessionFactoryBuilder sfb=new SqlSessionFactoryBuilder();
			SqlSessionFactory sf=sfb.build(reader);
			SqlSession session =sf.openSession();
			List<Dept> lists=session.selectList("findAllDept");
			for(Dept dept :lists){
				
				System.out.println(dept);
			}
			session.commit();
			session.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	
	//分页查询
	public static void findByPage(){
		try {
			Reader reader=Resources.getResourceAsReader("SqlMapConfig.xml");
			SqlSessionFactoryBuilder sfb=new SqlSessionFactoryBuilder();
			SqlSessionFactory sf=sfb.build(reader);
			SqlSession session =sf.openSession();
			RowBounds r=new RowBounds(2, 3);
			
			List<Dept> lists=session.selectList("findAllDept",null,r);
			for(Dept dept :lists){
				
				System.out.println(dept);
			}
			session.commit();
			session.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
}


mabatis.sql:

select * from T_dept;



create table T_dept(
   deptno number(4) primary key,
   dname varchar2(20),
   loc varchar2(40)
);

insert into T_dept values(1001,'Obelia','haerbin');
insert into T_dept values(1002,'Obelia','haerbin');

insert into T_dept values(1004,'Obelia','haerbin');
insert into T_dept values(1005,'Obelia','haerbin');
insert into T_dept values(1006,'Obelia','haerbin');
insert into T_dept values(1007,'Obelia','haerbin');
insert into T_dept values(1008,'Obelia','haerbin');

update  T_dept set  deptno=1003,dname='helloworld',loc='nanjing' where deptno=1001;

delete  from T_dept where deptno=1003;


SqlMapConfig.xml:

<?xml version="1.0" encoding="UTF-8" ?>  
<!DOCTYPE configuration PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN" 
	"http://ibatis.apache.org/dtd/ibatis-3-config.dtd">
<configuration>
	<environments default="environment">
		<environment id="environment">
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<property name="driver" value="oracle.jdbc.driver.OracleDriver" />
				<property name="url"
					value="jdbc:oracle:thin:@localhost:1521:orcl" />
				<property name="username" value="scott" />
				<property name="password" value="xhs12302" />
			</dataSource>
		</environment>
	</environments>
	<mappers>
		<mapper resource="bean/Dept.xml"/>
	</mappers>
</configuration> 



四、截图

        运行Test.java,如下:   

    


       运行TestMapper.java,如下:



 小细节:1、自定义映射

       

                2、注解配置





    

联系邮箱:xhsgg12302@outlook.com

                                                                                                                                                                                                                                                                                                                                                               2017_09_20

posted @ 2017-09-23 16:54  Obelia  阅读(200)  评论(0编辑  收藏  举报