1. dao类
package cn
.lhh
.dao
;
import cn
.lhh
.domain
.User
;
import java
.util
.List
;
public interface IUserDao {
List
<User> findAll();
void updateUser(User user
);
void deleteUser(Integer userId
);
List
<User> findByName(String name
);
Integer
totalNum();
}
2.dao实现类
package cn
.lhh
.dao
.impl
;
import cn
.lhh
.dao
.IUserDao
;
import cn
.lhh
.domain
.User
;
import org
.apache
.ibatis
.session
.SqlSession
;
import org
.apache
.ibatis
.session
.SqlSessionFactory
;
import java
.util
.List
;
public class IUserDaoImpl implements IUserDao {
private SqlSessionFactory factory
;
public IUserDaoImpl(SqlSessionFactory factory
) {
this.factory
= factory
;
}
@Override
public List
<User> findAll() {
SqlSession sqlSession
= factory
.openSession();
List
<User> users
= sqlSession
.selectList("cn.lhh.dao.IUserDao.findAll");
sqlSession
.close();
return users
;
}
@Override
public void updateUser(User user
) {
SqlSession sqlSession
= factory
.openSession();
sqlSession
.update("cn.lhh.dao.IUserDao.updateUser",user
);
sqlSession
.commit();
sqlSession
.close();
}
@Override
public void deleteUser(Integer userId
) {
SqlSession sqlSession
= factory
.openSession();
sqlSession
.delete("cn.lhh.dao.IUserDao.deleteUser",userId
);
sqlSession
.commit();
sqlSession
.close();
}
@Override
public List
<User> findByName(String name
) {
SqlSession sqlSession
= factory
.openSession();
List
<User> users
= sqlSession
.selectList("cn.lhh.dao.IUserDao.findByName", name
);
return users
;
}
@Override
public Integer
totalNum() {
SqlSession sqlSession
= factory
.openSession();
int count
= sqlSession
.selectOne("cn.lhh.dao.IUserDao.totalNum");
return count
;
}
}
3. IUserMapper.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
="cn.lhh.dao.IUserDao">
<!--查询所有用户信息
-->
<select id
="findAll" resultType
="cn.lhh.domain.User">
select
* from user
;
</select
>
<!--跟新用户信息
-->
<update id
="updateUser" parameterType
="cn.lhh.domain.User">
update user set username
=#
{username
},birthday
=#
{birthday
},gender
=#
{gender
} where id
=#
{id
}
</update
>
<delete id
="deleteUser" parameterType
="integer">
delete from user where id
=#
{userId
}
</delete
>
<select id
="findByName" parameterType
="string" resultType
="cn.lhh.domain.User">
select
* from user where username like #
{name
}
</select
>
<select id
="totalNum" resultType
="integer">
select
count(id
) from user
;
</select
>
</mapper
>
4. 测试
package cn
.lhh
.test
;
import cn
.lhh
.dao
.IUserDao
;
import cn
.lhh
.dao
.impl
.IUserDaoImpl
;
import cn
.lhh
.domain
.User
;
import org
.apache
.ibatis
.io
.Resources
;
import org
.apache
.ibatis
.session
.SqlSessionFactory
;
import org
.apache
.ibatis
.session
.SqlSessionFactoryBuilder
;
import org
.junit
.After
;
import org
.junit
.Before
;
import org
.junit
.Test
;
import java
.io
.InputStream
;
import java
.util
.Date
;
import java
.util
.List
;
public class MybatisTest {
private InputStream is
;
private IUserDao userDao
;
@Before
public void init() throws Exception
{
is
= Resources
.getResourceAsStream("SqlMapConfig.xml");
SqlSessionFactory factory
= new SqlSessionFactoryBuilder().build(is
);
userDao
= new IUserDaoImpl(factory
);
}
@After
public void destroy() throws Exception
{
is
.close();
}
@Test
public void testFindAll() throws Exception
{
List
<User> users
= userDao
.findAll();
for (User user
: users
) {
System
.out
.println(user
);
}
}
@Test
public void testUpdateUser() {
User user
= new User();
user
.setId(3);
user
.setUsername("安抚哈");
user
.setGender("男");
user
.setBirthday(new Date());
userDao
.updateUser(user
);
}
@Test
public void testDeleteUser() {
userDao
.deleteUser(9);
}
@Test
public void testFindByName() {
List
<User> users
= userDao
.findByName("%王%");
for (User user
: users
) {
System
.out
.println(user
);
}
}
@Test
public void testTotalNum() {
Integer totalNum
= userDao
.totalNum();
System
.out
.println("总用户数:" + totalNum
);
}
}
注意:
当用dao的实现类查询总记录数时,用的时selectOne();