mybatis的增删该查
1.查找所有的用户
mybatis-config.xml配置文件用于连接数据库,打开和关闭session
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 3 "http://mybatis.org/dtd/mybatis-3-config.dtd"> 4 <configuration> 8 <environments default="yy"> 9 <environment id="yy"> 10 <transactionManager type="JDBC"></transactionManager> 11 <dataSource type="POOLED"> 12 <property name="driver" value="oracle.jdbc.driver.OracleDriver"/> 13 14 <property name="url" value="jdbc:oracle:thin:@172.16.17.158:1521:orcl"/> 15 <property name="username" value="scott"/> 16 <property name="password" value="tiger"/> 17 </dataSource> 18 </environment> 19 </environments> 20 <mappers> 21 <mapper resource="com/yh/mb/dao/EmpDao-mapper.xml"/> 22 </mappers> 23 </configuration>
EmpDao-mapper.xml实体类的映射文件,编写sql语句
<select id="empCout" resultType="int"> select count(1) from emp </select>
resultType是指sql语句的返回值类型,可以起别名
EmpDao.java,实现类
1 public int empCount() { 2 SqlSessionFactory sqlsf=null; 3 SqlSession sqlsession=null; 4 Reader reader=null;//配置文件字符输入流 5 int count=0; 6 try { 7 reader=Resources.getResourceAsReader("mybatis-config.xml"); 8 sqlsf=new SqlSessionFactoryBuilder().build(reader); 9 sqlsession=sqlsf.openSession(); 10 count=sqlsession.selectOne("com.yh.mb.dao.EmpDao.empCout"); 11 } catch (IOException e) { 12 // TODO Auto-generated catch block 13 e.printStackTrace(); 14 }finally{ 15 if(sqlsession!=null){ 16 sqlsession.close(); 17 } 18 19 } 20 return count; 21 }
2.通过id进行查找
映射文件
1 <select id="getEmpById" resultType="Emp" parameterType="int"> 2 select ename as empName from emp where empno=#{empNo} 3 </select>
resultType起了别名在配置文件中起别名
1 <typeAliases > 2 <typeAlias type="com.yh.mb.entity.Emp" alias="Emp"/> 3 </typeAliases>
dao层的方法
1 public Emp getEmpById(Integer no) { 2 SqlSession sqlsession=null; 3 Emp emp=null; 4 try { 5 sqlsession=MyBatisUtil.getSession(); 6 emp=sqlsession.selectOne("com.yh.mb.dao.EmpDao.getEmpById", no); 7 } catch (Exception e) { 8 // TODO Auto-generated catch block 9 e.printStackTrace(); 10 }finally{ 11 MyBatisUtil.closeSession(); 12 } 13 14 return emp; 15 }
Mytest.java测试单元
1 IEmpDao empDao=new EmpDao(); 2 @Test 3 public void getEmpById(){ 4 Emp e=empDao.getEmpById(7944); 5 System.out.println(e.getEmpName()); 6 }
2.多条件查询
用hashmap来放多个查询条件
1 <select id="getEmpByIdAndJob" resultType="Emp" parameterType="hashmap"> 2 select ename as empName from emp where empno=#{empNo}and job=#{j} 3 </select>
dao层的方法
public Emp getEmpByIdAndJob(Integer no,String job){ SqlSession sqlsession = null; Emp emp=null; try { sqlsession = MyBatisUtil.getSession(); HashMap map=new HashMap(); map.put("empNo",no); map.put("j",job); emp=sqlsession.selectOne("com.yh.mb.dao.EmpDao.getEmpByIdAndJob", map); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ MyBatisUtil.closeSession(); } return emp; }
测试单元
1 @Test 2 public void getEmpByIdAndJob(){ 3 Emp e=empDao.getEmpByIdAndJob(9000, "CLERK"); 4 5 System.out.println(e.getEmpName()); 6 }