1:查詢

報錯信息1

1 org.apache.ibatis.exceptions.PersistenceException: 
2 ### Error querying database.  Cause: org.apache.ibatis.executor.ExecutorException: A query was run and no Result Maps were found for the Mapped Statement 'com.itheima.pojp.Employee.EmselectOne'.  It's likely that neither a Result Type nor a Result Map was specified.
3 ### The error may exist in mapper/EmployeeMapper.xml
4 ### The error may involve com.itheima.pojp.Employee.EmselectOne
5 ### The error occurred while handling results
6 ### SQL: select * from employee where id = 1
7 ### Cause: org.apache.ibatis.executor.ExecutorException: A query was run and no Result Maps were found for the Mapped Statemen

原因:書寫select標簽時沒有指定 resultType="com.itheima.pojp.Employee" 該屬性

解決方法:在<select標簽>里添加resultType屬性即可,因為返回的是Employee類型的數據。

 1 <select id="EmselectOne" parameterType="int">

2 select * from employee where id = ${id}

3 </select> 

報錯信息2

1 ### Error building SqlSession.
2 ### Cause: org.apache.ibatis.builder.BuilderException: Error creating document instance.  Cause: org.xml.sax.SAXParseException; lineNumber: 27; columnNumber: 17; 元素類型為 "configuration" 的內容必須匹配 "(properties?,settings?,typeAliases?,typeHandlers?,objectFactory?,objectWrapperFactory?,reflectorFactory?,plugins?,environments?,databaseIdProvider?,mappers?)"。

原因在mybatis的核心配置文件里寫了兩個mapper標簽 導致報錯

1 <mappers>
2         <mapper resource="mapper/UserMapper.xml"/>
3     </mappers>
4 
5     <mappers>
6         <mapper resource="mapper/EmployeeMapper.xml"></mapper>
7     </mappers>

解決方法:1:注釋掉一個mappers 2:再重新寫一個核心配置文件。只能存在一個mappers標簽。

當執行update,insert, delete操作時需要插入sqlSession.commit(); 這行代碼否則不會執行成功,執行完畢之后記得關閉連接

1 @Test //查詢一條
2     public void testEmSelectOne() throws IOException {
3         String str = "mybatis-config.xml";
4         Reader reader = Resources.getResourceAsReader(str);
5         SqlSessionFactory build = new SqlSessionFactoryBuilder().build(reader);
6         SqlSession sqlSession = build.openSession();
7         Employee em = sqlSession.selectOne("EmselectOne", 1);
8         System.out.println(em);
9     }

映射文件配置:
<select id="EmselectAll" resultType="com.itheima.pojp.Employee">
select * from employee
</select>

 

2:插入

 1 @Test //插入一條
 2     public void testInsertOne() throws IOException {
 3         String str = "mybatis-config.xml";
 4         Reader reader = Resources.getResourceAsReader(str);
 5         SqlSessionFactory build = new SqlSessionFactoryBuilder().build(reader);
 6         SqlSession sqlSession = build.openSession();
 7         Employee em = new Employee(4, "hahaha", 15, "沖裁");
 8         int eminsertOne = sqlSession.insert("EminsertOne", em);
 9         sqlSession.commit();  //插入數據需要提交否則插入不成功
10         sqlSession.close();
11         System.out.println(eminsertOne);
12     }

映射文件配置
<insert id="EminsertOne" parameterType="com.itheima.pojp.Employee">
insert into employee(id, name, age, position) values (#{id}, #{name}, #{age}, #{position})
</insert>

3:修改

 1 public void testUpdateOne() throws IOException {
 2         String str = "mybatis-config.xml";
 3         Reader reader = Resources.getResourceAsReader(str);
 4         SqlSessionFactory build = new SqlSessionFactoryBuilder().build(reader);
 5         SqlSession sqlSession = build.openSession();
 6         Employee employee = new Employee();
 7         employee.setName("熊大");
 8         employee.setId(7);
 9         int emupdateOne = sqlSession.update("EmupdateOne", employee);
10         sqlSession.commit();
11         sqlSession.close();
12         System.out.println(emupdateOne);
13     }
映射文件配置:
<update id="EmupdateOne" parameterType="com.itheima.pojp.Employee">
update employee set name = #{name} where id = #{id}
</update>


4:刪除

 1 @Test //刪除一條
 2     public void testDeleteOne() throws IOException {
 3         String str = "mybatis-config.xml";
 4         Reader reader = Resources.getResourceAsReader(str);
 5         SqlSessionFactory build = new SqlSessionFactoryBuilder().build(reader);
 6         SqlSession sqlSession = build.openSession();
 7         int emdeleteOne = sqlSession.delete("EmdeleteOne", 5);
 8         System.out.println(emdeleteOne);
 9         sqlSession.commit();
10         sqlSession.close();
11     }

映射文件配置:
<delete id="EmdeleteOne" parameterType="int">
delete from employee where id = #{id}
</delete>