MyBatis的使用步驟

MyBatis是一款持久層框架,這個框架封裝dao的增刪改查、分頁操作

1. 引入jar包,並且build:

2. 創建配置文件,這個配置文件主要用來填寫driver,url,username,password等配置信息

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="oracle.jdbc.driver.OracleDriver"/>
        <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"/>
        <property name="username" value="ZCY"/>
        <property name="password" value="ZCY"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <!-- <mapper resource="org/mybatis/example/BlogMapper.xml"/> -->
  </mappers>
</configuration>

3.

(1)Java加載xml配置文件

(2)初始化SqlSessionFactoryBuilder

(3)通過SqlSessionFactoryBuilder創建SqlSessionFactory,並加載xml配置信息。

(4)獲取SqlSession(sql會話對象),相當於jdbc的connection對象,通過SqlSession實現CRUD操作。

//獲取mybatis-config.xml文件流
	InputStream ips=Demo.class.getClassLoader().getResourceAsStream("mybatis-config.xml");
	//獲取SqlSessionFactoryBuilder
    SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
    //獲取SqlSessionFactory,需要通過SqlSessionFactoryBuilder對象獲取,傳入配置文件
    SqlSessionFactory factory=builder.build(ips);
    //獲取SqlSession
    SqlSession session= factory.openSession();

4.創建dao接口類,這裏的dao改名爲,例如(AdminInfo)Mapper

public interface AdminInfoMapper {

				//查詢一共多少條用戶數據
				Integer count();
			}

5.配置xml文件,該xml文件的文件名必須和接口類名稱相同

<?xml version="1.0" encoding="UTF-8" ?>
			<!-- 以下這段信息叫做約束,用來模糊匹配,補全標籤用的 -->
			<!DOCTYPE mapper
			  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
			  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
			<!-- mapper是根標籤,namespace叫做命名空間,這裏的空間裏面接的是 對應接口類的權限定名 -->
			<mapper namespace="mapper.AdminInfoMapper">
			  <!-- 常用標籤分爲:select,delete,insert和update,其中這裏我們先用select實現效果 -->
			  <!-- select標籤默認屬性:id:就是對應接口類的方法名稱, resultType:就是返回值的類型 -->
			  <select id="count" resultType="int">
				select count(0) from admin_info
			  </select>
			</mapper>

6.在mybatis-config.xml配置文件中,引用該文件

<mappers>
    <mapper resource="mapper/AdminInfoMapper.xml"/>
  </mappers>

7.測試

                         // 獲取接口的實現對象
			AdminInfoMapper mapper = session.getMapper(AdminInfoMapper.class);
			// 調用接口類裏面的方法,返回對應信息
			Integer count = mapper.count();
			System.out.println(count);
			session.close();
public class Demo {
 public static void main(String[] args) {
	InputStream ips=Demo.class.getClassLoader().getResourceAsStream("mybatis-config.xml");
    SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
    SqlSessionFactory factory=builder.build(ips);
    SqlSession session= factory.openSession();
    AdminInfoMapper mapper= session.getMapper(AdminInfoMapper.class);
    Integer count=mapper.count();
    System.out.println(count);
    session.close();
  }
}

8.查詢信息:

(1)創建bean對象

public class AdminInfo {
						private Long adminId;
						private String adminName;
						private String adminPwd;
						private Integer adminState;
						private Date adminCtime;
						private Long roleId;
					}

(2)dao接口:AdminInfoMapper

 //查詢所有的用戶
  List<AdminInfo> selectAll();

(3)在AdminInfoMapper.xml中創建resultMap,讓字段和屬性一一對應

<!-- resultMap:當我們需要查詢數據時,告訴系統,我們的字段和哪一個屬性進行匹配
						屬性:type:返回的數據類型的全限定名,如果返回的是集合,那麼這裏填寫的是集合裏面的數據類型全限定名
						id:唯一
					   -->
					  <resultMap type="bean.AdminInfo" id="AdminInfoMap">
						<!-- id標籤:用來定義主鍵使用,屬性:column填寫對應的字段名,property填寫對應的屬性名 -->
						<id column="ADMIN_ID" property="adminId"/>
						<result column="ADMIN_NAME" property="adminName"/>
						<result column="ADMIN_PWD" property="adminPwd"/>
						<result column="ADMIN_STATE" property="adminState"/>
						<result column="ADMIN_CTIME" property="adminCtime"/>
						<result column="ROLE_ID" property="roleId"/>
					  </resultMap>

(4)寫查詢語句


<!-- 注意這裏的返回值類型應該是resultMap,對應的值是resultMap標籤的Id,按照xxxresultMap的規範進行數據返回 -->
  <select id="selectAll" resultMap="AdminInfoMap">
  <!-- 不要使用分號 -->
    select * from admin_info
  </select>

(5)測試

                                        List<AdminInfo> admins = mapper.selectAll();
					System.out.println(admins);
					session.close();

9.修改:

(1)dao接口:AdminInfoMapper

Integer updatePwd();//重置密碼爲123456

(2)AdminInfoMapper.xml

<!-- 增刪改不需要寫返回值resultMap和resultType不要寫  -->
<update id="updatePwd">
		update admin_info set admin_pwd = '123456'
</update>

(3)測試

Integer count = mapper.updatePwd();
System.out.println("修改了:" + count + "條");
session.commit(); // 相當於事務提交,增刪改都需要

10.傳遞參數:id爲100的用戶密碼修改成123456

(1)dao接口:AdminInfoMapper

//@Param("adminId")和@Param("pwd")對應xml裏面的變量名稱
Integer updatePwd(@Param("adminId") Long adminId, @Param("pwd") String pwd);

(2)AdminInfoMapper.xml

<update id="updatePwd">
update admin_info set admin_pwd = #{pwd} where admin_id = #{adminId}
</update>

(3)測試

Integer count = mapper.updatePwd(100L, "OK");
System.out.println("修改了:" + count + "條");
session.commit(); 

11.按條件查詢數據:

(1)AdminInfoMapper.xml

<select id="selectByParam" resultMap="AdminInfoMap">
					select * from admin_info 
  <where>
    <if test="adminName != null">
	  and admin_name like #{adminName}
    </if>
    <if test="adminState != null">
	  and admin_state = #{adminState}
    </if>
  </where>
</select>

12.分頁:

(1)dao接口:AdminInfoMapper

//分頁:RowBounds屬性必須要傳遞進來
List<AdminInfo> selectByPage(RowBounds row);	

(2)AdminInfoMapper.xml

<select id="selectByPage" resultMap="AdminInfoMap">
	select * from admin_info
</select>

(3)測試

// 參數:1.從哪裏開始; 2.顯示多少條
List<AdminInfo> admins = mapper.selectByPage(new RowBounds(0, 2));
System.out.println(admins);

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章