您的位置:首页 > 数据库

Mybatis执行SQL语句的方式

2014-10-31 21:46 344 查看
最近在玩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();
}
}

可能还有其他方式,但目前只发现这三种,欢迎指点讨论~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mybatis mapper xml