案例:html
1.User.java以及SqlMapConfig.xml參考MyBatis實現增刪改查java
2.UserCustom.java繼承User.javasql
1 package com.test.entity; 2 /** 3 * 4 * @author Mr 5 * 屬於User的擴展類 6 */ 7 public class UserCustom extends User { 8 //能夠添加一些屬性 9 }
3.UserQueryVo.java類數據庫
1 package com.test.entity; 2 /** 3 * 這個是包裝類 ,後面跟控制器有關係 4 * @author Mr 5 * 6 */ 7 public class UserQueryVo { 8 //用戶的查詢條件 9 private User user; 10 //附加的查詢條件 11 private UserCustom userCustom; 12 13 public User getUser() { 14 return user; 15 } 16 17 public void setUser(User user) { 18 this.user = user; 19 } 20 21 public UserCustom getUserCustom() { 22 return userCustom; 23 } 24 25 public void setUserCustom(UserCustom userCustom) { 26 this.userCustom = userCustom; 27 } 28 29 }
4.UserMapper.javaapache
1 package com.test.dao; 2 3 import java.util.List; 4 5 import com.test.entity.User; 6 import com.test.entity.UserCustom; 7 import com.test.entity.UserQueryVo; 8 /** 9 * 10 * @author Mr 11 * Mapper接口代理模式開發命名必定是:實體類名+Mapper 12 * 13 * 使用mapper開發步驟: 14 * 1.編寫接口和mapper.xml要遵循4個指標 15 * 2.SqlMapConfig.xml中加載UserMapper.xml 16 */ 17 public interface UserMapper { 18 //根據用戶id查詢用戶 19 public User findUserById(int id); 20 //添加用戶 21 public void addUser(User user); 22 //這個方法對應的是包裝類型的statement 23 public List<UserCustom> findUserList(UserQueryVo userQueryVo); 24 }
5.UserMapper.xmlsession
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE mapper 3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 5 <!-- namespace命名空間是UserMapper接口的全類名--> 6 <mapper namespace="com.test.dao.UserMapper"> 7 <!-- 查詢 注意了 type後面是包裝類--> 8 <select id="findUserList" parameterType="com.test.entity.UserQueryVo" resultType="com.test.entity.UserCustom"> 9 select * from userss WHERE sex=#{userCustom.sex} AND username LIKE '%${userCustom.username}%' 10 </select> 11 12 13 </mapper>
6.測試類mybatis
1 package com.test.demo; 2 3 import java.io.IOException; 4 import java.io.InputStream; 5 import java.util.List; 6 7 import org.apache.ibatis.io.Resources; 8 import org.apache.ibatis.session.SqlSession; 9 import org.apache.ibatis.session.SqlSessionFactory; 10 import org.apache.ibatis.session.SqlSessionFactoryBuilder; 11 12 import com.test.dao.UserMapper; 13 import com.test.entity.UserCustom; 14 import com.test.entity.UserQueryVo; 15 16 /** 17 * 測試包裝類型的pojo 18 * @author Mr 19 * 20 */ 21 public class Test4 { 22 23 public static void main(String[] args) { 24 try { 25 //mybatis核心文件 26 String resource = "SqlMapConfig.xml"; 27 //讀取配置文件 28 InputStream config = Resources.getResourceAsStream(resource); 29 //獲取工廠 30 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(config); 31 //獲取數據庫操做對象 32 SqlSession sqlSession = sqlSessionFactory.openSession(); 33 //獲取實現類對象 34 UserMapper um = sqlSession.getMapper(UserMapper.class); 35 36 UserQueryVo userQueryVo = new UserQueryVo(); 37 //參數是userCustom的 38 UserCustom userCustom = new UserCustom(); 39 userCustom.setSex("1"); 40 userCustom.setUsername("張"); 41 //他們倆存在關係 42 userQueryVo.setUserCustom(userCustom); 43 44 List<UserCustom> list = um.findUserList(userQueryVo); 45 for (UserCustom uu : list) { 46 System.out.println(uu); 47 } 48 49 50 } catch (IOException e) { 51 // TODO Auto-generated catch block 52 e.printStackTrace(); 53 } 54 55 56 } 57 58 }