版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lyhkmm/article/details/78270538
MyBatis介绍
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。具体可参考:Hibernate与Mybatis对比
无配置文件注解环境配置
1、这里使用的是无配置文件注解,使用注释不需要配置任何映射文件,添加相关依赖到pom.xml
<dependencies> <!--核心模块,包括自动配置支持、日志和YAM--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <!--测试模块,包括JUnit、Hamcrest、Mockito--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!--支持web的模块--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--支持mybatis和mysql的模块--> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.1.1</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency> </dependencies>
2、数据库的相关配置,准备好mysql数据库的环境,将数据库的相关信息写的配置文件中
配置文件目录:src\main\resources\application.properties
mybatis.type-aliases-package=com.lyh.demo.entity spring.datasource.driverClassName = com.mysql.jdbc.Driver spring.datasource.url = jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=utf-8 spring.datasource.username = root spring.datasource.password = 950321
3、创建实体类 UserEntity
实体类路径为:src\main\java\com\lyh\demo\entity\UserEntity.java
package com.lyh.demo.entity; import java.io.Serializable; public class UserEntity implements Serializable{ private long id; private String userName; private String password; public long getId() { return id; } public void setId(long id) { this.id = id; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return "UserEntity{" + "id=" + id + ", userName='" + userName + '\'' + ", password='" + password + '\'' + '}'; } }
4、创建dao层Mapper类
路径为:src\main\java\com\lyh\demo\mapper\UserMapper.java
package com.lyh.demo.mapper; import com.lyh.demo.entity.UserEntity; import org.apache.ibatis.annotations.*; import java.util.List; public interface UserMapper { @Select("SELECT * FROM user") @Results({ @Result(property = "userName", column = "userName") }) List<UserEntity> getAll(); @Insert("INSERT INTO user(id,userName,password) VALUES(#{id},#{userName},#{password})") void insert(UserEntity user); @Update("UPDATE user SET userName=#{userName} WHERE id =#{id}") void update(UserEntity user); @Delete("DELETE FROM user WHERE id =#{id}") void delete(Long id); }
@Select 查询数据的注解。@Result 修饰返回的结果集,关联实体类属性和数据库字段,如果实体类属性和数据库属性名保持一致,可以不需要。@Insert 插入数据库使用,直接传入实体类会自动解析属性到对应的值。@Update 修改数据,直接传入实体类会自动解析属性到对应的值。@delete 删除数据。
5、创建控制层UserController类
路径为:src\main\java\com\lyh\demo\controller\UserController.java。这里就只写查询数据的方法,其它增删改的方法也是类似的写法,这里就不一一列出了。
package com.lyh.demo.controller; import com.lyh.demo.mapper.UserMapper; import com.lyh.demo.entity.UserEntity; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; @RestController public class UserController { @Autowired private UserMapper userMapper; @RequestMapping("/getUsers") public String getUsers(){ List<UserEntity> users=userMapper.getAll(); return users.toString(); } }
6、创建数据库表结构
sql语句如下:
CREATE TABLE `user` ( `id` bigint(20) DEFAULT NULL, `userName` varchar(20) DEFAULT NULL, `password` varchar(20) DEFAULT NULL ) ; INSERT INTO `user` VALUES ('1', '用户1', '123456'); INSERT INTO `user` VALUES ('2', '用户2', '123456');
项目结构如下图所示
7、运行
运行DemoApplicatio后访问http://localhost:8080/getUsers,浏览器页面输出结果如下图:
使用配置文件搭建环境
1、pom.xml和上面一样,只是修改application.properties,添加以下配置,其中基础配置文件为mybatis-config.xml和实体类映射文件的地址*.xml,注意classpath的路径为:resource下
mybatis.config-locations=classpath:mybatis/mybatis-config.xml mybatis.mapper-locations=classpath:mybatis/mapper/*.xml
2、mybatis-config.xml如下:
<configuration> <typeAliases> <typeAlias alias="Integer" type="java.lang.Integer" /> <typeAlias alias="Long" type="java.lang.Long" /> <typeAlias alias="HashMap" type="java.util.HashMap" /> <typeAlias alias="LinkedHashMap" type="java.util.LinkedHashMap" /> <typeAlias alias="ArrayList" type="java.util.ArrayList" /> <typeAlias alias="LinkedList" type="java.util.LinkedList" /> </typeAliases> </configuration>
3、userMapper.xml如下:
<mapper namespace="com.lyh.demo.mapper.UserMapper" > <resultMap id="ResultMap" type="com.lyh.demo.entity.UserEntity" > <id column="id" property="id" jdbcType="BIGINT" /> <result column="userName" property="userName" jdbcType="VARCHAR" /> <result column="password" property="password" jdbcType="VARCHAR" /> </resultMap> <sql id="List" > id, userName, password, user_sex, nick_name </sql> <select id="getAll" resultMap="ResultMap" > SELECT <include refid="List" /> FROM users </select> </mapper>
4、dao层的接口:
public interface UserMapper { List<UserEntity> getAll(); }
总结
无配置文件注释和配置文件这两种各有各的优点,注释适用于微服务,配置文件适用于更负责的传统应用,具体根据sql的复杂程度选择。
GitHub地址:https://github.com/lyhkmm/spring-boot-examples/tree/master/spring-boot-mybatis