Fork me on GitHub

SpringBoot玩转数据库

使用JDBC

第一步:添加依赖

上一篇中说到很多关于添加依赖后如何进行reimport这里就不在多重复了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!-- JDBC -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- 数据库驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>

application.properties配置

resources文件下新建一个名为application.properties的file文件

1
2
3
4
5
# 配置数据jdbc
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/spring
spring.datasource.username=root
spring.datasource.password=******

service

一如往常,还是创建service的接口并实现这个接口

Spring对数据库的操作在jdbc上面做了深层次的封装,使用spring的注入功能,可以把DataSource注册到JdbcTemplate之中。

  JdbcTemplate位于Spring-jdbc-4.3.0.RELEASE.jar中。其全限定命名为org.springframework.jdbc.core.JdbcTemplate。要使用JdbcTemlate还需一个这个包包含了一下事务和异常控制,在这里我们先不说事物和异常控制

JdbcTemplate主要提供了以下5类方法

execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句;

update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate方法用于执行批处理相关语句;

query方法及queryForXXX方法:用于执行查询相关语句;

call方法:用于执行存储过程、函数相关语句。
1
2
3
4
5
6
7
8
9
10
@Service
public class UserServiceImpl implements UserService{
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public void register(String username, String password) {
String sql = "insert into user (userName,password) value(?,?)";
jdbcTemplate.update(sql,username,password);
}
}

Controller

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Controller
@RequestMapping("/user")
public class UserController {

@Autowired
UserService userService;
@RequestMapping("/register")
@ResponseBody
public String register(String username,String password){
userService.register(username,password);

return "Success";
}
}

访问http://localhost:8080/user/register?username=zhangsan&password=123456后成功则会出现Success,查看数据库会多出刚刚插入的信息

整合Mybatis

方式一

在创建UserMapper接口,用注解方式操作数据库

1
2
3
4
5
6
7
8
public interface UserMapper {

@Insert("insert user (username,password) values (#{username},#{password})")
public void save(@Param("username") String username, @Param("password") String password);

@Select("select from user where username=#{username,jdbcType=VARCHAR}")
public User findByUserName(@Param("username") String username);
}

方式二

学过mybatis的都知道,使用mybatis都是xml配置数据库操作,以下是我的xml配置文件

1
2
3
4
5
6
7
8
<mapper namespace="com.lxk.mapper.UserMapper">
<insert id="save">
insert into user (username,password) values (#{arg0},#{arg1})
</insert>
<select id="findByUserName" resultType="com.lxk.model.User" parameterType="String">
select *from user where username=#{username,jdbcType=VARCHAR}
</select>
</mapper>

当然有了配置文件,我们就需要去掉UserMapper类中的注解

1
2
3
4
public interface UserMapper {
public void save(String username,String password);
public User findByUserName(String username);
}

当然,如果你也把Spring学过了,你那应该知道,我们使用注解是为了取代少xml文件,因此,这里的两种方式其实是很简单不是吗?

创建Service

同样创建UserService 接口和UserServiceImpl实现类

1
2
3
4
public interface UserService {
public void insert(String username, String password);
public User select(String username);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public void insert(String username, String password) {
System.out.println(username+"-"+password);
userMapper.save(username,password);
}

@Override
public User select(String username) {
User user = userMapper.findByUserName(username);
return user;
}
}

创建Controller

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@Controller
@RequestMapping("user")
public class UserController {

@Autowired
private UserService userService;
@RequestMapping("/save")
@ResponseBody
public String save(String username,String password){
userService.insert(username,password);
return "Save success";
}

@RequestMapping("find")
@ResponseBody
public User findByUserName(String username){
User user = userService.select(username);
return user;
}
}

启动App

启动App类

1
2
3
4
5
6
7
8
@EnableAutoConfiguration
@ComponentScan(basePackages = {"com.lxk.web","com.lxk.service"})
@MapperScan(basePackages = {"com.lxk.mapper"})
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class,args);
}
}

访问http://localhost:8080/user/save?username=zhangsan&password=123456 ,出现Save success则是成功,然后查看数据库中是否存在插入的那条

访问http://localhost:8080/user/find?username=zhagnsan时,
出现{"username":"zhangsan","password":"123456"}

配置多数据源

本文标题:SpringBoot玩转数据库

文章作者:LiuXiaoKun

发布时间:2019年04月29日 - 23:04

最后更新:2019年04月29日 - 23:04

原始链接:https://LiuZiQiao.github.io/2019/04/29/【SpringBoot】SpringBoot玩转数据库/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

0%