Mybatis面向接口编程、参数传递

来源:互联网 发布:淘宝网变形金刚玩具 编辑:程序博客网 时间:2024/05/17 03:42

先写一个接口:

package com.dw.dao;import java.util.List;import com.dw.entity.User;public interface UserDao {   public void insertUser(User user);   public void deleteUser(Integer id);   public List selectById(Integer id);   public void updateUser(User user);}

这里不再写接口的实现类,通过xml文件,并在其中写入要执行的逻辑的sql语句;通过getMapper()方法可以得到该接口的代理对象:

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="com.dw.dao.UserDao">  //这里要写接口的类名     <insert id="insertUser"  parameterType="com.dw.entity.User">        insert into user(username,password) values(#{username},#{password})     </insert>     <delete id="deleteUser" parameterType="com.dw.entity.User">        delete from user where user.id=#{id}     </delete>     <select id="selectById" resultType="com.dw.entity.User">   //id要与接口中的方法名一致        select * from user as u where u.id=#{id}     </select>     <update id="updateUser" parameterType="com.dw.entity.User">        update user as u set u.username=#{username},u.password=#{password} where u.id=#{id}     </update>  </mapper>

测试:

package com.dw.dao.test;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 com.dw.dao.UserDao;import com.dw.entity.User;public class daoTest {private SqlSession session;private InputStream inputStream ;private SqlSessionFactory sessionFactory;private UserDao userDao;//测试增删查改  @Test  public void testInsert(){  init();    User user = new User();  user.setUsername("纣王");  user.setPassword("123456");  userDao.insertUser(user);  session.commit();  destory();  }    @Test  public void testDelete(){  init();        userDao.deleteUser(4);  session.commit();  destory();  }   @Test  public void testSelect(){  init();        User user = (User)(userDao.selectById(3).iterator().next());      System.out.println("user:"+user);  session.commit();  destory();  }      @Test  public void testUpdate(){  init();        User user = (User)(userDao.selectById(2).iterator().next());      user.setUsername("张三");      userDao.updateUser(user);  session.commit();  destory();  }    private void init(){try {inputStream = Resources.getResourceAsStream("config.xml");sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);session = sessionFactory.openSession();userDao = session.getMapper(UserDao.class);} catch (IOException e) {e.printStackTrace();
     <parameterMap type="com.dw.entity.User" id="userMap">        <parameter property="username"/>        <parameter property="password"/>     </parameterMap>     <insert id="inserMap" parameterMap="userMap">         insert into user(username,password) values(#{u},#{p})     </insert>

}}private void destory(){if(session != null){session.close();}if(inputStream != null){try {inputStream.close();} catch (IOException e) {e.printStackTrace();}}} }

-------------------------------------------------------------------------------------------------------------------

参数传递:

1、八种基本类型、POJO类 ,可以用parameterType也可以不用

2、Map 类型:

可以使用parameterMap , 也可以不用:

使用parameterMap 时:

     <parameterMap type="com.dw.entity.User" id="userMap">        <parameter property="username"/>        <parameter property="password"/>     </parameterMap>     <insert id="inserMap" parameterMap="userMap">         insert into user(username,password) values(#{u},#{p})     </insert>

  @Test  public void testMap(){  init();    Map<String, String> mp = new HashMap<String, String>();  mp.put("u", "冷锋");  mp.put("p", "123456");      userDao.inserMap(mp);  session.commit();  destory();  }  
注意 u 、p参数要一致




 
原创粉丝点击