1.user.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:命名空间,用于隔离sql,还有一个很重要的作用,后面会讲 -->
<mapper namespace="user">
<!-- id:statement的id 或者叫做sql的id -->
<!-- parameterType:声明输入参数的类型 -->
<!-- resultType:声明输出结果的类型,应该填写pojo的全路径 -->
<!-- #{}:输入参数的占位符,相当于jdbc的? -->
<select id="queryUserId" parameterType="int"
resultType="com.skiff.www.domain.User">
select * from user where id = #{id}
</select>
<!-- 如果返回多个结果,mybatis会自动把返回的结果放在list容器中 -->
<!-- resultType的配置和返回一个结果的配置一样 -->
<select id="queryUserByUsername1" parameterType="string"
resultType="com.skiff.www.domain.User">
SELECT * FROM user WHERE username LIKE #{username}
</select>
<!-- 如果传入的参数是简单数据类型,${}里面必须写value -->
<select id="queryUserByUsername2" parameterType="string"
resultType="com.skiff.www.domain.User">
SELECT * FROM `user` WHERE username LIKE '%${value}%'
</select>
<!-- 插入语句中values中括号的字段和数据库中的表中的数据是一一对应的 而value后面的数据是实体的对象中对应的属性 -->
<!-- 保存用户 -->
<insert id="saveUser" parameterType="com.skiff.www.domain.User">
<!-- selectKey 标签实现主键返回 -->
<!-- keyColumn:主键对应的表中的哪一列 -->
<!-- keyProperty:主键对应的pojo中的哪一个属性 -->
<!-- order:设置在执行insert语句前执行查询id的sql,在执行insert语句之后执行查询id的sql -->
<!-- resultType:设置返回的id的类型 -->
<selectKey keyColumn="id" keyProperty="id" order="AFTER"
resultType="int">
SELECT LAST_INSERT_ID()
</selectKey>
INSERT INTO `user`
(username,birthday,sex,address) VALUES
(#{name},#{birthday},#{sex},#{address})
</insert>
<!-- 更新用户 -->
<update id="updateUserById" parameterType="com.skiff.www.domain.User">
UPDATE `user` SET
username = #{name},
address = #{address},
birthday = #{birthday} WHERE id = #{id}
</update>
<!-- 删除用户 -->
<delete id="deleteUserById" parameterType="int">
delete from user where
id=#{id}
</delete>
</mapper>
2.采用junit测试增删改查
/**
* @文件名称: TestUser.java
* @描述: TODO
* @作者: 一叶扁舟(skiff)
* @时间:2018年1月9日 上午10:16:07
* @版本:V1.0
*/
package test.com.skiff.www.testUser;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.List;
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.Before;
import org.junit.Test;
import com.skiff.www.domain.User;
/**
* @类功能说明:
* @作者: 一叶扁舟 (skiff)
* @创建时间:2018年1月9日 上午10:16:07
* @版本:V1.0
*/
public class TestUser {
private SqlSessionFactory sqlSessionFactory = null;
@Before
public void init() throws IOException{
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
//2.加载sqlMapConfig.xml文件
InputStream is = Resources.getResourceAsStream("sqlMapConfig.xml");
//3.创建一个factory工厂
sqlSessionFactory = builder.build(is);
}
@Test
public void testSelect(){
User user = new User();
user.setName("一叶扁舟");
user.setAddress("福州");
user.setSex("1");
user.setBirthday(new Date());
// 4.创建一个session
SqlSession session = sqlSessionFactory.openSession();
// 5. 执行SqlSession对象执行查询,获取结果User
// 第一个参数是User.xml的statement的id,第二个参数是执行sql需要的参数;
User user1 = session.selectOne("queryUserId",1);
// 6. 打印结果
System.out.println(user1);
// 7. 释放资源
session.close();
}
@Test
public void testSaveUser(){
User user = new User();
user.setName("一叶扁舟");
user.setAddress("福州");
user.setSex("1");
user.setBirthday(new Date());
SqlSession session = sqlSessionFactory.openSession();
session.insert("saveUser",user);
System.out.println(user);
session.commit();
session.close();
}
@Test
public void queryName(){
// 4. 创建SqlSession对象
SqlSession sqlSession = sqlSessionFactory.openSession();
// 5. 执行SqlSession对象执行查询,获取结果User
// 查询多条数据使用selectList方法
List<Object> list = sqlSession.selectList("queryUserByUsername1", "%张%");
// 6. 打印结果
for (Object user : list) {
System.out.println(user);
}
// 7. 释放资源
sqlSession.close();
}
@Test
public void testQueryUserByUsername2() throws Exception {
// 4. 创建SqlSession对象
SqlSession sqlSession = sqlSessionFactory.openSession();
// 5. 执行SqlSession对象执行查询,获取结果User
// 查询多条数据使用selectList方法
List<Object> list = sqlSession.selectList("queryUserByUsername2", "王");
// 6. 打印结果
for (Object user : list) {
System.out.println(user);
}
// 7. 释放资源
sqlSession.close();
}
@Test
public void testUpdateUserById() {
// 4. 创建SqlSession对象
SqlSession sqlSession = sqlSessionFactory.openSession();
// 5. 执行SqlSession对象执行更新
// 创建需要更新的User
User user = new User();
user.setId(30);
user.setName("关羽");
user.setSex("1");
user.setBirthday(new Date());
user.setAddress("魔都");
sqlSession.update("updateUserById", user);
// 需要进行事务提交
sqlSession.commit();
// 7. 释放资源
sqlSession.close();
}
@Test
public void testDeleteUserById() {
// 4. 创建SqlSession对象
SqlSession sqlSession = sqlSessionFactory.openSession();
// 5. 执行SqlSession对象执行删除
sqlSession.delete("deleteUserById", 30);
// 需要进行事务提交
sqlSession.commit();
// 7. 释放资源
sqlSession.close();
}
}