Mybatis generatorConfig.xml生成文件内容解析

使用mybatis generator生成XX.java,XXExample.java,XXmapper.java,XXmapper.xml四个数据库表映射文件

一、Example实例解析

mybatis的逆向工程中会生成实例及实例对应的XXExample.java,XXExample.java包含了对象的常用查询方法

XXExample有三个内部类,GeneratedCriteria,Criteria,Criterion

创建内部类Criteria用于查询,代码示例如下看表达:

XXExample example =newXXExample();//新建XX对象的example对象进行查询,XXExample继承XX

XXExample.Criteria c = example.Criteria();//new一个当前example的内部类

Criteriac.andXXIsNull();//设置查询条件,某值为空

c.andXXIsNotNull();//设置查询条件,某值不空

//使用mapper进行查询

List data =newXXMapper.selectByExample(example);


二、mapper接口中的方法解析

mapper.java的函数及方法,按命名的字面意思理解用途。

countByExample,带example的一般都是使用example查询条目数。

selectByPrimaryKey使用id查询结果集  mapper中的方法和xml中的sql语句是对应的,

如果在mapper中传入example对象,xml中会解析example的值,取值拼写sql语句进行查询

传入String类型的key,id等,xml直接取值拼写sql进行查询 


三、XML文件解析

举例一个xml文件中的一条语句

语句的id与mapper.java中的方法名对应,

parameterType是传入参数的类型,resultType是返回结果的类型,传参和返回有很多种情况,另开文章讲

这样对照起来的话,我们可以自主在mapper.java和mapper.xml中增加或删除相应的查询语句,以供调用

比如增加一条新增版本批量复制语句“copyBatchByVersion”

mapper.java中增加方法

int copyBatchByVersion(String old_version,String new_version) thorws SQLException;

/*根据旧版本号old_version查找记录

复制记录

同时将其中的old_version替换为new_version

返回值为复制成功的条数

*/

mapper.xml中增加语句

     insert into t_xx

    (XX_id,xx_value,xx_version)

    (select XX_id,xx_value,#{1})

    from t_xx where xx_version = #{0})

 

其中#{0},#{1}代表输入的第1,2个参数

四、应用举例

1.查询

① selectByPrimaryKey()

User user = XxxMapper.selectByPrimaryKey(100);//相当于select * from user where id = 100

② selectByExample() 和 selectByExampleWithBLOGs()

UserExample example =new UserExample();

Criteria criteria = example.createCriteria();

criteria.andUsernameEqualTo("wyw");

criteria.andUsernameIsNull();

example.setOrderByClause("username asc,email desc");

Listlist = XxxMapper.selectByExample(example);

//相当于:select * from user where username = 'wyw' and  username is null order by username asc,email desc

注:在iBator逆向工程生成的文件XxxExample.java中包含一个static的内部类Criteria,Criteria中的方法是定义SQL 语句where后的查询条件。

2.插入数据

①insert()

User user =new User();

user.setId("dsfgsdfgdsfgds");

user.setUsername("admin");

user.setPassword("admin")

user.setEmail("[email protected]");

XxxMapper.insert(user);

//相当于:insert into user(ID,username,password,email) values ('dsfgsdfgdsfgds','admin','admin','[email protected]');

3.更新数据

①updateByPrimaryKey()

User user =new User();

user.setId("dsfgsdfgdsfgds");

user.setUsername("wyw");

user.setPassword("wyw");

user.setEmail("[email protected]");

XxxMapper.updateByPrimaryKey(user);

//相当于:update user set username='wyw', password='wyw', email='[email protected]' where id='dsfgsdfgdsfgds'

②updateByPrimaryKeySelective()

User user =new User();

user.setId("dsfgsdfgdsfgds");

user.setPassword("wyw");

XxxMapper.updateByPrimaryKey(user);

//相当于:update user set password='wyw' where id='dsfgsdfgdsfgds'

③ updateByExample() 和 updateByExampleSelective()

UserExample example =new UserExample();

Criteria criteria = example.createCriteria();

criteria.andUsernameEqualTo("admin");

User user =new User();

user.setPassword("wyw");

XxxMapper.updateByPrimaryKeySelective(user,example);

//相当于:update user set password='wyw' where username='admin'

updateByExample()更新所有的字段,包括字段为null的也更新,建议使用 updateByExampleSelective()更新想更新的字段

4.删除数据

①deleteByPrimaryKey()

XxxMapper.deleteByPrimaryKey(1);//相当于:delete from user where id=1

②deleteByExample()

UserExample example =new UserExample();

Criteria criteria = example.createCriteria();

criteria.andUsernameEqualTo("admin");

XxxMapper.deleteByExample(example);

//相当于:delete from user where username='admin'

5.查询数据数量

①countByExample()

UserExample example =new UserExample();

Criteria criteria = example.createCriteria();

criteria.andUsernameEqualTo("wyw");intcount = XxxMapper.countByExample(example);

//相当于:select count(*) from user where username='wyw'

原文链接:https://www.cnblogs.com/difs/p/9234900.html

你可能感兴趣的:(Mybatis generatorConfig.xml生成文件内容解析)