springboot和mybatis整合(单多表)

1、MyBatis介绍

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis,实质上Mybatisibatis进行一些改进。

MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。

Mybatis通过xml或注解的方式将要执行的各种statementstatementpreparedStatemntCallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回。

mybatis初期使用比较麻烦,需要各种配置文件、实体类、dao层映射关联、还有一大推其它配置。当然mybatis也发现了这种弊端,初期开发了generator可以根据表结果自动生产实体类、配置文件和dao层代码,可以减轻一部分开发量;后期也进行了大量的优化可以使用注解了,自动管理dao层和配置文件等,发展到最顶端就是今天要讲的这种模式了,mybatis-spring-boot-starter就是springboot+mybatis可以完全注解不用配置文件,也可以简单配置轻松上手。

2、整合

1)在pom.xml里加入以下代码

<dependency>
   <groupId>org.mybatis.spring.boot</groupId>
   <artifactId>mybatis-spring-boot-starter</artifactId>
   <version>1.3.1</version>
</dependency>
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
   <scope>runtime</scope>
</dependency>

会自动下载相关的包

 

2)application.properties 添加相关配置

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url
=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8
spring.datasource.username
=root
spring.datasource.password
=root

mybatis.mapper-locations
=classpath:/mapper/*Mapper.xml
mybatis.type-aliases-package
=com.twj.login

 

3、创建数据库

创建user表(直接用上次的)

 

编写实体类

4、注册

@RequestMapping("/regist")
public String save(UserPO userPO,RedirectAttributes attributes) {
    // 获取用户名
    
String name=userPO.getName();
    UserPO user=userService.getName(name);
    if(null!=user){
        attributes.addFlashAttribute("mess","用户名已被注册");
       return  "redirect:";
   }
    userService.save(userPO);
    return "success";
}

获取用户名,检查用户名是否为空(userService.getName(name);

根据userService.getName(name);

@Override
public UserPO getName(String name) {
    return userDao.getName(name);
}

由此到UserPO getName(String name);

重点来了  我标红一下

以往UserPO findByName(String name);可直接查询

mybatis则

 

<select id="getName" parameterType="java.lang.String" resultType="UserPO">
    select name,password,sex,age  from USER where name=#{name};
</select>

Sql直接写在mapper.xml中

 

新增和根据用户名和密码查询也都类似。

上面所说是mybatis是xml配置方法。

 

下面说下注解的方法

UserPO getName(String name);

@Select("select * from user where name = #{name}")  

UserPo getName(String name);  

 

void insert(UserPO userPO);

@Insert("insert into user(name,password,age,sex) values(#{name},#{password},#{age},#{sex}))

void insert(UserPO userPO);


UserPO getUser(@Param(value = "name") String name, @Param(value = "password") String password);

@Select("SELECT name,password,sex,age  FROM USER WHERE NAME=#{name} AND PASSWORD=#{password})

UserPO getUser(@Param(value = "name") String name, @Param(value = "password") String password);

5、联表查询

比如查看文章详情时候,想查找发布人信息,文章表通过user_iduser表相关联

实体类里面加上作者信息

并相应个getset方法。

Dao里面直接根据文章id去查询,

对应的NewsMapper.xml则如下


最后查询到的结果渲染则:

 
下载地址 https://download.csdn.net/download/u010674395/10512244

猜你喜欢

转载自blog.csdn.net/u010674395/article/details/80876191
今日推荐