程序员需要开发dao接口和dao的实现类
编写User.xml映射文件:
<select id="findUserById" parameterType="int" resultType="com.mo.pojo.User">
SELECT * FROM USER WHERE id = #{id}
</select>
<insert id="insertUser" parameterType="com.mo.pojo.User" >
INSERT INTO USER (id,username,sex) VALUES (#{id},#{username},#{sex})
</insert>
Dao接口和实现类:
public interface UserDao {
User findUserById(int id) throws IOException ;
void insertUser(User user);
}
public class UserDaoImpl implements UserDao {
//注入SqlSessionFactory成为成员变量,是使用了单例模式的
private SqlSessionFactory sqlSessionFactory;
//创建一个新的UserDaoImpl需要一个SqlSessionFactory实现
public UserDaoImpl(SqlSessionFactory sqlSessionFactory){
this.sqlSessionFactory = sqlSessionFactory;
}
public User findUserById(int id) throws IOException {
//通过sqlSessionFactory会话工厂获取sqlSession来获取数据库相关的操作
SqlSession sqlSession = sqlSessionFactory.openSession();
User user = sqlSession.selectOne("test.findUserById", id);
return user;
}
public void insertUser(User user) {
//获取sqlSession,进行相关的数据库操作
SqlSession sqlSession = sqlSessionFactory.openSession();
sqlSession.insert("test.insertUser", user);
}
}
单元测试
public class TestDao {
//这里需要创建sqlSessionFactory工厂,因为创建新的UserDaoImpl需要注入会话工厂
private SqlSessionFactory sqlSessionFactory;
@Before
public void setUp() throws IOException{
String resource = "SqlMapConfig.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
}
@Test
public void test() throws IOException{
//这里需要注入一个sqlSessionFactory才能创建对象
UserDao userdao = new UserDaoImpl(sqlSessionFactory);
User user = userdao.findUserById(4);
System.out.println(user);
}
@Test
public void test1(){
UserDao userdao = new UserDaoImpl(sqlSessionFactory);
User user = new User();
user.setId(9);
user.setUsername("bushi");
user.setSex("男");
userdao.insertUser(user);
}
}