MyBatis實現基礎增刪改查的功能
阿新 • • 發佈:2018-12-21
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();
}