Dao实现类用xml配置代理,Dao与xml放在同一包下,文件名、namespace、id要一一对应。
service接口与实现类为委托类,仅写业务代码,在main中用动态代理来处理事务等。
当需要在service中增加一个方法时,依次添加service接口-->service实现类-->Dao接口-->xml
//PetDao.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"> <mapper namespace="com.WebTest01.dao.PetDao"> <select id="getByName" parameterType="java.lang.String" resultType="com.WebTest01.domain.Pet"> select * from pet where name = #{name} </select> <select id="getAll" resultType="com.WebTest01.domain.Pet"> select * from pet </select> <insert id="insertPet"> insert into pet(name,age,owner) values(#{name},#{age},#{owner}) </insert> <update id="updatePet"> update pet set name = #{name}, owner = #{owner} where age = #{age} </update> <delete id="deletePet"> delete from pet where age = #{age} </delete> </mapper>
//PetDao.java package com.WebTest01.dao; import com.WebTest01.domain.Pet; import java.util.List; public interface PetDao { public Pet getByName(String name); public List<Pet> getAll(); public void insertPet(Pet pet); public void updatePet(Pet pet); public void deletePet(Pet pet); }
//PetService.java package com.WebTest01.service; import com.WebTest01.domain.Pet; import java.util.List; public interface PetService { public Pet getByName(String name); public List<Pet> getAll(); public void insertPet(Pet pet); public void updatePet(Pet pet); public void deletePet(Pet pet); }
//PetServiceImpl.java package com.WebTest01.service.Impl; import com.WebTest01.dao.PetDao; import com.WebTest01.domain.Pet; import com.WebTest01.service.PetService; import com.WebTest01.util.SqlSessionUtil; import java.util.List; public class PetServiceImpl implements PetService { //mybatis动态代理创建PetDao实现类 private PetDao petDao = SqlSessionUtil.getSession().getMapper(PetDao.class); @Override public Pet getByName(String name) { return petDao.getByName(name); } @Override public List<Pet> getAll() { return petDao.getAll(); } @Override public void insertPet(Pet pet) { petDao.insertPet(pet); } @Override public void updatePet(Pet pet) { petDao.updatePet(pet); } @Override public void deletePet(Pet pet) { petDao.deletePet(pet); } }
//Test package com.WebTest01.test; import com.WebTest01.domain.Pet; import com.WebTest01.service.Impl.PetServiceImpl; import com.WebTest01.service.PetService; import com.WebTest01.util.ServiceFactory; public class Test01 { public static void main(String[] args) { PetService petService = (PetService) ServiceFactory.getService(new PetServiceImpl()); Pet pet = new Pet("ttt", "S", 9999); petService.deletePet(pet); } }