`
zhangfeilo
  • 浏览: 391690 次
  • 性别: Icon_minigender_1
  • 来自: 昆明
社区版块
存档分类
最新评论

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();
		}
	}

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

0
5
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics