定义一个mapper接口
package mapper; import pojo.User; public interface UserMapper { public User getUser(int id) throws Exception; public void insertUser(User user) throws Exception; }
定义一个UserMapper.xml指向它,注意namespace需要指向它的全路径,sql语句id同方法名,然后入参和结果都和方法入参,返回一致。
xml名称不一定要和接口名相同,它是通过namespace搜索的。
<?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="mapper.UserMapper"> <select id="getUser" parameterType="int" resultType="User"> select id, name, age, gmt_create gmtCreate from users where id=#{id} </select> <insert id="insertUser" parameterType="User"> <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer"> SELECT LAST_INSERT_ID() </selectKey> insert into users(name, age, gmt_create, money) VALUE ('xiao', 24, '1991-06-26', 10000) </insert>
测试
private SqlSessionFactory sqlSessionFactory; @Before public void setUp() throws Exception{ sqlSessionFactory = MybatisUtils.getFactory(); } @Test public void testGetUser() throws Exception{ SqlSession sqlSession = sqlSessionFactory.openSession(); UserMapper userMapper = sqlSession.getMapper(UserMapper.class); User user = userMapper.getUser(1); System.out.println(user); }
通过sqlSession.getMapper返回代理类。
根据返回的参数智能选择使用selectOne或selectList,即程序员可以定义
public User getUser(int id) throws Exception;
public List<User> getUserByName(String userName) throws Exception;