springboot2.x整合tkmapper的示例代码
springboot整合tkmapper
1.导入pom依赖
1.1导入springboot的parent依赖
spring-boot-starter-parent org.springframework.boot 2.1.9.RELEASE
1.2导入具体依赖
org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test mysql mysql-connector-java 5.1.32 com.alibaba druid-spring-boot-starter 1.1.10 tk.mybatis mapper-spring-boot-starter 2.1.5 com.github.pagehelper pagehelper-spring-boot-starter 1.2.10 org.projectlombok lombok com.alibaba fastjson 1.2.68
2.添加tkmapper数据库连接配置
创建application.yml配置类
spring: datasource: type:com.alibaba.druid.pool.DruidDataSource#连接池指定springboot2.02版本默认使用HikariCP此处要替换成Druid driver-class-name:com.mysql.jdbc.Driver url:jdbc:mysql:///pethome?serverTimezone=Asia/Shanghai&characterEncoding=utf-8 username:root password:qwe123 druid: initial-size:5#初始化时建立物理连接的个数 min-idle:5#最小连接池连接数量,最小空闲数量 max-active:20#最大连接池连接数量,最大活跃连接数 max-wait:60000#配置获取连接等待超时的时间 timeBetweenEvictionRunsMillis:60000 minEvictableIdleTimeMillis:300000 validationQuery:SELECT1 testWhileIdle:true testOnBorrow:true testOnReturn:false poolPreparedStatements:true maxPoolPreparedStatementPerConnectionSize:20 filters:stat,wall connectionProperties:druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 stat-view-servlet: allow:0.0.0.0#允许哪些IP访问druid监控界面,多个IP以逗号分隔 login-username:admin#设置登录帐号 login-password:123456#设置登录密码 reset-enable:false#是否允许重置数据 #url-pattern:/database/*#默认访问根路径是:/druid/;也可以自定义设置 #mybatis配置 mybatis: configuration: map-underscore-to-camel-case:true log-impl:org.apache.ibatis.logging.stdout.StdOutImpl#设置控制台输入执行的sql语句 type-aliases-package:org.example.model #tkmapper配置 mapper: not-empty:false identity:mysql#指定tkmapper加载的数据库
3.在启动类上添加扫描注解
MainApp.java
importorg.springframework.boot.SpringApplication; importorg.springframework.boot.autoconfigure.SpringBootApplication; importtk.mybatis.spring.annotation.MapperScan; @SpringBootApplication @MapperScan(basePackages="org.example.mapper") publicclassApp{ publicstaticvoidmain(String[]args){ SpringApplication.run(App.class); } }
4.tkmapper的使用
4.1创建mapper.java
publicinterfaceProductMapperextendsMapper{ }
4.2创建表对应的实体类TProduct
@Data publicclassTProduct{ @Id//指定主键的注解 privateLongid; privateStringname; privateStringresources; privateDoublesaleprice; privatejava.util.Dateoffsaletime; privatejava.util.Dateonsaletime; privateLongstate; privateStringcostprice; privatejava.util.Datecreatetime; privateLongsalecount; }
4.3添加测试类,进行单表的CRUD操作
@SpringBootTest @RunWith(SpringRunner.class) publicclassAppTest{ @Autowired privateProductMapperproductMapper; @Test//查询所有 publicvoidfindAll(){ ListtProducts=productMapper.selectAll(); for(TProducttProduct:tProducts){ System.out.println(tProduct); } } @Test publicvoidinsert(){ TProductproduct=newTProduct(); product.setName("我是测试的"); product.setCreatetime(newDate()); product.setState(1L); productMapper.insert(product); } @Test publicvoidupdateById(){ TProductproduct=newTProduct(); product.setId(174L); product.setName("我是测试"); //如果修改时,只想改变更新的name值,其他值不改 //下面这个方法,是无论修改的值是否为空,将全部修改 //productMapper.updateByPrimaryKey(product); //下面的方法,只改非空的字段. //注意:tkmapper中,凡是方法名以Selective结尾的,就是在拼接动态sql //即,不更新非空的字段 product.setCreatetime(newDate()); productMapper.updateByPrimaryKeySelective(product); } @Test//删除操作 publicvoiddelete(){ productMapper.deleteByPrimaryKey(174L); }
4.4多条件查询和分页查询
@SpringBootTest @RunWith(SpringRunner.class) publicclassQueryTest{ @Autowired privateProductMapperproductMapper; @Test//根据多条件动态查询 publicvoidqueryByParam(){ //多条件查询 Exampleexample=newExample(TProduct.class); ////添加第1个条件name:模糊查询 //example.and().andLike("name","%洗澡8%"); // ////添加第2个条件:价格在100以内 //example.and() //.andGreaterThanOrEqualTo("saleprice",0).andLessThanOrEqualTo("saleprice",100); // ////添加第3个条件:状态state=1 //example.and().andEqualTo("state",1); //优化Sql中的括号:当多个条件如果是平级,则不用example.and()去追加条件 Example.Criteriaand=example.and();//Criteria对象:就是用于拼接查询条件,每次执行example.and()或者example.or()将都会创建一个新的查询条件的拼接对象(意味着多一组()) and.andLike("name","%洗澡8%").orEqualTo("state",1); //再创建一组新的区间查询条件,这个条件它要加(),所以你要重新通过example对象获取 example.and().andGreaterThanOrEqualTo("saleprice",0).andLessThanOrEqualTo("saleprice",100); ListtProducts=productMapper.selectByExample(example); for(TProducttProduct:tProducts){ System.out.println(tProduct); } } @Test//分页查询 publicvoidqueryByPage(){ //不带条件的分页查询 //如果要进行分页查询,只需在调用查询的方法前,设置分页参数即可 //特点注意:当前设置的分页参数,只适用于离它最近的这条查询 PageHelper.startPage(1,3); //List tProducts=productMapper.selectAll(); PageInfo pageInfo=newPageInfo<>(productMapper.selectAll()); /* pageInfo中的常用的方法: 总记录数:pageInfo.getTotal() 总页数:pageInfo.getPages() 每页的数据列表:pageInfo.getList() */ System.out.println(pageInfo); }
4.5添加数据后,立马得到添加数据的主键
当前这个主键是由数据库进行【自增长】设置的
在实体类的主键ID上添加如下配置
publicclassTProduct{ @Id//指定主键的注解 @GeneratedValue(strategy=GenerationType.IDENTITY) privateLongid;
在需要获取的地方,直接调用get方法即可
@Test//添加新数据后,获取自增长主键 publicvoidinsertAndGetId(){ TProductproduct=newTProduct(); product.setName("我是测试的"); product.setCreatetime(newDate()); product.setState(1L); productMapper.insert(product); System.out.println(product.getId()); }
到此这篇关于springboot2.x整合tkmapper的文章就介绍到这了,更多相关springboot2.x整合tkmapper内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。