MyBatis實現簡單的增刪改查
阿新 • • 發佈:2018-12-21
第一步:匯入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);
}
}