MyBatis之灵活编程模式
博客专区 > ws199358 的博客 > 博客详情
MyBatis之灵活编程模式
ws199358 发表于10个月前
MyBatis之灵活编程模式
  • 发表于 10个月前
  • 阅读 17
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 新注册用户 域名抢购1元起>>>   

摘要: 面向接口编程和面向对象编程

一、面向接口编程

在MyBatis中,Mapper中的namespace用于绑定Dao接口的,即面向接口编程。

它的好处在于当使用了namespace之后就可以不用写接口实现类,业务逻辑会直接通过这个绑定寻找到相对应的SQL语句进行对应的数据处理。

<mapper namespace="com.domain.StudentMapper">    
  
    <select id="selectById" parameterType="int" resultType="student">    
       select * from student where id=#{id}    
    </select>  
       
</mapper>
public interface StudentMapper {
   public Student selectById(int id);
}

调用方法时,直接用接口.方法名

public Test{
@Autowired
StudentMapper studentMapper ;

public void test01(){

Student student = studentMapper.selectById(1);

      }
}

使用 Mapper 接口调用必须具备以下条件:

  1. Mapper 接口方法名 和 studentMapper.xml 中定义的每个 sql 的 id 同名。

  2. Mapper 接口方法的输入参数类型和studentMapper.xml 中定义的 sql parameterType 类型相同。

  3. Mapper 接口的输出参数类型和 studentMapper.xml 中 定义的 sql 的 resultType 类型相同。

  4. studentMapper.xml 文件中的 namespace 即是 Mapper 接口的类路径

二、面向对象编程

public interface UserDao {

	//根据Id查询用户信息
	public User findUserById(int userId) throws Exception;
	
}


public class UserDaoImpl implements UserDao {
   //通过spring将 SqlSessionFactory 注入
	private SqlSessionFactory sqlSessionFactory;
	
	
	@Override
	public User findUserById(int userId) throws Exception {
		SqlSession sqlSession = null;
		User user = null;
		try {
			//通过SqlSessionFactory获取SqlSession
			sqlSession = sqlSessionFactory.openSession();
			
			//使用session操作数据库
			//selectOne第一个参数:指定sql的id(statement id),注意带上namespace;第二个参数:向sql中传的参数值
			user = sqlSession.selectOne("com.domain.StudentMapper.selectById", userId);
			
			System.out.println(user);
		} catch (Exception e) {
			// TODO: handle exception
		} finally {
			if (sqlSession != null) {
				sqlSession.close();
			}
		}
		
		return user;
	}

	
	}
}

 

共有 人打赏支持
粉丝 7
博文 21
码字总数 17855
×
ws199358
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: