啊这个,很TM几把牛逼的,自动生成代码,第一次见到代码生成器,有点激动
IDEA-setting-plus里面下载,搜索easy code。下好安装好重启,配置一下数据库
这个只能用于mybatis,不能用于JPA
1、连接数据库,一键生成
- 右键-EasyCode-Genertate Code,
然后,就自动生成代码了
红框以内都是生成的。
2、注意
要运行,还要再DAO层加上@Mapper
或者在主程序中
@MapperScan("com.qiang.springbootvue.dao")
,里面扫描dao层的包
3、配置数据源
spring:
datasource:
url: jdbc:mysql://localhost:3306/jdbc?library=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&failOverReadOnly=false&serverTimezone=GMT%2B8
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver
initialization-mode: always
mybatis:
mapper-locations: classpath:/mapper/*Dao.xml
- 最后一个要导入啊,不然读取不到mapper层
4、说下具体流程
- 其有一个实体类entity。
- 一个dao层(接口类),这个dao层等于于mapper层,只不过这个接口里面全是写方法名,因为配置文件版的不写注解,写xml的。所以下面的mapper/xxxDao.xml 写了dao层里面的具体sql语句,mybatis的xml还在学学习当中
- 然后是service层,之前的service层我都以为是一个类就好了。但大佬说复杂项目的service层,都是service接口+ServiceImpl类的。service接口写方法名,ServiceImpl类调用dao层方法。
- 一个controller层,用于接受请求和返回数据。
- mapper/xxxDao.xml,还在学习语法中
下面都是这个例子的具体情况
1、BookDao
/**
* (Book)表数据库访问层
*
* @author makejava
* @since 2020-08-16 15:52:32
*/
public interface BookDao {
/**
* 通过ID查询单条数据
*
* @param id 主键
* @return 实例对象
*/
Book queryById(Integer id);
}
- 这接口,就真的只是写个名字而已。。
2、BookDao.xml
写具体sql语句
<?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.qiang.springbootvue.dao.BookDao">
<!-- 局部变量-->
<resultMap type="com.qiang.springbootvue.entity.Book" id="BookMap">
<result property="id" column="id" jdbcType="INTEGER"/>
<result property="name" column="name" jdbcType="VARCHAR"/>
<result property="author" column="author" jdbcType="VARCHAR"/>
</resultMap>
<!--查询单个-->
<!-- 如果resultMap是基本类型,就不用写resultMap -->
<select id="queryById" resultMap="BookMap">
select
id, name, author
from library.book
where id = #{id}
</select>
</mapper>
- 第1.2行都是照抄
- 第三行,就说这个xml是BookDao的mapper
- 接下来就是局部变量,
resultMap
返回的类型,都是Book类,取个名字BookMap,这样就不用打一大串东西 property
是java对象的属性,column
是表的属性,jdbcType
是表的属性类型select id="queryById"
,这个id对应BookDao层的方法名,Dao层写着返回类型为Book,这里resultMap就写Book
3、BookService
一个接口
/**
* (Book)表服务接口
*
* @author makejava
* @since 2020-08-16 15:52:34
*/
public interface BookService {
/**
* 通过ID查询单条数据
*
* @param id 主键
* @return 实例对象
*/
Book queryById(Integer id);
}
4、BookServiceImpl
写接口的具体方法
@Service("bookService")
public class BookServiceImpl implements BookService {
@Resource
// @Resource 注解和 @Autowired 一样,只不过@Autowired是spring的,@Resource是Java自带的
private BookDao bookDao;
/**
* 通过ID查询单条数据
*
* @param id 主键
* @return 实例对象
*/
@Override
public Book queryById(Integer id) {
return this.bookDao.queryById(id);
}
}
@Service
表明是Service层- @Resource 注解和 @Autowired 一样,只不过@Autowired是spring的,@Resource是Java自带的
- 调用Dao层的方法
5、BookController
@RestController
@RequestMapping("book")
public class BookController {
/**
* 服务对象
*/
@Resource
private BookService bookService;
/**
* 通过主键查询单条数据
*
* @param id 主键
* @return 单条数据
*/
@GetMapping("selectOne")
public Book selectOne(Integer id) {
return this.bookService.queryById(id);
}
}
传统艺能,常规操作