springboot整合tkmapper springboot2.x整合tkmapper的代码实例
x286129277 人气:0springboot整合tkmapper
1.导入pom依赖
1.1 导入springboot的parent依赖
<parent> <artifactId>spring-boot-starter-parent</artifactId> <groupId>org.springframework.boot</groupId> <version>2.1.9.RELEASE</version> </parent>
1.2 导入具体依赖
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency> <!-- MySql --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.32</version> </dependency> <!-- druid连接池--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.10</version> </dependency> <!-- tkmapper--> <dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper-spring-boot-starter</artifactId> <version>2.1.5</version> </dependency> <!-- pagehelper分页插件--> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.2.10</version> </dependency> <!-- lombok --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.68</version> </dependency> </dependencies>
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: SELECT 1 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
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import tk.mybatis.spring.annotation.MapperScan; @SpringBootApplication @MapperScan(basePackages = "org.example.mapper") public class App { public static void main(String[] args) { SpringApplication.run(App.class); } }
4.tkmapper的使用
4.1 创建mapper.java
public interface ProductMapper extends Mapper<TProduct> { }
4.2 创建表对应的实体类TProduct
@Data public class TProduct { @Id //指定主键的注解 private Long id; private String name; private String resources; private Double saleprice; private java.util.Date offsaletime; private java.util.Date onsaletime; private Long state; private String costprice; private java.util.Date createtime; private Long salecount; }
4.3 添加测试类,进行单表的CRUD操作
@SpringBootTest @RunWith(SpringRunner.class) public class AppTest { @Autowired private ProductMapper productMapper; @Test//查询所有 public void findAll(){ List<TProduct> tProducts = productMapper.selectAll(); for (TProduct tProduct : tProducts) { System.out.println(tProduct); } } @Test public void insert(){ TProduct product = new TProduct(); product.setName("我是测试的"); product.setCreatetime(new Date()); product.setState(1L); productMapper.insert(product); } @Test public void updateById(){ TProduct product = new TProduct(); product.setId(174L); product.setName("我是测试"); //如果修改时,只想改变更新的name值,其他值不改 //下面这个方法,是无论修改的值是否为空,将全部修改 // productMapper.updateByPrimaryKey(product); //下面的方法,只改非空的字段. //注意:tkmapper中,凡是方法名以Selective结尾的,就是在拼接动态sql //即,不更新非空的字段 product.setCreatetime(new Date()); productMapper.updateByPrimaryKeySelective(product); } @Test//删除操作 public void delete(){ productMapper.deleteByPrimaryKey(174L); }
4.4 多条件查询和分页查询
@SpringBootTest @RunWith(SpringRunner.class) public class QueryTest { @Autowired private ProductMapper productMapper; @Test //根据多条件动态查询 public void queryByParam(){ //多条件查询 Example example = new Example(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.Criteria and = example.and();//Criteria对象:就是用于拼接查询条件,每次执行example.and()或者example.or()将都会创建一个新的查询条件的拼接对象(意味着多一组()) and.andLike("name","%洗澡8%").orEqualTo("state",1); //再创建一组新的区间查询条件,这个条件它要加(),所以你要重新通过 example对象获取 example.and().andGreaterThanOrEqualTo("saleprice",0).andLessThanOrEqualTo("saleprice",100); List<TProduct> tProducts = productMapper.selectByExample(example); for (TProduct tProduct : tProducts) { System.out.println(tProduct); } } @Test //分页查询 public void queryByPage(){ //不带条件的分页查询 //如果要进行分页查询,只需在调用查询的方法前,设置分页参数即可 //特点注意:当前设置的分页参数,只适用于离它最近的这条查询 PageHelper.startPage(1,3); //List<TProduct> tProducts = productMapper.selectAll(); PageInfo<TProduct> pageInfo = new PageInfo<>(productMapper.selectAll()); /* pageInfo中的常用的方法: 总记录数:pageInfo.getTotal() 总页数:pageInfo.getPages() 每页的数据列表:pageInfo.getList() */ System.out.println(pageInfo); }
4.5 添加数据后,立马得到添加数据的主键
当前这个主键是由数据库进行【自增长】设置的
在实体类的主键ID上添加如下配置
public class TProduct { @Id //指定主键的注解 @GeneratedValue(strategy= GenerationType.IDENTITY) private Long id;
在需要获取的地方,直接调用get方法即可
@Test //添加新数据后,获取 自增长主键 public void insertAndGetId(){ TProduct product = new TProduct(); product.setName("我是测试的"); product.setCreatetime(new Date()); product.setState(1L); productMapper.insert(product); System.out.println(product.getId()); }
加载全部内容