1、MyBatis介绍
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis,实质上Mybatis对ibatis进行一些改进。
MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。
Mybatis通过xml或注解的方式将要执行的各种statement(statement、preparedStatemnt、CallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回。
mybatis初期使用比较麻烦,需要各种配置文件、实体类、dao层映射关联、还有一大推其它配置。当然mybatis也发现了这种弊端,初期开发了generator可以根据表结果自动生产实体类、配置文件和dao层代码,可以减轻一部分开发量;后期也进行了大量的优化可以使用注解了,自动管理dao层和配置文件等,发展到最顶端就是今天要讲的这种模式了,mybatis-spring-boot-starter就是springboot+mybatis可以完全注解不用配置文件,也可以简单配置轻松上手。
2、整合
(1)在pom.xml里加入以下代码
<dependency>
<groupId>org.mybatis.spring.bootgroupId>
<artifactId>mybatis-spring-boot-starterartifactId>
<version>1.3.1version>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<scope>runtimescope>
dependency>
会自动下载相关的包
(2)application.properties 添加相关配置
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=root
mybatis.mapper-locations=classpath:/mapper/*Mapper.xml
mybatis.type-aliases-package=com.twj.login
3、创建数据库
创建user表(直接用上次的)
编写实体类
4、注册
@RequestMapping("/regist")
public String save(UserPO userPO,RedirectAttributes attributes) {
// 获取用户名
String name=userPO.getName();
UserPO user=userService.getName(name);
if(null!=user){
attributes.addFlashAttribute("mess","用户名已被注册");
return "redirect:";
}
userService.save(userPO);
return "success";
}
获取用户名,检查用户名是否为空(userService.getName(name);)
根据userService.getName(name);到
@Override
public UserPO getName(String name) {
return userDao.getName(name);
}
由此到UserPO getName(String name);
重点来了 我标红一下
以往UserPO findByName(String name);可直接查询
用mybatis则
<select id="getName" parameterType="java.lang.String" resultType="UserPO">
select name,password,sex,age from USER where name=#{name};
select>
Sql直接写在mapper.xml中
新增和根据用户名和密码查询也都类似。
上面所说是mybatis是xml配置方法。
下面说下注解的方法
UserPO getName(String name);则
@Select("select * from user where name = #{name}")
UserPo getName(String name);
void insert(UserPO userPO);
@Insert("insert into user(name,password,age,sex) values(#{name},#{password},#{age},#{sex})”)
void insert(UserPO userPO);
UserPO getUser(@Param(value = "name") String name, @Param(value = "password") String password);
@Select("SELECT name,password,sex,age FROM USER WHERE NAME=#{name} AND PASSWORD=#{password}”)
UserPO getUser(@Param(value = "name") String name, @Param(value = "password") String password);
5、联表查询
比如查看文章详情时候,想查找发布人信息,文章表通过user_id与user表相关联
并相应个get和set方法。
Dao里面直接根据文章id去查询,
对应的NewsMapper.xml则如下