UserMapper接口:
package com.it.mybaties.mapper;
import com.it.mybaties.pojo.User;
public interface UserMapper {
public User getUserById(Integer id);
}
Test:
package com.it.mybaties.junit;
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.it.mybaties.mapper.UserMapper;
import com.it.mybaties.pojo.User;
public class TestMapper {
@Test
public void fun() throws Exception{
String resource = "sqlMapperConfig.xml";
InputStream in = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory =
new SqlSessionFactoryBuilder().build(in);
SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = mapper.getUserById(37);
System.out.println(user);
}
}
UserMapper.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "mybatis-3-mapper.dtd" >
<mapper namespace="com.it.mybaties.mapper.UserMapper">
<select id="getUserById" resultType="com.it.mybaties.pojo.User" parameterType="Integer">
select * from user where id=#{id}
</select>
<select id="getUserByUsername" parameterType="String" resultType="com.it.mybaties.pojo.User">
<!-- 用$符号时,只能用value 其他都是错 -->
<!-- select * from user where username like '%${value}%' -->
<!-- #号里随便写什么 -->
select * from user where username like "%"#{username}"%"
</select>
<insert id="insertUser" parameterType="com.it.mybaties.pojo.User">
<selectKey keyProperty="id" resultType="Integer" order="AFTER">
select LAST_INSERT_ID()
</selectKey>
insert into user (username,sex,birthday,address) values (#{username},#{sex},#{birthday},#{address})
</insert>
<update id="updateUser" parameterType="com.it.mybaties.pojo.User">
update user set username=#{username},sex=#{sex},birthday=#{birthday},address=#{address} where id=#{id}
</update>
<delete id="deleteUser" parameterType="Integer">
delete from user where id=#{id}
</delete>
</mapper>
Mapper接口开发需要遵循以下规范:
- Mapper.xml文件中的namespace与mapper接口的类路径相同。
- Mapper接口方法名和Mapper.xml中定义的每个statement的id相同
- Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql 的parameterType的类型相同
- Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同