新建一个Java Project,导包。
分别在src目录下新建com.sm.pojo, com.sm.mapper, com.sm.test的package,用以存放实体类,mapper,和测试类。
实体类选择用User,字段id和name。对应地,建立mysql的springmybatis的数据库,建立user_表格。
在mapper的package下面建立UserMapper的interface和User.xml。
代码分别如下:
UserMapper.java
package com.sm.mapper;
import java.util.List;
import com.sm.pojo.User;
public interface UserMapper {
public int add(User user);
public void delete(int id);
public User get(int id);
public int update(User user);
public List<User> list();
public int count();
}
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.sm.mapper.UserMapper">
<insert id="add" parameterType="User">
insert into user_ (name,usercode) values(#{name},#{usercode})
</insert>
<delete id="delete" parameterType="User">
delete from user_ where id = #{id}
</delete>
<select id="get" parameterType="_int" resultType="User">
select from user_ where id = #{id}
</select>
<select id="list" resultType="User">
select * from user_
</select>
<update id="update" parameterType="User">
update user_ set name = #{name},usercode = #{usercode} where id = #{id}
</update>
<select id="count" resultType="_int">
select count(*) from user_
</select>
</mapper>
值得注意的是, 在mybatis这一框架的搭建demo中,User.xml里,<mapper>内容为<mapper namespace="com.mybatis.pojo>。也就是在xml中写好CRUD,关联了pojo下面的实体类。
而在整合spring和mybatis时,<mapper namespace="com.mybatis.mapper.UserMapper">。这样测试时,就可以调用与xml中id同名的方法进行CRUD。并在applicationContext.xml中,写上<property name="typeAliasesPackage" value="com.sm.pojo"/> 。这样xml里面的参数类型User无需写全称。
编写测试类
package com.sm.test;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.sm.mapper.CategoryMapper;
import com.sm.mapper.UserMapper;
import com.sm.pojo.Category;
import com.sm.pojo.User;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class MybatisTest {
@Autowired
private UserMapper userMapper;
@Test
public void testAdd(){
User user = new User();
user.setName("User 2");
user.setUsercode("180926002");
userMapper.add(user);
}
@Test
public void testList(){
System.out.println(userMapper);
List<User> us = userMapper.list();
for(User u:us){
System.out.println(u.getName()+"\t"+u.getUsercode());
}
}
}
@Autowired是通过Spring的注解方式获取对象categoryMapper。同样也可以用@Resource。
@RunWith(SpringJUnit4ClassRunner.class)//让测试运行于spring测试环境
@ContextConfiguration(locations="classpath:xxx.xml")//指定 Spring 配置文件所在的位置
Result:
org.apache.ibatis.binding.MapperProxy@5f683daf
User1 180926001
User 2 180926002