Mapper映射器及其接口规则
1、Mapper映射器及其接口规则
(1)根据SQL定义的id属性作为接口的方法名
(2)根据SQL定义的parameterType类型作为方法的参数类型
(3)根据SQL定义的resultTyoe类型,定义方法的返回类型,多行使用List<类型>,单行直接使用类型
(4)将SQL定义文件中<mapper>的namespace属性指定为包名.接口名
例如:我们有一个Mapper.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"> <!-- namespace名字与全限定接口名一致 --> <mapper namespace="com.zlc.dao.UserDao"> <!-- id对应接口的方法名 --> <select id="findAll" resultType="com.zlc.entity.User"> select * from user </select> <!-- 带一个参数的查询 --> <select id="findByName" parameterType="java.lang.String" resultType="com.zlc.entity.User"> select * from user where user_name = #{name} </select> <insert id="addUser" parameterType="map"> insert into user (user_name,age,salary) values (#{user_name},#{age},#{salary}); </insert> <delete id="removeUser" parameterType="int"> delete from user where user_id = #{user_id} </delete> <update id="updateUser" parameterType="map"> update user set salary = #{salary} where user_id = #{user_id} </update> </mapper>
根据xml文件定义一个接口:
package com.zlc.dao; import java.util.List; import java.util.Map; import com.zlc.entity.User; public interface UserDao { public List<User> findAll(); public User findByName(); public int addUser(Map map); public int removeUser(Integer user_id); public int updateUser(Map map); }
测试类:
public static void main(String[] args) throws IOException { String conf = "mybatis-config.xml"; InputStream is = Resources.getResourceAsStream(conf); SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(is); SqlSession session = ssf.openSession(); //将根据接口直接生成一个实例对象 UserDao userDao = session.getMapper(UserDao.class); List<User> list = userDao.findAll(); for(User u : list) { System.out.println(u.getUser_name()); } session.close(); }