今天来讲讲MYSQL的基础入门AND轻松玩转MyBatis-Example,飞起来FFF~
一、对数据库本身操作、
创建数据库:create database name; 选择数据库:use databasename; 删除数据库:drop database name
二、对数据表进行操作
1、创建数据表:create table 表明 ( id int not null auto_increment, name varchar(20) not nulldefault '经理', #设定默认值 description varchar(100), primary key PK_positon (id) #设定主键 ); 2、修改表格的名字:alter table tablename rename table_new_name; 3、删除表:drop table tablename;
三、对数据表结构进行操作、
修改结构 增加列:alter tablename add(test char(10)); 修改列:alter tablename modify test char(20) not null; 删除列:alter tablename drop column test;
修改表列名: Alter table table_name change column old_xxx new_xxx varcher(30)
四、对数据表数据进行操作
1、增加数据:insert into table_name(col1,col2) values(data1,data2); 2、删除数据:delete colname where data="具体某个数据"; 3、修改数据:update table_name set data1="具体某个数据" where data1="旧数据"; 4、清空表数据:delete from table_name; 5、清空序列表数据:truncate table table_name;(可以初始化主键自增长)
前言:
因为项目开发需要很多时候需要做一些复杂的联动查询,那么当你不想用SQL语句实现的时候,那应该怎么办呢?本文教你充分利用Example类来做复杂联动查询。
复习简单查询
增加行为SQL:
insert into industrycategory ( id, categoryname, detailcategoryname ) values ( ?, ?, ? ) JAVA实际操作:
  public int insertSelective(Industrycategory record) {
        return IndustrycategoryMapper.insertSelective(record);
    }
;
删除行为SQL:
delete from industrycategory where id = ? JAVA实际操作:
    @Override
    public int deleteByPrimaryKey(Integer id) {
        return IndustrycategoryMapper.deleteByPrimaryKey(id);
    }
更新行为SQL:
update industrycategory SET categoryname = ?, detailcategoryname = ? where id = ? JAVA实际操作:
    @Override
    public int updateByPrimaryKeySelective(Industrycategory record) {
        return IndustrycategoryMapper.updateByPrimaryKeySelective(record);
    }
全查询行为SQL:
select 'true' as QUERYID, id, categoryname, detailcategoryname from industrycategory JAVA实际操作:
    @Override
    public List<Industrycategory> selectAll() {
        IndustrycategoryExample IndustrycategoryExample = new IndustrycategoryExample();
        return IndustrycategoryMapper.selectByExample(IndustrycategoryExample);
    }
高级查询方案(where后字段)
复杂条件查
where a=? and b=? and .... and z=?:可能任意a~z中字段需要Equals类型处理。JAVA实际操作:
    @Override
    public List<Usercompany> selectAll(Usercompany usercompany) {
        UsercompanyExample UsercompanyExample = new UsercompanyExample();
        UsercompanyExample.Criteria criteria = UsercompanyExample.createCriteria();
        String usercompanyname = usercompany.getUsercompanyname();
        String chinesename = usercompany.getChinesename();
        String enlighname = usercompany.getEnlighname();
        String address = usercompany.getAddress();
        String agencyarea = usercompany.getAgencyarea();
        String officialwebsite = usercompany.getOfficialwebsite();
        String authorizedchannel = usercompany.getAuthorizedchannel();
        String behaviorcategory = usercompany.getBehaviorcategory();
        String category = usercompany.getCategory();
        String instruction = usercompany.getInstruction();
        String description = usercompany.getDescription();
        String createdtime = usercompany.getCreatedtime();
        String usercompanystatus = usercompany.getUsercompanystatus();
        if (usercompanyname != null ) {
            criteria.andUsercompanynameEqualTo(usercompanyname);
        }
        if (chinesename != null  ) {
            criteria.andChinesenameEqualTo(chinesename);
        }
        if (enlighname != null) {
            criteria.andEnlighnameEqualTo(enlighname);
        }
        if (address != null) {
            criteria.andAddressEqualTo(address);
        }
        if (agencyarea != null) {
            criteria.andAgencyareaEqualTo(agencyarea);
        }
        if (officialwebsite != null) {
            criteria.andOfficialwebsiteEqualTo(officialwebsite);
        }
        if (authorizedchannel != null) {
            criteria.andAuthorizedchannelEqualTo(authorizedchannel);
        }
        if (behaviorcategory != null) {
            criteria.andBehaviorcategoryEqualTo(behaviorcategory);
        }
        if (category != null) {
            criteria.andCategoryEqualTo(category);
        }
        if (instruction != null) {
            criteria.andInstructionEqualTo(instruction);
        }
        if (description != null) {
            criteria.andDescriptionEqualTo(description);
        }
        if (createdtime != null) {
            criteria.andCreatedtimeEqualTo(createdtime);
        }
        if (usercompanystatus != null) {
            criteria.andUsercompanystatusEqualTo(usercompanystatus);
        }
        return UsercompanyMapper.selectByExample(UsercompanyExample);
    }
全域搜索(暂时SQL)
where a like %?% or b like %?% or .... z like %?%:需要a~z每个字段进行模糊搜索 JAVA实际操作:
•
防止SQL注入
  @Override
  public List<Usercompany> selectAll(String index) {
      if (index==null) {
          index = "%";
      }else if (index.contains("%")) {
          return null;
      }else {
          index = '%' + index + '%';
      }
      System.out.println(index);
      return UsercompanyMapper.selectAll(index);
  }
•
SQL
    <select id="selectAll" parameterType="string" resultType="cn.lantian.springboot.model.Usercompany">
      select * from usercompany WHERE (
  usercompanyname like #{index} or
  chinesename like #{index} or
  enlighname like #{index} or
  address like #{index} or
  agencyarea like #{index} or
  officialwebsite like #{index} or
  authorizedchannel like #{index} or
  behaviorcategory like #{index} or
  category like #{index} or
  instruction like #{index} or
  description like #{index} or
  createdtime like  #{index}
      )
    </select>
单字段多条件搜索查
where (a=? or a=?? or a=???) and (b=? or b=?? or b=???):可能需要筛选 广东省or河南省 And 年龄28or年龄29 JAVA实际操作:
    @Override
    public List<Usercompany> selectComplexAllByAgencyareaAndAuthorizedchannel(String[] agencyarea, String[] authorizedchannel) {
        UsercompanyExample UsercompanyExample = new UsercompanyExample();
        UsercompanyExample.Criteria criteria1 = UsercompanyExample.or();
        criteria1.andAgencyareaIn(Arrays.asList(agencyarea));
        criteria1.andAuthorizedchannelIn(Arrays.asList(authorizedchannel));
        return UsercompanyMapper.selectByExample(UsercompanyExample);
    }
多字段多条件查1
where (a = ? and b=?) or (c = ? and d=?):可能需要筛选 男生 and 体力好 or 经验丰富 and 没有受伤 JAVA实际操作:
多字段多条件查2
where (a = ? or b=?) and (c = ? or d=?):可能需要筛选 男生 or 体力好 And 善于沟通 or 懂的技巧 JAVA实际操作:·
•代码
Example example = new xample();
example.or() .andField1EqualTo(5) .andField2IsNull();
example.or() .andField3NotEqualTo(9) .andField4IsNotNull();
List field5Values = new ArrayList(); field5Values.add(8); field5Values.add(11); field5Values.add(14); field5Values.add(22);
example.or() .andField5In(field5Values);
example.or() .andField6Between(3, 7);
 - 解释:在上面的例子中, 动态生成的where子句是:
```java
where (field1 = 5 and field2 is null) 
or (field3 <> 9 and field4 is not null) 
or (field5 in (8, 11, 14, 22)) 
or (field6 between 3 and 7)
全域搜索+复杂条件查
where (a like %?% or b like %?% or .... z like %?%) and (a=? and b=? and .... and z=?):需要az每个字段进行模糊搜索 And 可能任意az中字段需要Equals类型处理。JAVA实际操作:
