Mybatis基于xml的简单CRUD
* 接口 IUserDao
public interface IUserDao {
/**
* 查询所有的user
* @return
*/
List<User> findAll();
/**
* 保存用户
* @param user
*/
void save(User user);
/**
* 更新用户
* @param user
*/
void update(User user);
/**
* 删除用户
*/
void delUser(int id);
/**
* 根据id查询单个用户
*/
User findOne(int id);
/**
* 根据名字模糊查询用户
*/
List<User> findByName(String username);
/**
* 查询总记录数
*/
int findCount();
/**
* 根据queryVo查询用户
*/
List<User> findUserByVo(QueryVo vo);
}
* 接口对应的xml(包含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">
<!--namespace写的是dao的全限定类名-->
<mapper namespace="com.qin.dao.IUserDao">
<!--配置查询所有-->
<select id="findAll" resultType="com.qin.domain.User">select * from user</select>
<!--保存用户-->
<insert id="save" parameterType="com.qin.domain.User">
<!--获取保存后的id-->
<selectKey keyProperty="id" keyColumn="id" resultType="int" order="AFTER">
select LAST_INSERT_ID();
</selectKey>
insert into user(username,address,sex,birthday) values(#{username},#{address},#{sex},#{birthday});
</insert>
<!--更新用户-->
<update id="update" parameterType="com.qin.domain.User">
update user set username = #{username} where id = #{id};
</update>
<!-- 删除用户-->
<!--integer/int/java.lang.Integer都可以-->
<delete id="delUser" parameterType="Integer">
delete from user where id = #{id};
</delete>
<!-- 根据id查询用户 -->
<select id="findOne" parameterType="int" resultType="com.qin.domain.User">
select * from user where id = #{uid};
</select>
<!-- 根据名称模糊查询 -->
<select id="findByName" parameterType="String" resultType="com.qin.domain.User">
<!--select * from user where username like '%${value}%'-->
select * from user where username like #{name}
</select>
<!-- 获取用户的总记录条数 -->
<select id="findCount" resultType="Integer">
SELECT COUNT(*) FROM USER ;
</select>
<!-- 根据queryVo的条件查询用户 -->
<select id="findUserByVo" parameterType="com.qin.domain.QueryVo" resultType="com.qin.domain.User">
select * from user where username = #{user.username};
</select>
</mapper>
* 测试类
public class MybatisTest {
private InputStream is;
private SqlSession session;
private IUserDao userDao;
@Before
public void init() throws IOException {
is = Resources.getResourceAsStream("SqlMapConfig.xml");
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory sqlSessionFactory = builder.build(is);
session = sqlSessionFactory.openSession();
userDao = session.getMapper(IUserDao.class);
}
@After
public void destory() throws IOException {
//提交事务
session.commit();
//释放资源
session.close();
is.close();
}
//测试查询所有
@Test
public void findAllTest() throws IOException {
List<User> users = userDao.findAll();
for (User user : users) {
System.out.println(user);
}
}
/**
* 测试保存用户
*/
@Test
public void saveTest() throws IOException {
User user = new User();
user.setUsername("jack");
user.setAddress("china");
user.setBirthday(new Date());
user.setSex("男");
System.out.println("保存前:"+user);
userDao.save(user);
System.out.println("保存后:"+user);
}
/**
* 测试更新用户
*/
@Test
public void updateTest(){
User user = new User();
user.setId(51);
user.setUsername("tom");
userDao.update(user);
}
/**
* 测试删除用户
*/
@Test
public void delUserTest(){
userDao.delUser(52);
}
/**
* 测试根据id查询单个用户
*/
@Test
public void findOneTest(){
User user = userDao.findOne(48);
System.out.println(user);
}
/**
* 测试根据名字模糊查询用户list
*/
@Test
public void findByNameTest(){
//List<User> userList = userDao.findByName("王");使用${}
List<User> userList = userDao.findByName("%王%");//使用#{}
for (User user : userList) {
System.out.println(user);
}
}
/**
* 测试查询总的记录数
*
*/
@Test
public void findCountTest(){
int count = userDao.findCount();
System.out.println(count);
}
/**
* 测试根据queryVo查询用户
*/
@Test
public void queryVoTest(){
QueryVo vo = new QueryVo();
User user = new User();
user.setUsername("老王");
vo.setUser(user);
List<User> userByVo = userDao.findUserByVo(vo);
for (User user1 : userByVo) {
System.out.println(user1);
}
}
}