Mybatis_5Mybatis开发Dao

使用mybatis开发Dao有两种方式,

    1.原始开发:需要写dao层接口,实现类,mapper文件,发现代码量很大,而且有很多问题。重复性很强吗,但是也有不变的地方,因此有mapper动态代理开发

    2.mapper动态代理开发:

      

开发规范:

1、在mapper.xmlnamespace等于mapper接口地址

 

2mapper.java接口中的方法名和mapper.xmlstatementid一致

 

3mapper.java接口中的方法输入参数类型和mapper.xmlstatementparameterType指定的类型一致。

 

4mapper.java接口中的方法返回值类型和mapper.xmlstatementresultType指定的类型一致。

然后便可以只写接口和mapper.xml文件和测试文件即可完成,大大的缩减了代码量。

代码:

SqlMapConfig.xml和User.xml已经在上面的博客中写过,不再post。

接口:

 1 package com.me.mybatis.mapper;
 2 
 3 import com.me.mybatis.pojo.User;
 4 
 5 public interface UserMapper {
 6         //遵循四个原则
 7         //1.接口方法名==user.xml文件中的id名
 8         //2.返回值类型与mapper.xml文件中的返回值类型要一致
 9         //3.方法的入参类型与mapper.xml中入参的类型一致
10         //4.mapper.xml文件的namespace与接口绑定在一起
11         public User findUserById(Integer id);
12 }
UserMapper.java

测试类:

 1 package com.me.mybatis.junit;
 2 
 3 import java.io.InputStream;
 4 
 5 import org.apache.ibatis.io.Resources;
 6 import org.apache.ibatis.session.SqlSession;
 7 import org.apache.ibatis.session.SqlSessionFactory;
 8 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
 9 import org.junit.jupiter.api.Test;
10 
11 import com.me.mybatis.mapper.UserMapper;
12 import com.me.mybatis.pojo.User;
13 
14 public class MybatisMapperTest {
15 
16     @Test
17     void testMapper() throws Exception {
18         // 加载核心配置文件
19         String resource = "SqlMapConfig.xml";
20         InputStream resourceAsStream = Resources.getResourceAsStream(resource);
21         // 创建sqlsessionFactory
22         SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
23         // 创建sqlsession
24         SqlSession openSession = sqlSessionFactory.openSession();
25         //sqlsession生成一个实现类
26         UserMapper mapper = openSession.getMapper(UserMapper.class);
27         //利用接口调方法
28         User user = mapper.findUserById(10);
29         System.out.println(user);
30     }
31 
32 }
MybatisMapperTest

这样便可完成任务。

注意,user.xml文件有改动:

运行结果:

猜你喜欢

转载自www.cnblogs.com/tkg1314/p/12274570.html