package com.yiki.Dao;
import com.yiki.Entity.Person;
//MyBatis允许返回值为Long boolean Integer,会自动封装,自行修改即可
public interface PersonMapper {
public Person getPersonById(Integer id);
public void addPerson(Person person);
public void updatePerson(Person person);
public void deletePerson(Integer id);
}
<?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">
<!--名称空间:写指定接口的全类名
id:唯一标识,这里写接口里绑定的对应的接口方法
resultype:返回值类型(推荐写全类名)==>也可以在typeAliases里写别名,就不需要全类名了
-->
<mapper namespace="com.yiki.Dao.PersonMapper">
<!-- select * from Person where pid = #{id}-->
<select id="getPersonById" resultType="com.yiki.Entity.Person">
select pid,p_name pname,email from Person where pid = #{id}
</select>
<insert id="addPerson">
insert into person(p_name,email)
values(#{pName},#{email})
</insert>
<update id="updatePerson">
update person
set p_name=#{pName},email=#{email}
where pid=#{pId}<!--这里应该写bean类里的,因为没有传参?并且严格区分大小写-->
</update>
<delete id="deletePerson">
delete from person where pid=#{id}
</delete>
</mapper>
package com.yiki.Test;
import com.yiki.Dao.PersonMapper;
import com.yiki.Dao.PersonMapperAnno;
import com.yiki.Entity.Person;
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 java.io.IOException;
import java.io.InputStream;
public class Tests {
private String resource;
private InputStream inputStream;
private SqlSessionFactory sqlSessionFactory;
private SqlSession sqlSession;
public void start() throws IOException {
resource = "mybatis.xml";//根据全局配置文件
inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
sqlSession = sqlSessionFactory.openSession();//不会自动提交
}
@Test
public void testAdd() throws IOException {
start();
PersonMapper mapper = sqlSession.getMapper(PersonMapper.class);
mapper.addPerson(new Person(null,"tiffany","slkjag"));
sqlSession.commit();
sqlSession.close();
}
@Test
public void testUpdate() throws IOException {
start();
PersonMapper mapper = sqlSession.getMapper(PersonMapper.class);
mapper.updatePerson(new Person(1,"yiki","yikisssss"));
sqlSession.commit();
sqlSession.close();
}
@Test
public void testDelete() throws IOException {
start();
PersonMapper mapper = sqlSession.getMapper(PersonMapper.class);
mapper.deletePerson(1);
sqlSession.commit();
sqlSession.close();
}
@Test
public void select01() throws IOException {
start();
PersonMapper mapper = sqlSession.getMapper(PersonMapper.class);
Person person = mapper.getPersonById(1);
System.out.println(person);
sqlSession.close();
}
@Test
public void selectAnno() throws IOException {
start();
PersonMapperAnno annomapper = sqlSession.getMapper(PersonMapperAnno.class);
System.out.println(annomapper.getPersonById(1));
sqlSession.close();
}
public static void main(String[] args) throws IOException {
String resource = "mybatis.xml";//根据全局配置文件
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
//第一个参数:写唯一标识,最好是namespace+id
//第二个参数:写sql要传入的参数
Person person = sqlSession.selectOne("com.yiki.Entity.PersonMapper.selectPerson", 1);
System.out.println(person);
sqlSession.close();
}
}