Mybatis框架使用介绍

 

先看下一个简单Mybatis的项目结构:Mybatis主要对应的是dao层。

 

第一步:导包

        先导包,把上面图片的lib里面的jar包下载。其中log开头的jar包是一个日志jar包,与org.zhuao.utils里的log4j.properties匹配,两者可以舍去。

第二步:配置文件

        这个项目连接的是oracle数据库

 

 

第三步:写一个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;
	}
}

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值