1.原始Dao开发
1.1 创建UserDao接口
package dao;
import cn.itcast.mybatis.po.User;
public interface UserDao {
public User SelectUserById(Integer id);
}
1.2 UserDao接口的实现类UserDaoImpl
package dao;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import cn.itcast.mybatis.po.User;
public class UserDaoImpl implements UserDao {
//注入
private SqlSessionFactory sqlSessionFactory;
public UserDaoImpl(SqlSessionFactory sqlSessionFactory) {
this.sqlSessionFactory = sqlSessionFactory;
}
//通过用户ID查询
public User SelectUserById(Integer id)
{
SqlSession sqlSession=sqlSessionFactory.openSession();
return sqlSession.selectOne("SelectUserById", id);
}
}
1.3 UserDao对应的UserMapper.xml
<?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">
<!-- 写Sql语句 -->
<mapper namespace="mapper.UserMapper">
<!-- 通过ID查询一个用户 -->
<select id="SelectUserById" parameterType="Integer" resultType="cn.itcast.mybatis.po.User">
select * from user where id = #{id}
</select>
</mapper>
1.4 测试类
package dao;
import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import cn.itcast.mybatis.po.User;
/**
* 原始Dao开发
* 1.创建Dao的接口和实现类(面向接口编程)
* 2.在测试类中注工厂及创建Session会话
* 3.测试类中创建实现类的实例,调用方法执行sql语句,
* 4.xml文件不用修改,xml文件是写sql语句的
* @author 十九号的小胖子
*
*/
public class MybatisDaoJUnit {
SqlSessionFactory sqlSessionFactory;
@Test
public void test() throws IOException {
InputStream in=Resources.getResourceAsStream("sqlMapConfig.xml");
sqlSessionFactory=new SqlSessionFactoryBuilder().build(in);
UserDao userdao=new UserDaoImpl(sqlSessionFactory);
User user=userdao.SelectUserById(2);
System.out.println(user);
}
}
没有main方法的原因的我new的是JUnit Test,可以直接执行方法
运行结果如下:
2.Mapper代理开发
2.1 UserMapper接口(对应上面的UserDao)
package mapper;
import cn.itcast.mybatis.po.User;
public interface UserMapper
{
/**
* 四个原则
* 1.方法名等于.xml文件中对应sql语句的id名
* 2.返回值类型与sql语句返回类型一致
* 3.方法的参数类型与入参类型一致
* 4.命名空间等于接口所在包名+接口名
* @param id
* @return
*/
public User SelectById (Integer id);
}
2.2 创建UserMapper对应的xml文件
<?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">
<!-- 写Sql语句 -->
<!-- 命名空间与UserMapper接口的类路径一致 -->
<!-- 最好把接口和它对应的xml文件放一个包里,我这里没放 -->
<mapper namespace="mapper.UserMapper">
<!-- 通过ID查询一个用户 -->
<!-- id名等于方法名 -->
<!-- 入参类型与方法参数类型一致 -->
<!-- 结果类型与方法返回类型一致 -->
<select id="SelectById" parameterType="Integer" resultType="cn.itcast.mybatis.po.User">
select * from user where id = #{id}
</select>
</mapper>
2.3 如果UserMapper.xml是新建的,还要把它加入全局配置文件。我这是修改原有的xml文件,所以不用加
2.4 测试类
package mapper;
import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import cn.itcast.mybatis.po.User;
public class MybatisMapperJUnit {
@Test
public void test() throws IOException {
InputStream in=Resources.getResourceAsStream("sqlMapConfig.xml");
SqlSessionFactory sqlSessionFactory =new SqlSessionFactoryBuilder().build(in);
SqlSession session=sqlSessionFactory.openSession();
//SQLSession生成一个实现类(参数是接口)
UserMapper usermapper=session.getMapper(UserMapper.class);
User user=usermapper.SelectById(2);
System.out.println(user);
}
}