天天看點

Mybatis架構使用介紹

先看下一個簡單Mybatis的項目結構:Mybatis主要對應的是dao層。

Mybatis架構使用介紹

第一步:導包

        先導包,把上面圖檔的lib裡面的jar包下載下傳。其中log開頭的jar包是一個日志jar包,與org.zhuao.utils裡的log4j.properties比對,兩者可以舍去。

第二步:配置檔案

        這個項目連接配接的是oracle資料庫

Mybatis架構使用介紹

第三步:寫一個MyBatisUtils方法類,調用配置檔案

public class MyBatisUtils {
	/**
	 * 定義工廠
	 */
	private  static SqlSessionFactory sf;	
	
	static {	
		String conf="SqlMapConfig.xml";
		try {
			Reader reader = Resources.getResourceAsReader(conf);
			SqlSessionFactoryBuilder sfb=new SqlSessionFactoryBuilder();
			sf=sfb.build(reader);			
		}catch (IOException e) {
			// TODO: handle exception
			e.printStackTrace();
		}			
	}
	
	/**
	 * 擷取連接配接,連接配接session
	 * @return
	 */
	public static SqlSession getSession() {
		
		return sf.openSession();
	}
	
	public static void main(String[] args) {
		SqlSession session=MyBatisUtils.getSession();
		System.out.println(session);
		session.close();
	}
}
           

ps: 記得寫一個User類

public class Users {
	private  Integer  userId;
	private  String userName;
	private  String password;
	private  String age;
	private   Date  time;
	public Users() {
		super();
		// TODO Auto-generated constructor stub
	}
	public Users(Integer userId, String userName, String password, String age, Date time) {
		super();
		this.userId = userId;
		this.userName = userName;
		this.password = password;
		this.age = age;
		this.time = time;
	}
	@Override
	public String toString() {
		StringBuilder builder = new StringBuilder();
		builder.append("Users [userId=");
		builder.append(userId);
		builder.append(", userName=");
		builder.append(userName);
		builder.append(", password=");
		builder.append(password);
		builder.append(", age=");
		builder.append(age);
		builder.append(", time=");
		builder.append(time);
		builder.append("]");
		return builder.toString();
	}
	public Integer getUserId() {
		return userId;
	}
	public void setUserId(Integer userId) {
		this.userId = userId;
	}
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getAge() {
		return age;
	}
	public void setAge(String age) {
		this.age = age;
	}
	public Date getTime() {
		return time;
	}
	public void setTime(Date time) {
		this.time = time;
	}
           

第四步:寫UserMapper.java

public interface UserMapper {

	
	Integer add(Users us);
	
	Integer change(@Param("id")Integer id,@Param("name")String name);
	
	Integer del(@Param("id")Integer id);
	
    Integer delByIds( @Param("ids") List<Integer> ids);
	
	Users getById(@Param("id")Integer id);
	
	List<Users> getAll();
	
	List<Users> getByLimit(RowBounds rb );
	
	List<Users> getByWhere(@Param("name") String name,@Param("age") Integer age);
	
}
           

第五步:寫對應的UserMapper.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
	"http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
	<mapper   namespace="org.zhuao.dao.UserMapper">
	<sql id="whereById">
	     WHERE "USERID"=#{id}
	</sql>	
	<insert id="add"  parameterType="org.zhuao.model.Users" >
	      INSERT INTO "T_USERS" ("USERID","USERNAME","PASSWORD","AGE","TIME") VALUES (#{userId},#{userName},#{password},#{age},#{time})	
	</insert>
	<update id="change">
	     UPDATE  "T_USERS" SET "USERNAME" =#{name}  <include refid="whereById" />
	</update>
	<delete id="del">
	    DELETE FROM "T_USERS"   <include refid="whereById" />
	</delete>	
	<select id="getById"  resultMap="kfcResultMap">
	   SELECT * FROM "T_USERS"  WHERE "USERID"=#{id}	
	</select>	
	<select id="getAll"  resultType="org.zhuao.model.Users">
	   SELECT * FROM "T_USERS" 	
	</select>	
	<select id="getByLimit"  resultType="org.zhuao.model.Users">
	   SELECT * FROM "T_USERS" 
	</select>
	<select id="getByWhere"  resultType="org.zhuao.model.Users">
	   SELECT * FROM "T_USERS" 
	   <where>
	    <if test="name != null and name !=''">
	    AND   "USERNAME" like   CONCAT(CONCAT('%', #{name} ),'%')  
	    </if>
	    <if test="age != null">
	      AND  "AGE"   &lt; #{age}     
	    </if>
	     </where>
	</select>
	<delete id="delByIds">
	    DELETE FROM "T_USERS"  WHERE "USERID" IN	    
	    <foreach collection="ids" item="id" separator=","  close=")" open="(">	    
	    #{id}	    
	    </foreach>	    
	</delete>
	<resultMap type="org.zhuao.model.Users" id="kfcResultMap">
	<result property="userId" column="USERID"/>	
	<result property="userName" column="USERNAME"/>
	</resultMap>
	</mapper>
           

第六步:看一下在Main類怎麼調用這個UserMapper.xml檔案    

public static void main(String[] args) {
		// add();
		// change();
		// del();
		// getById();
		// getByLimit();
		// getAll();
		//getByWhere();
		delByIds();
	}  
	  private  static  void delByIds() {
			
			SqlSession session =MyBatisUtils.getSession();
			UserMapper mapper=session.getMapper(UserMapper.class);
			List<Integer> ids=new ArrayList<Integer>();
			ids.add(1);
			ids.add(2);
			Integer del=mapper.delByIds(ids);
			if(del>0) {
				session.commit();
			}else {
				session.rollback();
			}
		    session.close();
		} 
	  
	  
	  
	  private  static  void getByWhere() {

			SqlSession session =MyBatisUtils.getSession();
			UserMapper mapper=session.getMapper(UserMapper.class);
			List<Users> byWhere = mapper.getByWhere("谷", 45);
			
			for(Users users : byWhere) {
		      System.out.println(users.toString());
			}
		
		session.close();
		} 
           

這樣就可以基本實作了Mybatis架構的實作。

順便上傳這個Mybatis架構的簡單demo,以供參考。https://download.csdn.net/download/weixin_42120561/11456382

----------------------------------------------------------------------------------------------------------------------------------------------------

如果是想放在web項目裡面實作,那麼Main類中的static方法對應在service.impl層。再被其他地方調用。

舉例:

public interface AddFileService {
	Integer add(Files f);
}
           
public class AddFileServiceImpl implements AddFileService {
	@Override
	public Integer add(Files f) {
		SqlSession session =MyBatisUtils.getSession();
		FileMapper mapper=session.getMapper(FileMapper.class);
		Integer insert=mapper.add(f);
		if(insert>0) {
			session.commit();
		}else {
			session.rollback();
		}
		session.close();
		return insert;
	}
}
           

繼續閱讀