Spring Boot 數據訪問
application.yami配置
引入依賴包druid-spring-boot-starter
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>
druid-spring-boot-starter
</artifactId>
<version>1.2.8</version>
</dependency>
<!--導入驅動-->
<dependency>
<groupId>mysql</groupId>
<artifactId>
mysql-connector-java
</artifactId>
<version>8.0.26</version>
</dependency>
①配置文件配置MySQL接口和數據庫驅動Driver
# 配置數據庫連接
spring:
datasource:
url: jdbc:mysql://localhost:3306/test
username: gcs
password: 273869
driver-class-name: com.mysql.cj.jdbc.Driver
②利用JdbcTemplate調用sql語句
#在方法里放入執行語句
jdbcTemplate.execute("select * from user");
mybatis.xml+Mapper.xml
引入依賴包mybatis-spring-boot-starter
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>
mybatis-spring-boot-starter
</artifactId>
<version>2.2.0</version>
</dependency>
<!--導入驅動-->
<dependency>
<groupId>mysql</groupId>
<artifactId>
mysql-connector-java
</artifactId>
<version>8.0.26</version>
</dependency>
①創建mybatis.xml配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property
name="driver"
value="com.mysql.jdbc.Driver"/>
<property
name="url"
value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=utf8"/>
<property name="username" value="gcs"/>
<property name="password" value="273869"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/example/spring_mybatis/mapper/userMapper.xml"/>
</configuration>
②創建接口Mapper
@Mapper
public interface AccountMapper{
#構建方法
public Account getAccount(String name);
}
③創建mapper配置文件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= "com.example.managesystemdemo.mapper.AccountMapper">
<!--id為Mapper接口里面的方法名,namespace為Mapper接口的地址-->
<select id="getAccount" resultType="com.example.managesystemdemo.bean.Account">
select * from user where username=#{name}
</select>
</mapper>
④為Mapper接口創建服務接口和實現類
@Data
@Component
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class Account {
private String username;
private String pwd;
}
public interface AccountService {
public Account getUser(String name);
}
@Service
public class AccountServiceImpl
implements AccountService {
@Autowired
AccountMapper accountMapper;
public Account getUser(String name) {
//調用mapper接口方法
return accountMapper.getAccount(name);
}
}
⑤利用服務接口實現數據訪問
@Autowired
AccountService accountService;
@ResponseBody
@GetMapping("/select")
public Account select(@RequestParam String name
{
return accountService.getUser(name);
}
Mapper接口+注釋
引入依賴包導入mybatis-plus包,自帶jdbc驅動,所以不需要導入驅動包mysql-connector-java
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>
mybatis-plus-boot-starter
</artifactId>
<version>3.4.1</version>
</dependency>
①創建Mapper接口
public interface AccountMapper {
/**
* 有@Insert注釋就不需要配置mapper.xml文件了
*/
@Insert("insert into user
values(#{username},#{pwd})")
public void insertAccount(Account account);
}
②創建服務接口和實現類
@Data
@Component
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class Account {
private String username;
private String pwd;
}
public interface AccountService {
public void insertAccount(Account account);
}
@Service
public class AccountServiceImpl
implements AccountService {
@Autowired
AccountMapper accountMapper;
@Override
public void insertAccount(Account account)
{
//調用mapper接口方法
accountMapper.insertAccount(account);
}
}
③利用服務類訪問數據
City city = new City("上饒","江西","中國");
@Autowired
AccountService accountService;
@ResponseBody
@GetMapping("/insert")
public String insert()
{
cityService.insert(city);
return "{city.toString()}插入成功!!!";
}
BaseMapper+@TableName()
引入依賴mybatis-plus
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>
mybatis-plus-boot-starter
</artifactId>
<version>3.4.1</version>
</dependency>
①創建數據表映射的類
@Data
@Component
@ToString
@NoArgsConstructor
@AllArgsConstructor
//默認表名為類名小寫
@TableName("user_info")
public class User {
//所有屬性都應該在數據表中,屬性名和表中字段名相同
//除了有TableField(exist = false)注釋的
//默認主鍵為自增,如果主鍵不是自增得說明,不然會報錯
@TableId(type = IdType.AUTO)
private String username;
@TableField(exist = false)
//表中沒有該屬性對應的字段名
private String password;
private String fullname;
private String email;
private String address;
private String city;
private String sex;
}
②創建Mapper接口
/**
* 繼承BaseMapper就有操作數據庫的方法,不需要寫Mapper.xml
*/
@Mapper
public interface UserMapper extends BaseMapper<User> {
}
③創建服務接口和實現類
/**
* 繼承IService<User>類,里面有所有的MySQL執行方法
*/
public interface UserService extends IService<User> {
}
/**
* 繼承ServiceImpl<UserMapper,User>類就不需要重寫
* IService接口里面的所有方法
*/
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
}
④利用服務接口訪問數據
@Autowired
UserService userService;
@ResponseBody
@GetMapping("/userInfo")
public List<User> getUserInfo()
{
//BaseMapper<>類自帶很多MySQL執行方法
return userService.list();
}