mybatis的dao的mapper写法

## MyBatisDao编写【mapper代理方式实现】

 

step1: 写一个接口,并写抽象方法

 1 package com.sjl.mapper;
 2 
 3 import com.sjl.model.User;
 4 
 5 public interface UserMapper {
 6     /*
 7   * 保存一个用户
 8   * */
 9     public int save(User user);//返回受影响的行数
10     public User findUserById(int id);
11 }

step2: 在同包下建一个UserMapper.xml(具体sql方法的显现类的方法的实现),这个相当于

是dao的实现类,mybatis会为mapper接口生成动态代理实现类;

(说明:入参,返回值,id等要与接口类中的对应,具体看下面的注释)

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE mapper
 3         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 4         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 5 
 6 <mapper namespace="com.sjl.mapper.UserMapper">
 7     <insert id="save" parameterType="com.sjl.mapper.User">
 8         insert into user(username,sex,birthday,address)
 9         value (#{username},#{sex},#{birthday},#{address});
10     </insert>
11 
12     <!--受影响的返回的行数不用写,可以不用写,无意义?-->
13 
14     <select id="findUserById" parameterType="int"
15     resultType="com.sjl.mapper.User">
16 
17     </select>
18 
19 </mapper>
<!--
com.sjl.mapper.UserMapper 包名+接口名
id="save" 方法名
parameterType="com.sjl.mapper.User" 入参
resultType 返回结果
-->


step3:在src下的sqlconf.xml中的添加如下内容,加载执行dao方法的映射文件;

<mappers> 
<!--写映射文件的名字-->
        <mapper resource="com/gyf/mapper/UserMapper.xml"></mapper>
</mappers>


step4:测试类;
 1 package com.sjl.test;
 2 
 3 import com.sjl.mapper.UserMapper;
 4 import com.sjl.model.User;
 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.After;
10 import org.junit.Before;
11 import org.junit.Test;
12 
13 import java.io.IOException;
14 import java.io.InputStream;
15 import java.util.Date;
16 import java.util.List;
17 
18 public class Demo02 {
19      SqlSession session;
20 
21      @Before
22      public void before() throws IOException{
23           System.out.println("before...获取session");
24           //a)读取配置文件;
25           InputStream is=Resources.getResourceAsStream("SqlMapConfig.xml");
26           //b)通过SqlSessionFactoryBuilder创建SqlSessionFactory会话工厂 。
27              SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build(is);
28           // c)通过SqlSessionFactory创建SqlSession。
29           session=sessionFactory.openSession();
30      }
31      @After
32      public void after(){
33 
34           //关闭SqlSession。
35           session.close();
36      }
37 
38      @Test
39      public void test1() throws IOException{
40           //通过session拿到这个接口的代理  代理直接转成接口的实现类,并指向UserMapper这个接口
41           UserMapper userMapper=session.getMapper(UserMapper.class);
42 
43           //获取数据
44           System.out.println(userMapper.findUserById(1));
45 
46           //保存
47           User user2=new User("xx","x",new Date(),"xx");
48           userMapper.save(user2);
49           session.commit();
50      }
51 }

猜你喜欢

转载自www.cnblogs.com/shijinglu2018/p/10324832.html