1. 程式人生 > >MyBatis實現基礎增刪改查的功能

MyBatis實現基礎增刪改查的功能

MyBatis編碼的三種思路

1. 實體類+對映檔案+基礎配置檔案+測試類

實體類

public class Users {

	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; } }

對映檔案 命名規則:表名+Mapper

<mapper namespace="bean.UsersMapper"><!-- 名稱空間的名字為對映檔案全路徑 -->
  <select id="GetUserByID" parameterType="int" resultType="Users">
  	select *
from users where id = #{id} </select> </mapper>

基礎配置檔案

<configuration>

	<typeAliases>
		<typeAlias alias="Users" type="bean.Users"/>
	</typeAliases>
	
	<environments default="development">
		<environment id="development"><!-- 與environments中default的值保持一致 --
> <transactionManager type="JDBC"></transactionManager> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/frank"/> <property name="username" value="root"/> <property name="password" value="admin"/> </dataSource> </environment> </environments><!-- 基礎環境配置 --> <mappers> <mapper resource="bean/usersMapper.xml"></mapper> </mappers><!-- 註冊對映檔案 --> </configuration>

測試類

public class Test {

	public static void main(String[] args) throws IOException {
		
		//使用Resources類呼叫getResourceAsReader()載入基礎配置檔案
		//獲得了一個Reader物件
		Reader is = Resources.getResourceAsReader("config.xml");
		
		//通過new SqlSessionFactoryBuilder()呼叫build()
		//獲得了一個SqlSessionFactory物件
		SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(is);

		//建立能執行對映檔案中sql語句的sqlSession
		//使用SqlSessionFactory的物件sf呼叫openSession()
		//獲得一個SqlSession物件
		SqlSession session = sf.openSession();
		
		//使用SqlSession的物件session查詢方法
		//第一個值是對映檔案中sql語句的標識字串,第二個值則是查詢指定的ID
		Users u = session.selectOne("bean.UsersMapper.GetUserByID",1);
		System.out.println(u.getId());
		System.out.println(u.getName());
		System.out.println(u.getAge());
	}

}

2. 實體類+介面+註解+基礎配置檔案+測試類 實體類同上

介面結合註解

public interface IUsers {

	@Select("select * from users where id=#{id}")
	public Users select(int id);
	
}

基礎配置檔案中無須註冊對映檔案

測試類

public class Test {

	public static void main(String[] args) throws IOException {
		Reader is = Resources.getResourceAsReader("config.xml");
		SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(is);
		
		//通過sqlsessionfactory的物件呼叫getconfiguration()
		//呼叫addmapper()使用反射機制,將該介面新增到mapper
		sf.getConfiguration().addMapper(IUsers.class);
		
		//建立能執行對映檔案中sql語句的sqlSession
		//使用SqlSessionFactory的物件sf呼叫openSession()
		//獲得一個SqlSession物件
		SqlSession session = sf.openSession();
		
		//通過SqlSession的物件session呼叫getMapper()得到介面的例項
		IUsers iusers = session.getMapper(IUsers.class);
		
		//使用介面物件呼叫查詢方法
		Users users = iusers.select(1);
		System.out.println(users.getId());
		System.out.println(users.getName());
		System.out.println(users.getAge());
	}

}

3. 實體類+介面+對映檔案+基礎配置檔案+測試類 實體類同上

介面

public interface IUsers {
	
	//新增資料的方法
	public int insertUser(Users users);
	
	//刪除資料的方法
	public int deleteUser(int i);
	
	//修改資料的方法
	public int updateUser(Users users);
	
	//查詢資料的方法
	public Users selectUser(int i);
}

對映檔案

<mapper namespace="dao.IUsers"><!-- 這裡的值為介面全路徑 -->

<!-- sql語句標籤的id值必須與介面中對應的方法的方法名保持一致 -->
 <insert id="insertUser" parameterType="Users">
 	insert into users(id,name,age) values(#{id},#{name},#{age})
 </insert>
 
 <delete id="deleteUser" parameterType="int">
 	delete from users where id=#{id}
 </delete>
 
 <update id="updateUser" parameterType="Users">
 	update users set name=#{name},age=#{age} where id=#{id}
 </update>
 
 <select id="selectUser" parameterType="int" resultType="Users">
 	select * from users where id=#{id}
 </select>
 
</mapper>

基礎配置檔案與第一種方式相同

測試類

public class TestApp {

	public static void main(String[] args) throws IOException {
		//載入基礎配置檔案
		Reader is = Resources.getResourceAsReader("config.xml");
		//建立SqlSessionFactory物件
		SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(is);
		//開啟session會話
		SqlSession ss = ssf.openSession();
		//獲取介面例項物件
		IUsers iu = ss.getMapper(IUsers.class);
		
		//建立實體類物件
		Users u = new Users();
		//設值
		u.setId(1);
		u.setName("李四");
		u.setAge(18);
		//使用介面物件呼叫修改方法
		int i = iu.updateUser(u);
		//提交操作
		ss.commit();
		
	}