1 关于SpringBoot
SpringBoot是一个基于Spring框架的快速开发的脚手架,它能够帮助我们开发者快速搭建项目环境,并提供了一些建议的配置方式,降低了开发者程序的开发和部署难度。
2 关于MyBatis
2.1 MyBatis概述
MyBatis是Java的持久化框架,目的是为了使操作数据库更加方便、灵活、高效。可以通过Java注解和XML文件来映射Java对象和SQL语句,提供了非常灵活的SQL编写方式和动态SQL语句的创建方式,可以与Spring框架结合使用。
2.2 MyBatis核心思想
将Java对象和数据库操作分离,通过注解和XML映射文件映射到数据库的字段上,并提供相应的API来操作数据库。可以自动将SQL语句转为JDBC代码,并根据指定的返回值类型生成对应的结果提供给开发者使用。
2.3 MyBatis使用流程
配置MyBatis环境 在pom.xml中添加相关依赖:MyBatis Framework 和 MySQL Driver 配置文件中配置数据库的连接信息(application.properties)
spring.datasource.url=jdbc:mysql://localhost:3306/blog?characterEncoding=utf8&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=root
定义pojo类,和数据表做好映射关系 编写Dao层接口,在接口中定义操作数据库的方法,在注解或者XML文件中实现具体的SQL语句。
@Mapper
public interface UserMapper {
@Insert ( "INSERT INTO user VALUES(NULL,#{username})" )
int insert ( User user) ;
}
使用
@Autowired
private UserMapper userMapper
userMpper. insert ( . . . )
3 MyBatis配置SQL方式
3.1 基于注解方式
3.1.1 说明
基于注解方式省去了配置XML文件的编写工作,并且可以很方便的完成一些 简单的 CRUD操作,但是对于一些复杂的SQL语句使用起来会很冗余。
3.1.2 使用流程
(maven工程)在pom.xml中添加MyBatis和MySQL相关的依赖 在配置文件中(application.properties)配置数据库的连接信息 创建实体类,和数据库中的表做好对应关系 配置Mapper接口,在接口中添加@Mapper注解,告诉底层为此接口创建实现类,在实现类中定义数据访问的逻辑,执行与数据库的会话 在接口中定义方法,在方法上使用注解标注SQL语句的类型,可以使用的注解有:@Insert、@Dlelete、@Update、@Select 如果SQL语句中涉及到多个参数,可以使用@Param注解给每个参数取名。 自动装配并在应用程序中使用即可
@Autowired
private XxxMapper xxxMapper;
xxxMapper. 接口中的方法( 参数. . . ) ;
3.1.3 常用注解
@Insert(“SQL”) @Dlelete(“SQL”) @Update(“SQL”) @Select(“SQL”)
3.2 基于XML方式
3.2.1 相比注解优势
更好的可读性 XML文件具有良好的结构和语义,可以使JAVA代码和SQL语句彻底分离,便于管理和优化。注解配置SQL语句可能使JAVA代码变的冗长。 更好的复用性 将SQL语句写入XML文件中,通过 和标签 将重复的SQL抽取并引用,从而提高了SQL语句的复用性。 更好的支持动态SQL 动态SQL语句是根据运行时的参数来生成的SQL,复杂性较高,使用XML文件更加方便。
3.2.2 使用流程
添加依赖:pom.xml 配置数据源:application.propertis 配置xml文件的扫描路径:application.properties 创建实体类,做好和数据表的对应关系 定义接口,添加@Mapper注解,并定义接口中的方法 创建xml文件,使用标签配置SQL 装配使用
@Autowired
private XxxMapper xxxMapper;
xxxMapper. 接口方法( 参数. . . ) ;
3.2.3 常用标签
insert标签 delelte标签 update标签 select标签 使用select标签需要指定 resultType 的属性值 foreache标签:用于动态删除
< delete id = " xxx" >
DELETE FROM xxx WHERE id in(
< foreache collection = " 对象类型" item = " 变量名" separator = " 分隔符" >
#{变量名}
</ foreache>
)
</ delete>
< update id = " xxx" >
UPDATE xxx
< set>
< if test = " 属性名!=null" > 字段名=#{属性名},</ if>
< if test = " 属性名!=null" > 字段名=#{属性名},</ if>
< if test = " 属性名!=null" > 字段名=#{属性名}</ if>
</ set>
</ update>
sql标签和include标签:用于SQL语句的复用
< sql id = " selectSql" >
SELECT * FROM xxx
</ sql>
< select id = " xxx" resultType = " xxx" >
< include refid = " selectSql" > </ include>
</ select>
< select id = " yyy" resultType = " yyy" >
< include refid = " selectSql" > </ include> WHERE id> 5
</ select>