mybatis--oracle 利用配置 實現簡單的增刪改查

什麼是 MyBatis?html

MyBatis 是支持普通 SQL 查詢,存儲過程和高級映射的優秀持久層框架。 MyBatis 消除了幾乎全部的 JDBC 代碼和參數的手工設置以及對結果集的檢索。MyBatis 能夠使用簡單的XML 或註解用於配置和原始映射,將接口和 Java 的 POJO(Plain Old Java Objects,普通的Java對象)映射成數據庫中的記錄。java

MyBatis下載:https://github.com/mybatis/mybatis-3/releasesgit

Mybatis實例:github

對一個Student表的CRUD操做web

在Src目錄下建一個mybatis的xml配置文件mybatis.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.model.Student" alias="list"/> -->
		<package name="com.model"/><!-- 掃描 -->
	</typeAliases>
	
	<!-- mybatis的環境們 -->
	<environments default="test">
		<environment id="test">
			<!-- mybatis支持的事務:
			 JDBC:數據源本身的事務管理
			 MANAGE(託管),不支持tomcat,通常用在大型的商業服務器,weblogic,jboss -->
			<transactionManager type="JDBC">
				
			</transactionManager>
			
			<dataSource type="POOLED">
				<property name="driver" value="oracle.jdbc.OracleDriver"></property>
				<property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"></property>
				<property name="username" value="venus"></property>
				<property name="password" value="123"></property>
			</dataSource>
		</environment>
	</environments>
	
	<mappers>
		<mapper resource="com/dao/StudentMapper.xml"/>
	</mappers>
	
</configuration>

定義Student mappers的StudentMapper.xml配置文件apache

 

<?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.dao.StudentMapper">
  	<resultMap type="Student" id="stu">
  	
  	</resultMap>
  	<!-- 查全部數據 -->
  	<select id="list" resultType="student">
  		select * from student
  	</select>
  	<!-- 插入一條數據 -->
  	<insert id="add" parameterType="student">
  		insert into student values(#{sno},#{sname},#{ssex},sysdate,#{sclass})
  	</insert>
  	<!-- 修改一條數據 -->
  	<update id="update" parameterType="student">
  		update student s set s.sname=#{sname},s.ssex=#{ssex}
  		,s.sbirthday=sysdate,s.sclass=#{sclass} where s.sno=#{sno}
  	</update>
  	<!-- 刪除一條數據 -->
  	<delete id="del" parameterType="String">
  		delete student s where s.sno=#{sno}
  	</delete>
  	<!-- 查符合條件的數據 -->
  	<select id="show" parameterType="Map" resultMap="stu">
  		select * from student s where s.sno like #{p1} and s.sname like #{p2}
  	</select>
  	
  </mapper>

配置文件實現了接口和SQL語句的映射關係。selectUsersByName採用了2種方式實現,註釋掉的也是一種實現,採用resultMap能夠把屬性和數據庫列名映射關係定義好,property爲類的屬性,column是表的列名,也能夠是表列名的別名!tomcat

Student類的定義(能夠用Hibernate自動生成Student實體類):服務器

 

package com.model;
// Generated 2017-4-19 11:51:47 by Hibernate Tools 5.2.0.CR1

import java.util.Date;

/**
 * Student generated by hbm2java
 */
public class Student  {

	private String sno;
	private String sname;
	private String ssex;
	private Date sbirthday;
	private String sclass;

	public Student() {
	}

	public Student(String sno, String sname, String ssex) {
		this.sno = sno;
		this.sname = sname;
		this.ssex = ssex;
	}

	public Student(String sno, String sname, String ssex, Date sbirthday, String sclass) {
		this.sno = sno;
		this.sname = sname;
		this.ssex = ssex;
		this.sbirthday = sbirthday;
		this.sclass = sclass;
	}

	public String getSno() {
		return this.sno;
	}

	public void setSno(String sno) {
		this.sno = sno;
	}

	public String getSname() {
		return this.sname;
	}

	public void setSname(String sname) {
		this.sname = sname;
	}

	public String getSsex() {
		return this.ssex;
	}

	public void setSsex(String ssex) {
		this.ssex = ssex;
	}

	public Date getSbirthday() {
		return this.sbirthday;
	}

	public void setSbirthday(Date sbirthday) {
		this.sbirthday = sbirthday;
	}

	public String getSclass() {
		return this.sclass;
	}

	public void setSclass(String sclass) {
		this.sclass = sclass;
	}

}

 

 

爲了方便寫一個工具類 拿出session:session

 

package com.util;

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;

public class MybatisUtil {
	private static SqlSessionFactory ssf;
	private static SqlSession ss;
	public static SqlSession getSqlSession(){
		InputStream in = null;
		
		try {
			in = Resources.getResourceAsStream("mybatis.xml");
			
			ssf = new SqlSessionFactoryBuilder().build(in);
			ss = ssf.openSession();
			in.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return ss;
	}
	

}

 

 

測試類UserDao:

 

package com.util;

import static org.junit.Assert.*;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.xml.crypto.Data;

import org.apache.ibatis.session.SqlSession;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import com.model.Student;

public class JUnit {
	
	private  SqlSession ss;

	@Before
	public void setUp() throws Exception {
		ss = MybatisUtil.getSqlSession();
	}

	@After
	public void tearDown() throws Exception {
		ss.commit();
		ss.close();
	}

	//查全部數據
	public void test() {
		List<Student> list = ss.selectList("com.dao.StudentMapper.list");
		for(Student data : list){
			System.out.println(data.getSname());
		}
	}
	//增長一條數據
	public void addTest(){
		Student stu = new Student();
		stu.setSno("120");
		stu.setSname("張自忠");
		stu.setSsex("男");
		
		
		stu.setSclass("123");
		
		ss.insert("com.dao.StudentMapper.add",stu);
	}
	//修改一條數據
	public void updateTest(){
		Student stu = new Student();
		stu.setSno("120");
		stu.setSname("張自戀");
		stu.setSsex("男");
		
		
		stu.setSclass("123");
		
		ss.update("com.dao.StudentMapper.update",stu);
	}
	//刪除一條數據
	public void delTest(){
		ss.delete("com.dao.StudentMapper.del","120");
	}
	//查符合條件的數據
	@Test
	public void show(){
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("p1", "%7");
		map.put("p2", "王%");
		List<Student> list = ss.selectList("com.dao.StudentMapper.show",map);
		for(Student data : list){
			System.out.println(data.getSname());
		}
	}

}

 

PS:所用到的jar包就兩個  一個是mybatis-3.4.4.jar 另一個是數據庫驅動包:ojdbc6.jar

相關文章
相關標籤/搜索