• 微信公众号:美女很有趣。 工作之余,放松一下,关注即送10G+美女照片!

Springboot-Mybatis-注解方式+xml方式

开发技术 开发技术 3小时前 1次浏览

1 pom.xml要点

以下代码为注解方式的pom,xml形式的区别往后看

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

	<groupId>springboot</groupId>
	<artifactId>springboot-mybatis-annotation</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>springboot-mybatis-annotation</name>
	<description>Springboot-mybatis</description>

	<!-- Spring Boot 启动父依赖 -->
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.1.3.RELEASE</version>
		<relativePath/>
	</parent>

	<properties>
		<mybatis-spring-boot>1.2.0</mybatis-spring-boot>
		<mysql-connector>5.1.39</mysql-connector>
	</properties>

	<dependencies>
		<!-- Spring Boot Web 依赖 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<!-- Spring Boot Test 依赖 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>

		<!-- Spring Boot Mybatis 依赖 -->
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>${mybatis-spring-boot}</version>
		</dependency>

		<!-- MySQL 连接驱动依赖 -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
		</dependency>

		<!-- Junit -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
		</dependency>
	</dependencies>


</project>

xml形式的不同在于,代码部分如下:

 <groupId>springboot</groupId>
    <artifactId>springboot-mybatis</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot-mybatis</name>

2 application.properties

## 数据源配置
# 下面这句话格式很重要,serverTimezone一定要有,如果使用com.mysql.cj.jdbc.Driver的话
# 还要加上useSSL=true保证安全
spring.datasource.url=jdbc:mysql://localhost:3306/springbootdb?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

3 实体Entity

以城市类为例,里面包括

  • id
  • 省份proviceId
  • 城市名称cityName
  • 描述destription
    4个属性,可以使用右键[generator]自动生成set、get、toString()方法

    代码如下,【set、get、toString()方法】没有添加进来

/**
     * 城市编号
     */
    private Long id;

    /**
     * 省份编号
     */
    private Long provinceId;

    /**
     * 城市名称
     */
    private String cityName;

    /**
     * 描述
     */
    private String description;

4 DAO/Mapper层

该层主要实现数据库接口函数,目前仅以select为例,功能是通过cityName实现城市信息的查找显示

4.1 注解方式(annotation)

该方式不需要xml文件,直接在java代码中进行操作,不复杂的操作下使用方便

@Mapper // 标志为 Mybatis 的 Mapper
public interface CityDao {

    /**
     * 根据城市名称,查询城市信息
     *
     * @param cityName 城市名
     */
    @Select("SELECT * FROM city")
    // 返回 Map 结果集
    @Results({
            @Result(property = "id", column = "id"),
            @Result(property = "provinceId", column = "province_id"),
            @Result(property = "cityName", column = "city_name"),
            @Result(property = "description", column = "description"),
    })
    City findByName(@Param("cityName") String cityName);
}

4.2 xml方式

  1. 建立DAO层接口类
    代码如下:
**
 * 这里不加@Mapper的话,Application那里一定要加@MapperScan("org.spring.springboot.dao")
 */
public interface CityDao {

    /**
     * 1-增
     */


    /**
     * 根据城市名称,查询城市信息
     *
     * @param cityName 城市名
     */
    City findByName(@Param("cityName") String cityName);
}
  1. resources文件夹下建立mapper文件夹,存放xml文件
    代码如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="org.spring.springboot.dao.CityDao">
	<resultMap id="BaseResultMap" type="org.spring.springboot.domain.City">
		<result column="id" property="id" />
		<result column="province_id" property="provinceId" />
		<result column="city_name" property="cityName" />
		<result column="description" property="description" />
	</resultMap>

	<sql id="Base_Column_List">
		id, province_id, city_name, description
	</sql>

	<select id="findByName" resultMap="BaseResultMap" parameterType="java.lang.String">
		select
		<include refid="Base_Column_List" />
		from city
		where city_name = #{cityName}
	</select>

</mapper>

5 service层

5.1 建立service接口

代码如下:

/**
 * 城市业务逻辑接口类
 */
public interface CityService {

    /**
     * 根据城市名称,查询城市信息
     * @param cityName
     */
    City findCityByName(String cityName);
}

5.2 建立impl文件夹,里面放具体实现类Impl

代码如下:

@Service
public class CityServiceImpl implements CityService {

    @Autowired
    private CityDao cityDao;

    public City findCityByName(String cityName) {
        return cityDao.findByName(cityName);
    }

}

6 Controller层

代码如下:

@RestController
public class CityRestController {

    @Autowired
    private CityService cityService;

    //http://localhost:8080/api/city?cityName=封灵岛
    @RequestMapping(value = "/api/city", method = RequestMethod.GET)
    public City findOneCity(@RequestParam(value = "cityName", required = true) String cityName) {
        return cityService.findCityByName(cityName);
    }

}

7 测试

7.1 cmd打开数据库

代码如下:

net stop mysql
mysql -u root -p
//接下来会让你输入密码,输入后显示Welcome to the MySQL monitor即可成功

7.2 打开Navicat软件

  • 新建连接
  • 设置端口号跟properties对应,localhost:3306
  • 在下面新建数据库,名称为city,跟程序DAO层的sql语句对应,也可以直接导入.sql文件,本次导入代码如下
DROP TABLE IF EXISTS  `city`;
CREATE TABLE `city` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '城市编号',
  `province_id` int(10) unsigned  NOT NULL COMMENT '省份编号',
  `city_name` varchar(25) DEFAULT NULL COMMENT '城市名称',
  `description` varchar(25) DEFAULT NULL COMMENT '描述',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
  • 数据库中添加数据,可以采用导入sql语句的形式,也可以手动添加,本次的数据如下:
    INSERT INTO `city` VALUES (1, 1, '封灵岛', '大雪原');

7.3 运行java程序

7.4 打开网页

//http://localhost:8080/api/city?cityName=封灵岛

7.5 查看结果,如下所示,表明运行正确

Springboot-Mybatis-注解方式+xml方式


程序员灯塔
转载请注明原文链接:Springboot-Mybatis-注解方式+xml方式
喜欢 (0)