Maven中使用mybatis

一、Mybatis優缺點 mysql

優勢:  Mybatis實現了對Dao層的封裝,隔離了SQL語句,便於管理,避免了像JDBC那樣操做數據集,便於擴展等等。 sql

缺點:  Mybatis屬於半自動「ORM」,比Hibernate的工做作得要多不少,對象參數傳遞比較麻煩,沒有Hibernate對象操做的概念。 apache

二、Mybatis的實現方式 mybatis

  Mybatis提供兩種應用實現:XML配置和註解。 app

2.1配置主要依賴實體對象的xml文件,將對象以<resultMap>形式注入,並提供給<insert > <delete > <select> <update> 語句引用。 字體

2.2使用註解來的比配置XML文件要簡單得多。只須要在接口上添加相應的註解並附上SQL語句就好了,如: google

    插入語句:@insert(" insert  into table_user ..") url

    修改語句: @update(" update table_user set ....") spa

    刪除語句:@delete(" delete from table_user .....") code

    查詢語句:@select(" select * from table_user .....")

三、下載mybatis的jar包:mybatis-3.1.1-bundle.zip網址:http://code.google.com/p/mybatis/

四、構建本身的mybatis項目,如圖所示:

五、mybatis-config.xml:配置數據源和隱射文件

<?xml version="1.0" encoding="UTF-8" ?> 
 <!DOCTYPE configuration   PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN"   "http://ibatis.apache.org/dtd/ibatis-3-config.dtd">
 <configuration>
    <environments default="environment"> 
      <environment id="environment"> 
        <transactionManager type="JDBC"/> 
             <dataSource type="POOLED"> 
                 <property name="driver" value="com.mysql.jdbc.Driver"/> 
                 <property name="url"   value="jdbc:mysql://localhost:3306/mybatis?characterEncoding =UTF-8"/>  
                 <property name="username" value="root"/>    
                 <property name="password" value="root"/>   
             </dataSource> 
         </environment>
    </environments>
   <!--  <mappers>
         <mapper resource="mybatis/User.xml"/> 
    </mappers>  -->
 </configuration>

注:紅色部分字體是使用實體配置的實現,若是使用註解則不須要添加。

六、使用註解實現CRUD操做-此處以實現用戶管理爲例 

6.1---編寫接口(interface):實際上就是官方文檔所述的Mapper
public interface UserService {
  //註解
  @Insert(" insert into users (id,username,password) values (#{id},#{username},#{password})")
  void add(@Param("id")String id,@Param("username") String username,@Param("password")String password);

  @Delete(" delete  from users where id=#{id}")
  void delete(String id);

  @Update(" update users set username=#{username},password=#{password} where id=#{id}")
  int update(@Param("username") String username,@Param("password")String password,@Param("id")String id);

   @Select(" select * from users where id=#{id}")
   User getUser(String id);

  @Select(" select * from users order by id asc ")
  List<User> getUsers();

   @Select(" select * from users order by id asc limit #{pageSize} offset #{offset} ")
  List<User> getUsersByPage(@Param("offset")int offset,@Param("pageSize") int pageSize);//offset=pageSize*(page-1)

}
注:使用註解時接口的方法不能重載,否者會產生Mapped Statements collection does not contain value for  異常,另外還應儘可能避免配置和註解混合使用的狀況。

6.2獲取數據源

public class GetSqlSessionFactory {  
     private  static SqlSessionFactory sqlSessionFactory = null;  
     private static GetSqlSessionFactory getSqlSessionFactory = null;
相關文章
相關標籤/搜索