mybatis面向接口编程

mybtis的面向接口编程的作用就是将所有的数据库操作交由mapper的配置来完成,而不需要人工的在dao层写数据库操作的代码;

步骤:

一、编写javaBean对象

package com.hsk.mybatis.bean;

public class DeptBean {

	private String deptCode;
	private String deptName;
	private String cmpyCode;
	public String getDeptCode() {
		return deptCode;
	}
	public void setDeptCode(String deptCode) {
		this.deptCode = deptCode;
	}
	public String getDeptName() {
		return deptName;
	}
	public void setDeptName(String deptName) {
		this.deptName = deptName;
	}
	public String getCmpyCode() {
		return cmpyCode;
	}
	public void setCmpyCode(String cmpyCode) {
		this.cmpyCode = cmpyCode;
	}
	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return deptName+"["+deptCode+"]"+cmpyCode;
	}
}

二、编写dao层的部门接口方法

package com.hsk.mybatis.dao;

import java.util.List;

import com.hsk.mybatis.bean.DeptBean;

public interface DeptDao {

	//添加部门
	public void addDept(DeptBean deptBean);
	//获取部门
	public List<DeptBean> getDeptList();
	//根据部门编码获取指定部门
	public DeptBean getDeptByCode(String deptCode);
	//根据部门名称模糊查询部门信息
	public List<DeptBean> getDeptByName(String deptName);
	//更新部门信息
	public void updateDept(DeptBean deptBean);
}

三、配置deptMapper.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">
<!-- namespace命名空间对sql分类化管理,隔离不同表的sql语句 -->
<mapper namespace="com.hsk.mybatis.dao.DeptDao">

	<!-- 配置结果集字段和javabean字段对应关系 -->
	<resultMap id="deptMap" type="com.hsk.mybatis.bean.DeptBean">
        <id property="deptCode" column="DEPT_CODE" />
        <result property="deptName" column="DEPT_NAME"/>
        <result property="cmpyCode" column="CMPY_CODE"/>
    </resultMap>
	<!--
	 统一命名空间下id唯一 
	parameterType输入参数类型可以是java简单的数据类型也可以是java对象,这里指定string
	#{}表示占位符
	#{userCode}其中userCode为输入参数,参数名称为userCode
	resultMap指定sql输出结果所映射的java对象,注意resultMap要配置java对象属性与数据库字段对应关系
	resultType指定sql输出结果单条记录所映射的java对象,注意resultType配置的java类的属性需要与数据库字段名称一致
	-->
   <select id="getDeptByCode" parameterType="String" resultMap="deptMap">
       SELECT DEPT_CODE,DEPT_NAME,CMPY_CODE FROM SY_ORG_DEPT WHERE DEPT_CODE=#{deptCode}
   </select>
   
   <!-- 
   	根据用户名称查找对应的用户集合
   	${}表示拼接sql串,将传参不加修饰的拼接在sql中,value表示简单类型的传参值
   	${}会引起sql注入,如传入 ' OR 1=1 OR '
   	#{}占位符,{}中可以写value或者其他值。根据传参类型修饰传参后拼接在sql中,如传入整型结果就是a=1,字符串就是a='1'
   	${value}:接收输入的传参内容,如果是简单的传参类型则${}中只能用value
   	#{},${}通过OGNL读取对象的属性值,通过  属性.属性.属性.....方式获取对象属性值
   	一般不推荐使用${}方式获取属性值
      注意:#{}会将传参拼接程指定的sql语法如a=#{name}会被转换成a='zhangda'
      ${}会将传参原封不动的塞进sql语句如a=${name}会被转换成a=zhangda
    -->
   <select id="getDeptByName" parameterType="String" resultType="com.hsk.mybatis.bean.DeptBean">
   		SELECT DEPT_NAME,DEPT_CODE,CMPY_CODE FROM SY_ORG_DEPT WHERE DEPT_NAME LIKE '%${_parameter}%'
   </select>
<!--注意OGNL表达式获取简单类型和字符串值时传参名必须为_parameter否则会报错-->
   
   <!-- 
   parameterType为pojo(java对象)类型参数
   #{}占位符中指定pojo属性,接收到pojo对象属性值后mybatis通过OGNL获取对象属性值
    -->
   <insert id="addDept" parameterType="com.hsk.mybatis.bean.DeptBean">
   	    insert into sy_org_dept (dept_code,dept_name,CMPY_CODE) values (#{deptCode},#{deptName},#{cmpyCode})
   </insert>
   
   <delete id="updateDept" parameterType="com.hsk.mybatis.bean.DeptBean">
   	   update sy_org_dept set dept_name=#{deptName} where dept_code=#{deptCode}
   </delete>
</mapper>

 四、mybatis核心配置文件引入deptMapper.xml

 

五、编写测试类

package com.hsk.mybatis.test;

import java.io.Reader;
import java.util.List;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

import com.hsk.mybatis.bean.DeptBean;
import com.hsk.mybatis.dao.DeptDao;

public class DeptDaoTest {

	@Test
	public void testDeptDao(){
		try {
			Reader reader = Resources.getResourceAsReader("config/mybatis.xml");
			SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);
			SqlSession session = factory.openSession();
			DeptDao deptDao = session.getMapper(DeptDao.class);
			System.out.println("deptdao-----"+deptDao);
			DeptBean deptBean = deptDao.getDeptByCode("24");
			System.out.println(deptBean.toString());
			List<DeptBean> dList = deptDao.getDeptByName("北京首创股份有限公司");
			System.out.println(dList.size());

			System.out.println("---add dept----");
			DeptBean dBean = new DeptBean();
			dBean.setDeptCode("000");
			dBean.setDeptName("测试部门");
			dBean.setCmpyCode("2");
			deptDao.addDept(dBean);
			dBean.setDeptName("33333");
			deptDao.updateDept(dBean);
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
	}
}

六、junit单元测试

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值