MyBatis+接口+mapper映射文件來對數據庫進行增刪改查實現流程:
首先要建一個數據庫,再在數據庫中建一個表,建表時需要給予字段,我這裏就一id,name,age這三個字段來實現今天的查詢數據啦
工程結構:
- 第一步:配置好2個dtd的文件,一個是mybatis-3-mapper.dtd文件,一個是mybatis-3-config.dtd文件,不知道配置點這裏配置dtd文檔教學
- 第二步:導入2個操作MyBatis的jar包
- 第三步:先在src下面先建一個包,這個包專門用來存放封裝類,再到包下創建一個實體類,並且實體類名要與表名保持一致首字母大寫,實體類裏面封裝的屬性要與數據庫表中保持一致。
Users.java
package com.anzhuo.bean;
/* 創建一個實體類,類名要表面保持一致首字母大寫
* 實體類裏面的屬性要與表中字段保持一致
* */
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;
}
}
- 第四步:在src下面先建 一個包,這個包專門用來存放接口,再到包下創建一個接口,並在接口裏面建立增刪改查的方法。(創建接口I+實體類名)
IUsers.java
package com.anzhuo.dao;
import java.util.*;
import com.anzhuo.bean.*;
public interface IUsers {
/*
* 在這個接口定義了5個方法
* 1、定義了一個List集合並且集合裏面存放表中字段也就是實體類,用來查詢到表中所以數據的方法
* 2、定義了4個分別是sql增刪改查操作,
* getUsers:查詢
* getInsert:增加
* getUpdate:修改
* getDelete:刪除
*/
public List<Users> getUserList();
public Users getUsers(int id);
public void getInsert(Users user);
public void getUpdate(Users user);
public void getDelete(int id);
}
5.第五步:在src下面創建兩個xml配置文件,一個是mapper的一個是configuration的配置文件,mapper裏面配置接口的關聯和數據口的語句,configuration裏面配置別名、基本環境配置(包含數據源和事務管理 ),映射文件配置。
mapper.xml
<!DOCTYPE mapper PUBLIC "mapper" "mybatis-3-mapper.dtd" >
<mapper namespace="com.anzhuo.dao.IUsers">
<!-- 插入數據,這裏ID是自動遞增的,所有不需要插入 -->
<insert id="getInsert" parameterType="Users" >
<!-- 數據庫增加語句:#{}代表佔位符 -->
insert into users(id,name,age) values(#{id},#{name},#{age})
</insert>
<!-- 查詢表中所有的數據 -->
<select id="getUserList" resultType="com.anzhuo.bean.Users">
select * from users
</select>
<!-- 根據ID查詢表數據 -->
<select id="getUsers" parameterType="int" resultType="com.anzhuo.bean.Users">
select * from users where id=#{id}
</select>
<!-- 根據ID修改表中數據-->
<update id="getUpdate" parameterType="com.anzhuo.bean.Users">
update users set name=#{name},age=#{age} where id=#{id}
</update>
<!-- 根據ID刪除表數據 -->
<delete id="getDelete" parameterType="int">
delete from users where id=#{id}
</delete>
</mapper>
config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "config" "mybatis-3-config.dtd" >
<configuration>
<!-- 別名 -->
<typeAliases>
<typeAlias alias="Users" type="com.anzhuo.bean.Users"/>
</typeAliases>
<!-- 基礎環境配置:包含數據源和事務管理 -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatisdemo" />
<property name="username" value="root" />
<property name="password" value="123" />
</dataSource>
</environment>
</environments>
<!-- 映射文件配置 -->
<mappers>
<mapper resource="mapper.xml" />
</mappers>
</configuration>
- 第六步:在src下面先建一個包,這個包專門用來存放測試類,再到包下創建一個測試類,測試你是增加,刪除,修改,查詢
Test.java
package com.anzhuo.test;
import java.io.*;
import java.util.*;
import org.apache.ibatis.io.*;
import org.apache.ibatis.session.*;
import com.anzhuo.bean.Users;
import com.anzhuo.dao.*;
public class Test{
static SqlSessionFactory factory;
static SqlSession session;
public static void main(String[] args) throws IOException {
//第一步:讀取MyBatis的主配置文件,通過Resources調用getResourceAsReader方法讀取,獲得了一個Reader對象
Reader is = Resources.getResourceAsReader("config.xml");
//第二步:得到SQLSession工廠對象,通過new一個SqlSessionFactoryBuilder調用 build方法獲得一個sqlsessionfactory對象
factory = new SqlSessionFactoryBuilder().build(is);
//第三步:使用SqlSessionFactory對象調用到openSession方法打開session
session = factory.openSession();
//使用select方法來查詢,以條件查詢
// select();
//使用userList方法來查詢表中所有的結果
// userList();
//使用update方法來修改表中數據
// update();
//使用delete方法來實現刪除指定的一條數據
// delete();
//使用insert方法來添加表中數據
// insert();
}
//根據ID刪除表中字段
public static void delete() {
//使用數據庫會話工廠對象來開啓會話
session = factory.openSession();
//使用數據庫會話來獲取到接口類並映射到數據庫會話中去,並且用接口接收
IUsers ie = session.getMapper(IUsers.class);
//使用接口來獲取接口中的刪除方法並給它需要刪除的主鍵列
ie.getDelete(7);
//使用數據庫會話來手動提交
session.commit();
System.out.println("刪除後:");
//查詢我刪除後的表中所有數據
userList();
}
//根據ID修改表中數據
public static void update() {
//使用數據庫會話工廠對象來開啓會話
session = factory.openSession();
//使用數據集庫會話來獲取到接口類並映射到數據庫會話中去,並且用接口接收
IUsers iu = session.getMapper(IUsers.class);
//使用接口來獲取接口中的查詢方法並給它需要修改的主鍵列查詢出來,並且修改他們的name,Age
Users us = iu.getUsers(4);
us.setName("阮六軍");
us.setAge(18);
//使用接口來獲取接口中的修改方法並給他們剛剛修改過後的值
iu.getUpdate(us);
//使用數據庫會話來手動提交
session.commit();
System.out.println("更改後:");
//查詢我修改後的表中所有數據
userList();
}
//根據ID查詢指定主鍵列來查詢
public static void select() {
session = factory.openSession();
IUsers it = session.getMapper(IUsers.class);
Users user = it.getUsers(3);
if(user != null){
System.out.println("編號:"+user.getId());
System.out.println("姓名:" + user.getName());
System.out.println( "年齡:" + user.getAge());
}
}
//查詢表中所有數據
public static void userList() {
session = factory.openSession();
IUsers is = session.getMapper(IUsers.class);
//使用接口來獲取接口中的集合方法並換行
print(is.getUserList());
}
//定義一個帶有集合屬性的靜態方法
public static void print(List<Users> userList) {
//使用for循環從userList集合中,依次取出一個對象
for(Users us : userList){
System.out.println("編號:" + us.getId());
System.out.println("姓名:" + us.getName());
System.out.println("年齡:" + us.getAge());
}
}
//在表中增加一條數據
public static void insert() {
session = factory.openSession();
IUsers in = session.getMapper(IUsers.class);
//創建一個實體類來增加數據
Users user = new Users();
user.setId(7);
user.setName("佘子奇");
user.setAge(17);
in.getInsert(user);
session.commit();
System.out.println("插入成功");
userList();
}
}
希望我能幫到你,有什麼不懂的就問我吧,實在不行可以加我QQ或微信,QQ:2778798480
微信:ti15074082590