基于快速入门时所建工程和数据库开始做增删改查操作。
1.在src下新建一个package,命名为com.atguigu.mybatis.test2.
2.将上次用到的userMapper复制到新的package目录下,并修改namespace.
3.在conf.xml中注册新的userMapper.xml
<mapper resource="com/atguigu/mybatis/test2/userMapper.xml"/>
4.在userMapper中编辑具体的sql操作。
<?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.atguigu.mybatis.test2.userMapper">
<!--
CRUD operator
-->
<insert id="addUser" parameterType="com.atguigu.mybatis.test1.User" >
insert into users(name,age) values(#{name},#{age})
</insert>
<delete id="deleteUser" parameterType="int" >
delete from users where id=#{id}
</delete>
<update id="updateUser" parameterType="com.atguigu.mybatis.test1.User">
update users set name=#{name},age=#{age} where id=#{id}
</update>
<select id="getUser" parameterType="int" resultType="com.atguigu.mybatis.test1.User">
select * from users where id=#{id}
</select>
<select id="getAllUser" resultType="com.atguigu.mybatis.test1.User">
select * from users
</select>
//此操作返回类型List<user>,在java文件中定义
</mapper>
5.在com.atguigu.mybatis.test2包下新建一个测试类,不带main()以免引起冲突,采用Junit方法进行单元测试(选中方法 按下F11即可)
public class Test2 {
@Test//注解名和类名不能冲突
public void testAdd()
{
SqlSessionFactory factory=MybatisUtil.getFactory();
SqlSession session=factory.openSession();
String statement="com.atguigu.mybatis.test2.userMapper.addUser";
int insert=session.insert(statement, new User(-1,"liuqiao",21));
session.commit();//如果没有提交则数据库中没有值
//也可以这样:factory.openSession(true);设置为自动提交
System.out.println(insert);
}
@Test
public void testUpdate()
{
SqlSessionFactory factory=MybatisUtil.getFactory();
SqlSession session=factory.openSession();
String statement="com.atguigu.mybatis.test2.userMapper.updateUser";
int update=session.update(statement, new User(4,"liuqiao6",21));
session.commit();
System.out.println(update);
}
@Test
public void testDelete()
{
SqlSessionFactory factory=MybatisUtil.getFactory();
SqlSession session=factory.openSession(true);
String statement="com.atguigu.mybatis.test2.userMapper.deleteUser";
int delete=session.delete(statement, 4);
//session.commit();
System.out.println(delete);
}
@Test
public void testGetAllUser()
{
SqlSessionFactory factory=MybatisUtil.getFactory();
SqlSession session=factory.openSession(true);
String statement="com.atguigu.mybatis.test2.userMapper.getAllUser";
List<User> users=session.selectList(statement);
System.out.println(users);
}
}
其中MybatisUtil为自己定义的工具类,里面有一个产生sqlFactory的方法
public class MybatisUtil {
public static SqlSessionFactory getFactory() {
String resource="conf.xml";
InputStream is=Test.class.getClassLoader().getResourceAsStream(resource);
SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(is);
return factory;
}
6.最好每编写一个方法就测试好一个方法。