在优锐课学习笔记中分享到MyBatis是用于高级映射和存储过程的SQL框架。
MyBatis是一个SQL映射框架,支持自定义SQL,存储过程和高级映射。
SpringBoot不为MyBatis集成提供官方支持,但是MyBatis社区为MyBatis构建了SpringBoot入门程序。
<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.0.0</version></dependency>
SpringBoot中创建的User.java,schema.sql和data.sql文件:使用JdbcTemplate
MyBatis SQL Mapper接口UserMapper.java,只需执行以下数据库操作即可:
package com.sivalabs.demo.domain;public interface UserMapper{ void insertUser(User user); User findUserById(Integer id); List<User> findAllUsers();}
Mapper XML文件,以定义对应Mapper接口方法的映射SQL语句的查询。
src / main / resources / com / sivalabs / demo / mappers /目录中创建UserMapper.xml文件,如下所示:
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.sivalabs.demo.mappers.UserMapper"> <resultMap id="UserResultMap" type="User"> <id column="id" property="id" /> <result column="name" property="name" /> <result column="email" property="email" /> </resultMap> <select id="findAllUsers" resultMap="UserResultMap"> select id, name, email from users </select> <select id="findUserById" resultMap="UserResultMap"> select id, name, email from users WHERE id=#{id} </select> <insert id="insertUser" parameterType="User" useGeneratedKeys="true" keyProperty="id"> insert into users(name,email) values(#{name},#{email}) </insert></mapper>
· Mapper XML中的命名空间应与Mapper接口的完全限定名称(FQN)相同
·
ID值应与Mapper接口方法名称相同。
·
bean属性名称不同,则可以使用<resultMap>配置在列名称及其对应的bean属性名称之间提供映射。
MyBatis还提供基于注释的查询配置,而无需Mapper XML。
UserMapper.java接口并使用注释配置映射的SQL,如下所示:
public interface UserMapper{ @Insert("insert into users(name,email) values(#{name},#{email})") @SelectKey(statement="call identity()", keyProperty="id", before=false, resultType=Integer.class) void insertUser(User user); @Select("select id, name, email from users WHERE id=#{id}") User findUserById(Integer id); @Select("select id, name, email from users") List<User> findAllUsers();}
SpringBoot MyBatis入门程序提供以下MyBatis配置参数,我们可以使用这些参数自定义MyBatis设置。
mybatis.config = mybatis config file namemybatis.mapperLocations = mappers file locationsmybatis.typeAliasesPackage = domain object's packagemybatis.typeHandlersPackage = handler's packagemybatis.check-config-location = check the mybatis configuration existsmybatis.executorType = mode of execution. Default is SIMPLE
mybatis.typeAliasesPackage=com.sivalabs.demo.domainmybatis.mapperLocations=classpath*:**/mappers/*.xml
SpringbootMyBatisDemoApplication.java。
@SpringBootApplication@MapperScan("com.sivalabs.demo.mappers")public class SpringbootMyBatisDemoApplication{ public static void main(String[] args) { SpringApplication.run(SpringbootMyBatisDemoApplication.class, args); }}
@MapperScan(“ com.sivalabs.demo.mappers”)注释指定在何处查找Mapper接口。
JUnit测试类并测试我们的UserMapper方法。
@RunWith(SpringJUnit4ClassRunner.class)@SpringApplicationConfiguration(SpringbootMyBatisDemoApplication.class)public class SpringbootMyBatisDemoApplicationTests{ @Autowired private UserMapper userMapper; @Test public void findAllUsers() { List<User> users = userMapper.findAllUsers(); assertNotNull(users); assertTrue(!users.isEmpty()); } @Test public void findUserById() { User user = userMapper.findUserById(1); assertNotNull(user); } @Test public void createUser() { User user = new User(0, "Siva", "siva@gmail.com"); userMapper.insertUser(user); User newUser = userMapper.findUserById(user.getId()); assertEquals("Siva", newUser.getName()); assertEquals("siva@gmail.com", newUser.getEmail()); }}
如果这个文章写得还不错,觉得有点东西的话 求点赞 求关注❤️ 求分享,感谢大家的支持和认可。
还有就是这我总结出了一些架构视频资料和互联网公司java程序员面试涉及到的绝大部分面试题和答案做成了文档和架构视频资料还有完整高清的java进阶架构学习路线图free分享给大家(包括Dubbo、Redis、Netty、zookeeper、Springcloud、分布式、高并发等架构技术资料),有问题的可以关注找我来交流