mybatis最基本的增删改查是存在一些问题的。因为他第二个参数的类型是object类型,但是数据库中对应的id是int类型,我们这边传入字符(比如:abc)的话,运行是会出错的。所以为了能够限制参数的类型,我们还是使用接口式编程吧。
Employee employee = openSession.selectOne(
"njci.software.EmployeeMapper.selectBlog", 1);
1、创建接口
public interface EmployeeMapper {
Employee getEmpById(Integer id);
}
2、为了接口和xml文件绑定,我们需要将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">
<mapper namespace="cc_study.mapper.EmployeeMapper">
<!--
namespace:名称空间 ;对应的接口名
id:唯一标识
resultType:返回值类型
#{id}:从传递过来的参数中取的id值
-->
<select id="getEmpById" resultType="cc_study.pojo.Employee">
select * from employee where id = #{id}
</select>
</mapper>
3、测试
(1)创建SqlSessionFactory
(2)创建SqlSession
(3)取得接口的实现类,调用方法
@Test
public void testMapper() throws IOException {
String resource = "mybatis_config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder()
.build(inputStream);
SqlSession openSession = sqlSessionFactory.openSession();
try {
EmployeeMapper employeeMapper = openSession.getMapper(EmployeeMapper.class);
Employee employee = employeeMapper.getEmpById(1);
System.out.println(employee);
} catch (Exception e) {
e.printStackTrace();
} finally {
openSession.close();
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之家整理,本文链接:https://www.bmabk.com/index.php/post/16882.html