在前一篇笔记中,我们创建了配置 mybatis-config.xml 文件,原来 mappers标签下的内容为:
<mappers>
<mapper resource="tk/mybatis/simple/mapper/CountryMapper.xml" />
</mappers>
为了配置简单,我们采用配置包的形式添加mapper接口,修改为:
<mappers>
<package name="tk.mybatis.simple.mapper" />
</mappers>
该种方式会去扫描tk.mybatis.simple.mapper包下的所有接口
接下来开始我们的项目,项目的目录结构如下:
src/main/resources包的目录结构:
接下来是代码部分内容,代码主要就是SysUser.java实体、UserMapper.Java接口、UserMapper.xml映射文件和UserMapperTest.Java测试代码四部分
SysUser.Java实体的代码
package tk.mybatis.simple.model;
public class SysUser {
private Long id;
private String userName;
private String userPassword;
private String userInfo;
private byte[] headImg;
private Date createTime;
getter()、setter()方法
}
UserMapper.Java接口的代码:
package tk.mybatis.simple.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.simple.model.SysRole;
import tk.mybatis.simple.model.SysUser;
public interface UserMapper {
/**
* 根据id查找用户
* @param id
* @return
*/
SysUser selectById(Long id);
/**
* 查找所有用户
* @return
*/
List<SysUser> selectAll();
/**
* 新增用户
* @param sysUser
* @return
*/
int insert(SysUser sysUser);
/**
* 更新用户
* @param sysUser
* @return
*/
int update(SysUser sysUser);
/**
* 根据id删除用户
* @param sysUser
* @return
*/
int delete(SysUser sysUser);
/**
* 获取用户角色
* @param userId
* @param enabled
* @return
*/
List<SysRole> selectRolesByUserIdAndRoleEnabled(
@Param("userId")Long userId, @Param("enabled")Integer enabled);
}
UserMapper.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="tk.mybatis.simple.mapper.UserMapper">
<resultMap type="tk.mybatis.simple.model.SysUser" id="sysUserMap">
<id property="id" column="id" />
<result property="userName" column="user_name" />
<result property="userPassword" column="user_password" />
<result property="userInfo" column="user_info" />
<result property="headImg" column="head_img" />
<result property="createTime" column="create_time" jdbcType="TIMESTAMP" />
</resultMap>
<select id="selectById" resultMap="sysUserMap">
select * from sys_user where id = #{id}
</select>
<select id="selectAll" resultMap="sysUserMap">
select * from sys_user
</select>
<insert id="insert" useGeneratedKeys="true" keyProperty="id">
insert into sys_user(user_name, user_password, user_info, head_img, create_time)
values(#{userName}, #{userPassword}, #{userInfo}, #{headImg, jdbcType=BLOB}, #{createTime, jdbcType=TIMESTAMP})
</insert>
<insert id="insert2">
insert into sys_user(user_name, user_password, user_info, head_img, create_time)
values(#{userName}, #{userPassword}, #{userInfo}, #{headImg, jdbcType=BLOB}, #{createTime, jdbcType=TIMESTAMP})
<selectKey keyColumn="id" keyProperty="id" resultType="long" order="AFTER">
select last_insert_id()
</selectKey>
</insert>
<insert id="insert3">
<selectKey keyColumn="id" keyProperty="id" resultType="long" order="BEFORE">
select seq_id.nextval from dual
</selectKey>
insert into sys_user(id, user_name, user_password, user_info, head_img, create_time)
values(#{id}, #{userName}, #{userPassword}, #{userInfo}, #{headImg, jdbcType=BLOB}, #{createTime, jdbcType=TIMESTAMP})
</insert>
<update id="updateById">
update sys_user
set user_name = #{userName},
user_password = #{userPassword},
user_info = #{userInfo},
head_img = #{headImg},
create_time = #{createTime}
where id = #{id}
</update>
<delete id="deleteById">
delete from sys_user where id = #{id}
</delete>
<select id="selectRolesByUserIdAndRoleEnabled" resultType="SysRole">
select r.id, r.role_name, r.enabled, r.create_by, r.create_time
from sys_user u
inner join sys_user_role ur on u.id = ur.user_id
inner join sys_role r on ur.role_id = r.id
where u.id = #{userId} and r.enabled = #{enabled}
</select>
</mapper>
UserMapperTest.Java测试代码
package tk.mybatis.simple.mapper;
import java.util.Date;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.junit.Assert;
import org.junit.Test;
import tk.mybatis.simple.model.SysUser;
public class UserMapperTest extends BaseMapperTest{
@Test
public void testSelectById(){
SqlSession sqlSession = this.getSqlSession();
try{
//SysUser sysUser = sqlSession.selectOne("tk.mybatis.simple.mapper.UserMapper.selectById", "1");
//获取UserMapper接口
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
SysUser sysUser = userMapper.selectById(1L);
Assert.assertNotNull(sysUser);
System.out.printf("%-4d%4s %4s\n", sysUser.getId(), sysUser.getUserName(), sysUser.getUserPassword());
}finally{
sqlSession.close();
}
}
@Test
public void testSelectAll(){
SqlSession sqlSession = this.getSqlSession();
try{
//List<SysUser> userList = sqlSession.selectList("tk.mybatis.simple.mapper.UserMapper.selectAll");
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
List<SysUser> userList = userMapper.selectAll();
Assert.assertNotNull(userList);
Assert.assertTrue(userList.size()>0);
printUserList(userList);
}finally{
sqlSession.close();
}
}
@Test
public void testInsert(){
SqlSession sqlSession = this.getSqlSession();
try{
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
SysUser user = new SysUser();
//user.setUserName("test1");
user.setUserPassword("123456");
user.setHeadImg(new byte[]{1,2,3});
user.setCreateTime(new Date());
int result = userMapper.insert(user);
Assert.assertEquals(1, result);
//Assert.assertNull(user.getId());
}finally{
//默认的sqlSessionFactory.openSession()是不自动提交的
sqlSession.rollback();
sqlSession.close();
}
}
private void printUserList(List<SysUser> userList) {
for(SysUser sysUser : userList)
System.out.printf("%-4d%4s %4s\n", sysUser.getId(), sysUser.getUserName(), sysUser.getUserPassword());
}
}
以上内容纯属个人学习笔记,如果想详细学习mybatis,可前往http://mybatis.tk/下载相关工具及项目代码