1. SpringBoot学习笔记八:springBoot2.x持久化
文章目录
1.1. 常用的数据库访问方式
1.1.1. 原始sql
- 注册驱动
- 建立链接
- 创建Statement
- 执行sql语句
- 处理结果集
- 关闭链接,释放资源
1.1.2. Apache的Dbutil框架
- 比上一步操作简单一点
1.1.3. jpa框架
- spring-data-jpa
- jpa在复杂查询的时候性能不是很好。
1.1.4. Hibernate
- ORM框架,对象关系映射(Object Relational Mapping)
- 企业很多采用hibernate框架
1.1.5. Mybatis框架
- 互联网行业通常使用Mybatis框架
- 不提供对象和关系模型的直接映射,属于半ORM框架。
1.2. SpringBoot2.x整合Mybatis框架
1.2.1. 整合Mybatis3.x
- 引入Mybatis依赖
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
<version>5.1.47</version>
</dependency>
- Dao层
- Mapper接口类似于Dao层,用于写一些操作数据库的内容。这里举例一个操作数据库记录,从对象参数中取值,设定主键。
- 注意这个Dao层要在项目启动时,扫描一下。
public interface UserMapper {
//#表示从User2对象里面取值。花括弧里面的值要与User2对象里面的字段相同。
//也可以用$符号取值,$符合会直接生成"name",这样的话会存在sql注入攻击,攻击者会将里面的值写成sql语句。
//而#号会先进行预编译,将里面的值编译成?号。
@Insert("insert into t_user(name,phone,create_time,age)values(#{name},#{phone},#{createTime},#{age})")
//获取数据库自增id,第一个参数表示用该字段为主键,第二个参数表示:程序里面的对应字段,第三个字段表示:数据库里面的字段)
@Options(useGeneratedKeys = true,keyProperty = "id",keyColumn = "id")
int insert(User2 user2);
}
- 项目启动扫描参数
@MapperScan("net.xdclass.xdclass_springboot.mapper")//相当于访问数据库的对象
public class XdClassApplication{
public static void main(String[] args) {
// TODO Auto-generated method stub
SpringApplication.run(XdClassApplication.class, args);
}
}
- Service接口
public interface UserService {
public int add(User2 user2);
}
- 实现类
@Service
public class userImpl implements UserService {
//Mapper相当于Dao
@Autowired
private UserMapper userMapper;
@Override
public int add(User2 user2) {
// TODO Auto-generated method stub
userMapper.insert(user2);
int id=user2.getId();
return id;
}
}
- 实体类
public class User2 {
private int id;
private String name;
private String phone;
private int age;
private Date createTime;
- 接口
@RestController
@RequestMapping(value = "/user")
public class UserController {
@Autowired
private UserService userService;
@GetMapping(value = "/add")
public Object add() {
User2 user=new User2();
user.setAge(11);
user.setCreateTime(new Date());
user.setPhone("125645884");
user.setName("abc");
int id = userService.add(user);
return JsonData.buildSuccess(id);
}
}
- application.properties配置连接数据库
#springboot可以自动识别驱动,可以不用写
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/movie?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
#如果不使用会默认使用(com.zaxxer.hikari.HikariDataSource)
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
欢迎关注