实训-mybatis-经验总结2
今天上课一点小收益,今天和昨天的mybatis最大改变就是,昨天写完dao接口 还要继续写dao的实现类。而今天 只要有写dao接口即可,让mybatis帮我们自动制造出dao的实现类
另外补充一点小知识
<?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">
<mapper namespace="com.icss.dao.CustomerDao">
<!-- 这个resultType 决定了 你执行session.selectOne("id:XX",2) 的返回值 -->
<!-- 注意 下 面的 resultType 正常来说肯定要写带完整包名的,com.icss.entity.Customer -->
<!-- 能这样写的原因 是因为在总XML文件中设置了一样东西 -->
<select id="getCustomerById" parameterType="int" resultType="Customer">
select * from customer where id=#{id}
</select>
另外,假如想要在总XML 通过配置文件来 设 连接数据库的信息 可以这样
resource 后面的地址 是相对路径 ,因为jdbc.properties和mybatis-config.xml都属于同级目录,所以我就直接写jdbc.properties
今天由于在实验室电脑和自己宿舍电脑 转来转去的,遇到个问题
就是实验室里是有tomcat的servlet-api.jar 和jsp.jar包,而将整个项目拷会自己电脑时,就会没有依赖。如何解决呢,很简单
**右键项目属性--java -build Path **
下面是 ,今天和昨天,mabatis最大的不同,今天更为方便
package com.icss.dao;
import java.util.Map;
import com.icss.entity.Customer;
/**
*
* @author czy
*
*
*/
public interface CustomerDao {
/**
*
* @param id
* @return
* 根据id查找一个用户
*/
public Customer getCustomerById(int id);
/**
*
* @param phone
* @return
* 根据电话号码找一个用户
*/
public Customer getCustomerByPhone(String phone);
/**
*
* @param map
* @return
*
* 根据 多个条件进行查找: 用户名和密码
* 因为那边<select id="getCustomerByPhonePwd" parameterType="map" resultType="Customer"> 所以形参类型也要设为Map
*/
public Customer getCustomerByPhonePwd(Map map);
/**
*
* @param cus
* @return
* 插入一个客户
*/
public int insertCustomer(Customer cus);
/***
*
* @param cus
* @return
* 修改一个用户信息
*/
public int updateCustomer(Customer cus);
/**
*
* @param id
* @return
* 根据id删除一个用户
*/
public int deleteById(int id);
}
@Test
public void testGetCustomerById() {
//
SqlSession sqlsession=SQLSessionUtil.getSqlSession();
/**
* 以前写完dao层接口,还要在daoImp类 里 实现接口的每一个方法,每个实现方法给他
* sqlsession=SQLSessionUtil.getSqlSession();
* sqlsession.selectOne("ID-XX",2);
*
* 而现在的话,让mybatis框架自动帮我们生成dao接口的实现类。
* 我们只需先写一个dao接口 ,方法名字和XML 的SQL各标签id 同样
* 再通过getMapper(Class) 来帮我们自动生成此接口的实现类
* 接口名字 dao= sqlsession.getMapper(接口名字.class);
* 这样 sqlsession.getMapper(CustomerDao.class) 就会给我们返回一个dao接口的实现类
*/
/**
* 省去了再dao实现类 方法里写那些
* sqlsession=SQLSessionUtil.getSqlSession();
* sqlsession.selectOne("ID-XX",2);
* sqlsession.selectList("ID-XX2",map);
* sqlsession.Update("ID-XX3",user);
* 下面这句话 就是 帮我们把dao实现类弄好了
*/
CustomerDao dao= sqlsession.getMapper(CustomerDao.class);
Customer cus= dao.getCustomerById(1);
System.out.println(cus);
}