import java.util.List;
public interface UserMapper {
// 可以通过注入的方式生成映射本例不采用,本例采用Xml映射方式
// @Select("select * from user where username = #{username}")
public User getUser(String username);
/**
* 增加一个用户
*
* @param user
*/
public void addUser(User user);
/**
* 查询所有用户
*
* @return
*/
public List<User> queryAll();
/**
* 根据ID查找用户
*
* @param id
* @return
*/
public User getUserById(int id);
/**
* 修改一个用户
*
* @param user
*/
public void update(User user);
}
二.修改配置文件(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">
<mapper namespace="com.fly31.mybatis.UserMapper">
<!-- 下面这段代码可有可无,如果没有的话可以在mapper类中通过注解的方式实现 -->
<!-- 用户名不可重复 -->
<select id="getUser" parameterType="java.lang.String"
resultType="User">
select * from user where username = #{username}
</select>
<select id="getUserById" parameterType="int"
resultType="User">
select * from user where id = #{id}
</select>
<!--查询所有记录-->
<select id="queryAll" resultType="User">select * from user</select>
<!-- 增加一个user -->
<insert id="addUser" parameterType="User" >
insert into user(id, username, password)
values (#{id},#{username}, #{password})
</insert>
<!-- 更新数据库 -->
<update id="update" parameterType="User">
update user set username = #{username},password = #{password} where id=#{id}
</update>
</mapper>
说明:namespace在3.0一下可能不是很重要,在3.0及以上版本,命名空间很重要,必须要配置。
select:用于查询
id:是一个唯一标示,由于没有实现类,用默认mybatis的默认实现,所有id要用UserMapper 的方法名。
resultType:结果类型,如果返回的是个结果集,类型为结果集单元的类型
parameterType:参数类型,用#{……}可以取他的属性值。
三.写测试类 (MyBatisTest)我这里用的是junit 4
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import com.fly31.mybatis.User;
import com.fly31.mybatis.UserMapper;
import com.fly31.utils.MyBatisUtil;
public class MyBatisTest {
@Test
public void testGetUserByName() {
// 获取SqlSession
SqlSession session = MyBatisUtil.getSession();
// 获取Mapper
UserMapper userMapper = session.getMapper(UserMapper.class);
// 执行sql
User user = userMapper.getUser("aaa");
if (user != null) {
System.out.println("username:" + user.getUsername() + ", password:"
+ user.getPassword());
}
session.close();
}
@Test
public void testGetAllUser() {
// 获取SqlSession
SqlSession session = MyBatisUtil.getSession();
// 获取Mapper
UserMapper userMapper = session.getMapper(UserMapper.class);
List<User> list = userMapper.queryAll();
for (User user : list) {
System.out.println("username:" + user.getUsername() + ", password:"
+ user.getPassword());
}
session.close();
}
@Test
public void testAddUser() {
User user = new User();
user.setId(3);
user.setUsername("ccc");
user.setPassword("123");
// 获取SqlSession
SqlSession session = MyBatisUtil.getSession();
// 获取Mapper
UserMapper userMapper = session.getMapper(UserMapper.class);
userMapper.addUser(user);
session.commit();
}
@Test
public void testUpdateUser() {
// 获取SqlSession
SqlSession session = MyBatisUtil.getSession();
// session.commit(false);
// 获取Mapper
UserMapper userMapper = session.getMapper(UserMapper.class);
// 执行sql
User user = userMapper.getUser("bbb");
user.setUsername("josh22");
userMapper.update(user);
session.commit();
session.close();
}
@Test
public void testGetUserById() {
// 获取SqlSession
SqlSession session = MyBatisUtil.getSession();
// 获取Mapper
UserMapper userMapper = session.getMapper(UserMapper.class);
// 执行sql
User user = userMapper.getUserById(2);
if (user != null) {
System.out.println("username:" + user.getUsername() + ", password:"
+ user.getPassword());
}
session.close();
}
}