原文連接:MyBatis插件使用--通用Mapperjava
通用Mapper能夠簡化CRUD操做,沒必要單獨爲每一Mapper指定CRUD接口
所需jar包mapper-3.3.9.jar
,persistence-api-1.0.jar
git
在spring配置文件中配置:github
<!-- 配置通用Mapper --> <bean class="tk.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.isea533.mybatis.mapper"/> <property name="properties"> <value> mappers=tk.mybatis.mapper.common.Mapper </value> </property> </bean>
只要extends tk.mybatis.mapper.common.Mapper<T>就擁有了通用Mapper中全部方法
spring
public interface Test1Mapper extends Mapper<Test1>{ }
import java.io.IOException; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import org.apache.ibatis.session.SqlSessionFactory; import org.junit.Test; import org.mybatis.generator.api.MyBatisGenerator; import org.mybatis.generator.config.Configuration; import org.mybatis.generator.config.xml.ConfigurationParser; import org.mybatis.generator.exception.InvalidConfigurationException; import org.mybatis.generator.exception.XMLParserException; import org.mybatis.generator.internal.DefaultShellCallback; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.core.io.ClassPathResource; import tk.mybatis.mapper.entity.Condition; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.yupont.gs.dao.mapper.Test1Mapper; import com.yupont.gs.model.Test1; /** * 通用Mapper經常使用方法: * * 等號的CRUD: * List<T> select(T record); 根據實體中的屬性值進行查詢,查詢條件使用等號 * T selectByPrimaryKey(Object key); 根據主鍵字段進行查詢,方法參數必須包含完整的主鍵屬性,查詢條件使用等號 * List<T> selectAll(); 查詢所有結果,select(null)方法能達到一樣的效果 * T selectOne(T record); 根據實體中的屬性進行查詢,只能有一個返回值,有多個結果是拋出異常,查詢條件使用等號 * int selectCount(T record); 根據實體中的屬性查詢總數,查詢條件使用等號 * int insert(T record); 保存一個實體,null的屬性也會保存,不會使用數據庫默認值 * int insertSelective(T record); 保存一個實體,null的屬性不會保存,會使用數據庫默認值 * int updateByPrimaryKey(T record); 根據主鍵更新實體所有字段,null值會被更新 * int updateByPrimaryKeySelective(T record); 根據主鍵更新屬性不爲null的值 * int delete(T record); 根據實體屬性做爲條件進行刪除,查詢條件使用等號 * int deleteByPrimaryKey(Object key); 根據主鍵字段進行刪除,方法參數必須包含完整的主鍵屬性 * * 條件的CRUD: * List<T> selectByCondition(Object condition); 根據Condition條件進行查詢 * int selectCountByCondition(Object condition); 根據Condition條件進行查詢總數 * int updateByCondition(@Param("record") T record, @Param("example") Object condition); 根據Condition條件更新實體record包含的所有屬性,null值會被更新 * int updateByConditionSelective(@Param("record") T record, @Param("example") Object condition); 根據Condition條件更新實體record包含的不是null的屬性值 * int deleteByCondition(Object condition); 根據Condition條件刪除數據 * * * */ public class CommonMapperTest { public static Test1Mapper mapper = ((SqlSessionFactory) new ClassPathXmlApplicationContext("spring-db.xml").getBean("sqlSessionFactory")).openSession().getMapper(Test1Mapper.class); @Test public void selectAll(){ PageHelper.startPage(2, 5); //第一個參數offset是當前頁數,第二個參數limit是每頁顯示多少數據 //Condition c = new Condition(Test1.class); //c.createCriteria().andCondition("name in ('zhaoliu','zhangsan')"); List<Test1> list = mapper.selectAll(); PageInfo<Test1> page = new PageInfo<Test1>(list); System.out.println(page.getTotal()); for (Test1 test1 : list) { System.out.println(test1.getName()); } } @Test public void insertSelective(){ Test1 test = new Test1(); test.setAge(33); test.setName("zhaoliu"); mapper.insertSelective(test); System.out.println(test.getId()); } @Test public void selectOne(){ Test1 test = new Test1(); test.setAge(22); Test1 t = mapper.selectOne(test); System.out.println(t.getName()); } @Test public void SelectByConditionMapper(){ Condition condition=new Condition(Test1.class); condition.createCriteria().andCondition("name like '%zhangsan%'"); condition.setOrderByClause("name desc"); List<Test1> list = mapper.selectByExample(condition); System.out.println(list.size()); } @Test public void generatorCode() throws IOException, XMLParserException, InvalidConfigurationException, SQLException, InterruptedException{ List<String> warnings = new ArrayList<String>(); boolean overwrite = true; ConfigurationParser cp = new ConfigurationParser(warnings); Configuration config = cp.parseConfiguration(new ClassPathResource("generatorConfig.xml").getInputStream()); DefaultShellCallback callback = new DefaultShellCallback(overwrite); MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings); myBatisGenerator.generate(null); } }