Mybatis入門2-動態代理實現CRUD

MyBatis動態代理生成DAO的步驟:java

1) 編寫數據管理的接口XxxMappersql

2) 編寫該接口對應的Mapper.xmlapache

a) namespace必須與Mapper接口全名一致session

b) statement的id必須和Mapper接口中的對應方法名一致mybatis

c) statement的resultType必須和Mapper接口中對應方法返回值一致app

3) 經過SqlSession的getMapper(XxxMapper.class)方法來獲取動態代理的Mapper實現類對象測試

開發中運用動態代理的比較多,下面簡單的介紹一個簡單的案例關於增刪改查的測試:ui

1.編寫相應的接口this

public interface UserMapper { /**根據id查詢用戶 * @param id * @return
       */
      public User queryUserById(Long id); /**查詢所有的用戶 * @return
      */
     public List<User> queryAll(); /**增長用戶 * @param user */
     public void insertUser(User user); /**更新用戶 * @param user */
     public void updateUser(User user); /** * 刪除用戶 * @param id */
     public void deleteById(Long id); }

2.編寫主配置文件url

<?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>
      <!-- 加載外部配置文件 -->
      <properties resource="jdbc.properties"></properties>
      <settings>
      <!--開啓駝峯命名法-->
         <setting name="mapUnderscoreToCamelCase" value="true"/>
     </settings>
     
     <!-- 起別名 -->
     <typeAliases>
       <typeAlias alias="User" type="cn.mybatis.pojo.User"/>
     </typeAliases>
 
   <environments default="development">
     <environment id="development">
       <transactionManager type="JDBC"/>
       <dataSource type="POOLED">
         <property name="driver" value="${jdbc.driver}"/>
         <property name="url" value="${jdbc.url}"/>
         <property name="username" value="${jdbc.username}"/>
         <property name="password" value="${jdbc.password}"/>
       </dataSource>
     </environment>
   </environments>
   
   <!-- 指定mapper的配置文件 -->
   <mappers>
     <mapper resource="mapper.xml"/>
     <mapper resource="usermapper.xml"/>
   </mappers>
 </configuration>

3.編寫映射配置文件

<?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="cn.mapper.UserMapper">
  
    <select id="queryUserById" parameterType="java.lang.Long"  resultType="User">
      select * from tb_user where id = #{id}    </select>
   
   <select id="queryAll"  resultType="User">
     select * from tb_user    </select>
   
   <insert id="insertUser" parameterType="User">
 INSERT INTO tb_user (  id,  user_name,  password,  name,  age,  sex,  birthday,  created,  updated  )VALUES(                  null,  #{userName},  #{password},  #{name},  #{age},  #{sex},  #{birthday},  NOW(),  NOW()  );    </insert>   
   <delete id="deleteById" parameterType="Long">
           DELETE FROM tb_user WHERE id = #{id}    </delete>      
 </mapper>

4.編寫測試類

 

package cn.mybatis.junit.test;  
 import static org.junit.Assert.*;  
 import java.io.InputStream; import java.util.List;  
 import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession;  import org.apache.ibatis.session.SqlSessionFactory;  import org.apache.ibatis.session.SqlSessionFactoryBuilder;  import org.junit.Before;  import org.junit.Test;  
 public class UserMapperTest {  
     private UserMapper userMapper;      
 InputStream inputStream;  SqlSessionFactory sqlSessionFactory;  SqlSession sqlSession;      
 @Before      public void setUp() throws Exception {          
         String resource = "mybatis-config.xml";          
         
         inputStream = Resources.getResourceAsStream(resource);          
         sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);          
         sqlSession = sqlSessionFactory.openSession();          
 // 經過動態代理獲取
         userMapper = sqlSession.getMapper(UserMapper.class);          
 }  
     /** * 根據id查詢 */
 @Test      public void test() {          User user = userMapper.queryUserById(1L);  System.out.println(user);  }      /** * 查詢所有 */
 @Test      public void test1() {          List<User> all = userMapper.queryAll();          
         for (User user2 : all) {  System.out.println(user2);  }  }      
     /** * 插入用戶 */
 @Test      public void test2() {          User user = new User();          user.setAge(22);          user.setBirthday(null);          user.setName("jack");          user.setPassword("123");          user.setSex(1);          user.setuserName("pick jack");          
 userMapper.insertUser(user);          
         this.sqlSession.commit();  }      
     /** * 刪除 */
 @Test      public void test3() {          this.userMapper.deleteById(12L);          
         this.sqlSession.commit();  }  }
相關文章
相關標籤/搜索