本章节是SpringBoot非常重要的部分,我会用一个比较简单的实例来说明springboot是如何集成mybatis的。废话少说,开撸!
一、
pom.xml中添加坐标:无论如何,Mybatis也不可能完全集成在web启动器里面,数据库驱动也不可能直接加进去,毕竟是不同的公司做的。此处使用的数据库连接池是阿里的druid,版本为1.0.9
<!-- mybatis启动器坐标 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency>
<!-- mysql的数据库驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- 数据库连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.9</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
二、配置文件
无论SpringBoot有多智能,它都不可能知道你数据库的密码(否则就是黑客了啊亲!),所以,我们还是要手动配置一下数据库的密码,以及数据库驱动,配置文件如下:
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
mybatis.type-aliases-package=com.mayunbaba.pojo
三、代码部分
1、设计数据库
为了避免中文乱码什么的,统一使用utf8字符集
create table users(
id int(10) not null primary key auto_increment,
name varchar(10) not null,
age int(5) not null
)engine innodb charset utf8;
2、创建对应的实体类
由于只是个简单项目,没有引入jpa和数据校验,就是个简单的bean,主键为id,改成Integer也行
import org.springframework.stereotype.Component;
@Component
public class Users {
private int id;
private String name;
private int age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Users(int id, String name, int age) {
super();
this.id = id;
this.name = name;
this.age = age;
}
public Users() {
super();
// TODO Auto-generated constructor stub
}
}
3、编写mapper
这里偷了个懒,实在不想弄jpa,就直接注解写了sql,反正本例够用了
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import com.mayunbaba.pojo.Users;
@Mapper
public interface UsersMapper {
@Insert("insert users value(#{id},#{name},#{age})")
void insertUser(Users user);
}
4、编写业务层接口
没啥好说的,接口而已
import com.mayunbaba.pojo.Users;
public interface UsersService {
void addUsers(Users users);
}
5、编写业务层实现
这里要注意,涉及到增/删/改操作,一定要加@Tansactional注解,表示将方法托管于spring事务管理,一旦操作失败,数据库自动回滚
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.mayunbaba.mapper.UsersMapper;
import com.mayunbaba.pojo.Users;
@Service
//@Transactional表示该类下所有方法都受事务控制
@Transactional
public class UsersServiceImpl implements UsersService{
@Autowired
private UsersMapper usersMapper;
@Override
public void addUsers(Users users) {
usersMapper.insertUser(users);
}
}
6、编写Controller/servlet
不多介绍,和MVC差别不大
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.mayunbaba.pojo.Users;
import com.mayunbaba.service.UsersService;
@Controller
public class UsersController {
@Autowired
private UsersService usersService;
@RequestMapping("/input")
public String jump() {
return "index";
}
@RequestMapping("/addUsers")
public String getUsers(int id,String name,int age) {
Users user=new Users(id, name, age);
usersService.addUsers(user);
return "config";
}
}
7、前端设计
也谈不上设计,就是俩只有业务逻辑的页面······
a.index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="/addUsers" method="Post">
<table border="1px">
<tr>
<th>id</th>
<th>name</th>
<th>age</th>
</tr>
<tr>
<td>用户id</td>
<td><input type="text" name="id"/></td>
</tr>
<tr>
<td>用户name</td>
<td><input type="text" name="name"/></td>
</tr>
<tr>
<td>用户age</td>
<td><input type="text" name="age"/></td>
</tr>
<tr>
<button type="submit" value="确认"></button>
</tr>
</table>
</form>
</body>
</html>
b.config.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>操作结果</title>
</head>
<body>
操作成功!
</body>
</html>
8、细节把控:
a.避免中文乱码:
- 统一使用utf8
- 保证数据库(不仅仅是这一张表)也是utf8
- 如果依旧乱码,相信这篇文章可以帮助你:一位大佬总结的乱码解决方案
b.对于一些强迫症而言,删除某条记录后主键不连续非常难受,这里提供解决方案:
SET @i=0;
UPDATE `users` SET `id`=(@i:=@i+1);
ALTER TABLE `users` AUTO_INCREMENT=0
本期教学到此结束,希望可以帮助到刚入门的各位!
下一期将开始讲述单元测试、数据校验、JPA等内容,欢迎观看~
欢迎联系工作QQ账号:3352336739
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/153558.html