SpringBoot学习笔记八:springBoot2.x整合Mybatis3.x之一

1. SpringBoot学习笔记八:springBoot2.x持久化

1.1. 常用的数据库访问方式
1.1.1. 原始sql
  1. 注册驱动
  2. 建立链接
  3. 创建Statement
  4. 执行sql语句
  5. 处理结果集
  6. 关闭链接,释放资源
1.1.2. Apache的Dbutil框架
  1. 比上一步操作简单一点
1.1.3. jpa框架
  1. spring-data-jpa
  2. jpa在复杂查询的时候性能不是很好。
1.1.4. Hibernate
  1. ORM框架,对象关系映射(Object Relational Mapping)
  2. 企业很多采用hibernate框架
1.1.5. Mybatis框架
  1. 互联网行业通常使用Mybatis框架
  2. 不提供对象和关系模型的直接映射,属于半ORM框架。
1.2. SpringBoot2.x整合Mybatis框架
1.2.1. 整合Mybatis3.x
  1. 引入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>

Mybatis中文文档

  1. 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);
}
  1. 项目启动扫描参数
@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);
	}

}
  1. Service接口
public interface UserService {

    public int add(User2 user2);
}
  1. 实现类
@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;
    }

}
  1. 实体类
public class User2 {
    private int id;
    private String name;
    private String phone;
    private int age;
    private Date createTime;
  1. 接口
@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);
    }

}
  1. 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

欢迎关注
我的微信公众号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值