作者:Orson
IDEA 逆向 MyBatis 工程时,不像支持 Hibernate 那样有自带插件,需要集成第三方的 MyBatis Generator。
MyBatis Generator的详细介绍 http://mybatis./generator/index.html
本篇博客图解 MyBatis Generator 的使用过程,并结合实战说明逆向工程的使用方式。
1.搭建 MyBatis Generator 插件环境
a. 添加插件依赖 pom.xml plugin> groupId>org.mybatis.generatorgroupId> artifactId>mybatis-generator-maven-pluginartifactId> version>1.3.2version> configuration> configurationFile>src/main/resources/generatorConfig.xmlconfigurationFile> verbose>trueverbose> overwrite>trueoverwrite> configuration> executions> execution> id>Generate MyBatis Artifactsid> execution> executions> dependencies> dependency> groupId>org.mybatis.generatorgroupId> artifactId>mybatis-generator-coreartifactId> version>1.3.2version> dependency> dependencies> plugin>
b.配置文件 generatorConfig.xml <>xml version='1.0' encoding='UTF-8'?> PUBLIC '-////DTD MyBatis Generator Configuration 1.0//EN' 'http:///dtd/mybatis-generator-config_1_0.dtd'> generatorConfiguration> properties resource='jdbc.properties'/> classPathEntry location='${jdbc_driverLocation}'/>
context id='default' targetRuntime='MyBatis3'> commentGenerator> property name='suppressDate' value='true'/> property name='suppressAllComments' value='true'/> commentGenerator>
jdbcConnection driverClass='${jdbc_driverClass}' connectionURL='${jdbc_url}' userId='${jdbc_user}' password='${jdbc_pwd}'> jdbcConnection>
javaTypeResolver>property name='forceBigDecimals' value='false'/>javaTypeResolver>
javaModelGenerator targetPackage='com.rambo.sdm.dao.pojo' targetProject='src/main/java'> property name='enableSubPackages' value='false'/> property name='constructorBased' value='true'/> property name='trimStrings' value='true'/> property name='immutable' value='false'/> javaModelGenerator>
sqlMapGenerator targetPackage='com.rambo.sdm.dao.mapper' targetProject='src/main/java'> property name='enableSubPackages' value='false'/> sqlMapGenerator>
javaClientGenerator targetPackage='com.rambo.sdm.dao.inter' targetProject='src/main/java' type='XMLMAPPER'> property name='enableSubPackages' value='true'/> javaClientGenerator>
table tableName='user' domainObjectName='UserPO'> generatedKey column='uuid' sqlStatement='SELECT REPLACE(UUID(),'-','') UUID FROM DUAL'/> table> context> generatorConfiguration>
c.数据库配置文件 jdbc.properties jdbc_driverLocation=D:\\Program Files\\Repository\\mysql\\mysql-connector-java\\5.1.38\\mysql-connector-java-5.1.38.jar jdbc_driverClass=com.mysql.jdbc.Driver jdbc_url=jdbc:mysql://localhost:3306/db_test?useUnicode=true&characterEncoding=utf-8 jdbc_user=root jdbc_pwd=123456 validationQuery = select 1
d. 配置插件启动项
2.项目实战
User类就是普通的实体类,定义了数据库对应的字段,以及set/get方法。
Mybatis 引入了 Example 类,用来封装数据库查询条件。
a.比如在一个项目 我们要删除某个小组下某个用户的信息
public int deleteUserApplyInfo(long user_id,long team_id){ StudyTeamUserApplyInfoExample ue = new StudyTeamUserApplyInfoExample(); ue.createCriteria().andUserIdEqualTo(new BigDecimal(user_id)).andTeamIdEqualTo(new BigDecimal(team_id)); return studyTeamUserApplyInfoDAO.deleteByExample(ue); }
2.根据小组ID(非主键 更新小组信息) public int updateStudyTeamInfo(StudyTeamInfo st){ StudyTeamInfoExample ste = new StudyTeamInfoExample(); ste.createCriteria().andTeamIdEqualTo(st.getTeamId()); return studyTeamInfoDAO.updateByExampleSelective(st,ste); }
3.(1)模糊查询并且排序 public List getStudyTeamInfoByName(String team_name){ StudyTeamInfoExample se = new StudyTeamInfoExample(); se.createCriteria().andTeamNameLike('%'+team_name+'%').andEnableEqualTo((short)1); se.setOrderByClause('team_score desc'); List ls = studyTeamInfoDAO.selectByExample(se); if(ls!=null&&ls.size()>0){ return ls; } return null; }
(2)大于等于某个分数 并且小于某个分数的查询 public StudyTeamLevel getStudyTeamLevel(long score){ StudyTeamLevelExample le = new StudyTeamLevelExample(); le.createCriteria().andNeedScoreLessThanOrEqualTo(score).andUpScoreGreaterThan(score); List ls = studyTeamLevelDAO.selectByExample(le); if(ls!=null&&ls.size()>0){ return ls.get(0); }
|