程序员需要开发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); } }