Mybatis执行SQL语句的方式

最近在玩Mybatis,感觉官方文档对于通过执行mapper接口和XML配置文件执行SQL的描述不是特别清楚,现在总结如下:

首先实现mapper接口: 

import org.apache.ibatis.annotations.Select;

public interface UserMapper {
	@Select("SELECT * FROM table01 WHERE id = #{id}")
	User selectUser(int id);
}

在XML中配置SQL:

<?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="mybatisModule.UserMapper">
	<select id="xmlSelectUser" parameterType="int" resultType="User">
		select name,password from table01 where id = #{id}
	</select>
	<select id="xmlSelectUsers" resultType="User">
		select * from table01 order by id
	</select>
</mapper>

于是我们就有了三句SQL,可以通过下面的方式执行这三句SQL:

	public static void main(String[] args) throws SQLException, IOException{
		SqlSessionFactory sessionFactory = SessionFactorySingleton.getSessionFactory();
		SqlSession session = sessionFactory.openSession();
		try{
			//method 1: session.getMapper()调用接口
			UserMapper mapper = session.getMapper(UserMapper.class);
			User user1 = mapper.selectUser(6);
			if(user1 != null){
				System.out.println("user name:"+user1.getName());
			}
			else{
				System.out.println("selected 0 row");
			}
			
			//method 2: session.selectOne()调用接口
			User user2 = (User)session.selectOne("mybatisModule.UserMapper.selectUser",9);
			if(user2 != null){
				System.out.println("user name:"+user2.getName());
			}
			else{
				System.out.println("selected 0 row");
			}
			
			//method 3: session.selectOne()调用XML配置文件
			User user3 = (User)session.selectOne("mybatisModule.UserMapper.xmlSelectUser",6);
			if(user3 != null){
				System.out.println("user name:"+user3.getName());
			}
			else{
				System.out.println("selected 0 row");
			}
			
			//查询得到多组数据
			ArrayList<User> users = (ArrayList<User>)session.selectList("mybatisModule.UserMapper.xmlSelectUsers");
			for(User u : users){
				System.out.println(u.getId()+" : "+u.getName()+" : "+u.getPassword());
			}
		}finally{
			session.close();
		}
	}

可能还有其他方式,但目前只发现这三种,欢迎指点讨论~~

猜你喜欢

转载自zfei.iteye.com/blog/1573783