数据库建议大家用jdbc连接,并使用mybatisplus做持久层。本文我将使用SQL server数据库做示范。
首先。引入必要的pow包
<!-- JDBC sqlserver -->
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>6.4.0.jre8</version>
</dependency>
<!-- mybatis plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.1.0</version>
</dependency>
<!-- mp 代码生成器 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.1.0</version>
</dependency>
在application.yml中添加以下配置信息
spring:
datasource:
# 根据数据库类型修改
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
url: jdbc:sqlserver://***.***.***.***:1433;DatabaseName=***;
username: sa
password: ******
我们先简单的新建一个数据表:CityArea
用代码生成器生成对应的实体Entity
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("CityArea")
@ApiModel(value="CityArea对象", description="")
public class CityArea implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "Id", type = IdType.AUTO)
private Integer Id;
@TableField("Name")
private String Name;
@TableField("Pinyin")
private String Pinyin;
@TableField("CityId")
private Integer CityId;
@TableField("State")
private Integer State;
@TableField("Sort")
private Integer Sort;
@TableField("IsEdit")
private Boolean IsEdit;
@TableField("CreateTime")
private LocalDateTime CreateTime;
@TableField("RegionId")
private Integer RegionId;
@TableField("Weighting")
private Float Weighting;
@TableField("AreaCode")
private String AreaCode;
@TableField("IsHot")
private Integer IsHot;
}
这就相当于表对象。
现在受用mybatisplus查出这张表的全部数据
/**
* 获取全部城市地区
*
* @return cityAreas
*/
@Override
public List<CityArea> getCityArea() {
List<CityArea> cityAreas = cityAreaMapper.selectList(
new QueryWrapper<CityArea>().lambda()
.eq(CityArea::getState, CityAreaEnum.正常.getValue())
);
return cityAreas;
}
这里使用了lambda表达式查询。更多表达式可以参考 MyBatis-Plus 官网。
此外还可以定制 SQL 语句,相对于比较复杂的查询,手撸 SQL 语句更加方便实用,同时优化调整也更加简单。
服务层实现类代码如下:
@Override
public List<CityArea> getCityArea() {
List<CityArea> cityAreas = cityAreaMapper.selectCityAreas(CityAreaEnum.正常.getValue());
return cityAreas;
}
Mapper 接口代码:
/**
* <p>
* CityArea Mapper 接口
* </p>
*
* @author WuGuangNuo
* @since 2019-05-26
*/
@Repository
public interface CityAreaMapper extends BaseMapper<CityArea> {
List<CityArea> selectCityAreas(@Param("state") Integer state);
}
这里就接收了服务层传来的参数“state”
同名的Mapper.xml文件写SQL语句,如下
<select id="selectCityAreas" resultType="com.wgn.java.entity.CityArea">
SELECT
c.*
FROM
[CityArea] AS c
WHERE 1 = 1
<if test="state != null and state != ''">
AND c.State = #{state}
</if>
</select>
请注意,如果是查询则使用<select></select>
标签标记,其内的id必须与mapper中的相同,返回类型也要相同,否则会报错。