1. 程式人生 > >MyBatis實現簡單的增刪改查

MyBatis實現簡單的增刪改查

第一步:匯入mybatis-3.2.3.jar和mysql-connector-java-5.1.25-bin.jar這兩個包 第二步:建立好相對應的類,如下圖(注:本人的包建立並不規範) 在這裡插入圖片描述 第三步:編寫Config.xml配置檔案,程式碼如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "mybatis-3-config" "mybatis-3-config.dtd" >
<configuration>
	<typeAliases>
		<!-- 單個別名定義:
		type:型別路徑,alias:別名 -->
		<typeAlias type="com.zhiyuan.Bean.User" alias="User"/>
		<!-- 批量定義別名:
		name:指定包名,mybatis自動掃描包中的類,自動定義別名,別名就是類
		名(首字母大小寫都可以) -->
		<!-- <package name="" /> -->
	</typeAliases>
	
	<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/資料庫名"/>
				<property name="username" value="使用者名稱"/>
				<property name="password" value="密碼"/>
			</dataSource>
		</environment>
	</environments>
	
	<mappers>
		<!-- 通過resource方法一次載入一個對映檔案 -->
		<mapper resource="com/zhiyuan/Dao/Mapper.xml"/>
		<!-- 通過mapper介面載入單個對映檔案
			遵循一些規範:需要將mapper介面類名和mapper.xml對映檔名
			稱保持一致,且在同一個目錄中
			以上規範的前提是:使用的是mapper代理方法
		 -->
		<!-- <mapper class="com.zhiyuan.Dao.IUslect" /> -->
		<!-- 批量載入mapper
			指定mapper介面的包名,mybatis自動掃描包下邊所有mapper接
			口進行載入
			遵循一些規範:需要將mapper介面類名和mapper.xml對映檔名
			稱保持一致,且在同一個目錄中
			以上規範的前提是:使用的是mapper代理方法
		 -->
		<!-- <package name="com.zhiyuan.Dao" /> -->
	</mappers>
</configuration>

第四步:編寫Mapper.xml配置檔案,程式碼如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "mybatis-3-mapper" "mybatis-3-mapper.dtd" >
 <!-- 
 	Mapper代理開發規範:
 	1、在Mapper.xml中namespace值等於Mapper介面地址
 	(這裡的IUslect介面就是Mapper介面)
 	2、Mapper介面中的方法和Mapper.xml中statement的id一致
 	3、Mapper介面中的方法輸入引數型別和Mapper.xml中statement的
 	parameterType指定的型別一致
 	4、Mapper介面中的方法返回值型別和Mapper.xml中statement的
 	resultType指定型別一致
  -->
<mapper namespace="com.zhiyuan.Dao.IUslect">
	<!-- 增 -->
	<insert id="into" parameterType="User">
		insert into users (id,name,age) values(#{id},#{name},#{age})
	</insert>
	
	<!-- 刪 -->
	<delete id="desc" parameterType="int">
		delete from users where id = #{id}
	</delete>
	
	<!-- 改 -->
	<update id="gai" parameterType="User">
		update users set name = #{name},age = #{age} where id =#{id}
	</update>
	
	<!-- 查 -->
	<!-- 	resultType(pojo型別):
		使用resultType進行輸出對映,只有查詢出來的列名和pojo中的屬性名一
		致,改列才可以對映成功
		如果查詢出來的列名和pojo中的屬性名全部不一致,沒有建立pojo物件
		只要查詢出來的列名和pojo中的屬性名有一個一致,就會建立pojo物件
	 -->
	<select id="select" parameterType="int" resultType="User">
		select * from users where id = #{id}
	</select>
	
	<!-- 使用者綜合查詢
		#{userCustom.name}:取出pojo包裝物件中使用者的名稱
		${userCustom.age}:取出pojo包裝物件中年齡的值
	 -->
	<select id="findUserList" parameterType=
	"com.zhiyuan.Bean.UserQueryVo"
	 resultType="com.zhiyuan.Bean.UserCustom">
		select * from users where users.name = #{userCustom.name}
		 and users.age like '%${userCustom.age}%'
	</select>
</mapper>

第五步:編寫ICslect.java介面類,程式碼如下

package com.zhiyuan.Dao;


import java.util.List;

import com.zhiyuan.Bean.User;
import com.zhiyuan.Bean.UserCustom;
import com.zhiyuan.Bean.UserQueryVo;

public interface IUslect {
	public int into(User user);//增
	public int desc(int id);//刪
	public int gai(User user);//改
	public User select(int id);//查
	public List<UserCustom> findUserList(UserQueryVo userQueryVo);
}

第六步:編寫User.java實體類,程式碼如下:

package com.zhiyuan.Bean;

public class User {
	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;
	}
	
}

第七步:編寫UserCustom.java子類,程式碼如下

package com.zhiyuan.Bean;

public class UserCustom extends User{
	//可擴充套件使用者的資訊
}

第八步:編寫UserQueryVo.java類,程式碼如下

package com.zhiyuan.Bean;

/**
 * 包裝型別
 * @author Administrator
 *
 */
public class UserQueryVo {
	private UserCustom userCustom;

	public UserCustom getUserCustom() {
		return userCustom;
	}

	public void setUserCustom(UserCustom userCustom) {
		this.userCustom = userCustom;
	}
	
}

第九步:編寫CheShiLei.java測試類,程式碼如下

package com.zhiyuan.Bean;

import java.io.*;
import java.util.List;

import org.apache.ibatis.io.*;
import org.apache.ibatis.session.*;

import com.zhiyuan.Dao.IUslect;

public class CheShiLei {

	public static void main(String[] args) throws IOException {
		//得到檔案配置流
		Reader reader = Resources.getResourceAsReader("Config.xml");
		//建立回話工廠,傳入mybatis的配置檔案資訊
		SqlSessionFactory sql = new SqlSessionFactoryBuilder().build(reader);
		//通過工廠得到SqlSession
		SqlSession session = sql.openSession();
		IUslect iuslect = session.getMapper(IUslect.class);//MyBatis自動生成Mapper代理物件
		
//		User user = new User();//增
//		user.setId(4);
//		user.setName("李四");
//		user.setAge(18);
//		int a = iuslect.into(user);
//		session.commit();//提交事務
//		session.close();//釋放資源
//		System.out.println(a);
		
//		int user = iuslect.desc(3);//刪
//		session.commit();//提交事務
//		session.close();//釋放資源
//		System.out.println(user);
		
//		User user = new User();//改
//		user.setName("趙六");
//		user.setAge(25);
//		user.setId(3);
//		int a = iuslect.gai(user);
//		session.commit();//提交事務
//		session.close();//釋放資源
//		System.out.println(a);
		
//		User user = iuslect.select(1);//查
//		session.close();//釋放資源
//		System.out.println(user.getId()+user.getName()+user.getAge());
		
		//建立包裝物件,設定查詢條件
		UserQueryVo userQueryVo = new UserQueryVo();
		UserCustom userCustom = new UserCustom();
		userCustom.setName("李四");
		userCustom.setAge(18);
		userQueryVo.setUserCustom(userCustom);
		//呼叫iuslect的方法
		List<UserCustom> list = iuslect.findUserList(userQueryVo);
		System.out.println(list);
	}

}