SpringBoot | 第三十五章:Mybatis的集成和使用 (2)

2.指定mapper扫描包路径,使用注解@MapperScan

/** * mybaits配置 * @author oKong * */ @Configuration @MapperScan("cn.lqdev.learning.springboot.chapter35.biz.mapper")//mapper地址 public class MybatisConfig { }

注意:若使用Druid进行数据连接池管理,也可以在此类中进行DataSource的相关配置。

3.编写测试类进行测试。

/** * 测试类 * @author oKong * */ @RunWith(SpringRunner.class) @SpringBootTest @ActiveProfiles("anno") @Slf4j public class UserMapperTest { @Autowired UserMapper userMpper; @Test public void testInsert() { User user = new User(); user.setCode("002"); user.setName("name002"); user.setStatus(StatusEnum.ENABLE); //新增 userMpper.insert(user); } @Test public void testQueryOne() { User user = userMpper.queryOne(1L); log.info("id为1的查询结果为:{}", user); } @Test public void testUpdate() { User user = new User(); user.setCode("002"); user.setName("testUpdate"); user.setStatus(StatusEnum.ENABLE); userMpper.insert(user); User userUpd = userMpper.queryOne(user.getId()); userUpd.setName("更新name"); userMpper.update(userUpd); Assert.assertEquals("更新失败",userUpd.getName(), userMpper.queryOne(user.getId()).getName()); } @Test public void testParamSelect() { String code = "002"; List<User> list = userMpper.queryByParams(code); log.info("查询编码为002,查询结果为:{}条,结果集为:{}",list.size(), Arrays.toString(list.toArray())); } }

运行测试用例后,就可以看见效果了。

SpringBoot | 第三十五章:Mybatis的集成和使用

具体控制台输出就输出了,可下载源码自行测试下。

xml方式

0.配置xml版的mapper。

/** * xml映射 * @author oKong * */ public interface UserXmlMapper { User queryOne(Long id); int insert(User user); void update(User user); void delete(Long id); List<User> queryByParams(@Param("code")String code); }

没啥区别,就是讲sql语句放入到了xml中进行编写而已。

1.编写mapper.xml配置映射文件。

<?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="cn.lqdev.learning.springboot.chapter35.biz.mapper.UserXmlMapper"> <!-- 配置返回类型 --> <resultMap type="User"> <result column="id" property="id"/> <result column="code" property="code"/> <result column="name" property="name"/> <result column="status" property="status"/> <result column="gmt_create" property="gmtCreate" jdbcType="DATE"/> <result column="gmt_modified" property="gmtModified" jdbcType="DATE"/> </resultMap> <!-- 通用查询结果列 --> <sql> id, code, name, status, gmt_create, gmt_modified </sql> <select resultMap="userResultMap"> select <include refid="Base_Column_List"></include> from user where id = #{id} </select> <!-- 返回主键id --> <insert parameterType="User" keyProperty="id" useGeneratedKeys="true"> insert into user(code,name,status) values(#{code},#{name}, #{status}) <!-- insert into user(code,name,status) values(#{code},#{name}, #{status, typeHandler=org.apache.ibatis.type.EnumOrdinalTypeHandler}) --> </insert> <update parameterType="User"> update user set code=#{code}, name = #{name}, status = #{status} where id=#{id} </update> <delete> delete from user where id=#{id} </delete> <select resultMap="userResultMap"> select <include refid="Base_Column_List"></include> from user where code = #{code} </select> </mapper>

2.mybatis配置文件。

mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!--全局配置--> <settings> <!-- 这个配置使全局的映射器启用或禁用缓存 --> <setting value="true"/> <!-- 全局启用或禁用延迟加载。当禁用时,所有关联对象都会即时加载 --> <setting value="false"/> <setting value="true"/> <setting value="true"/> <setting value="REUSE"/> <setting value="25000"/> <setting value="true"/> <setting value="true"/> </settings> <typeHandlers> <!-- 枚举类 --> <typeHandler handler="org.apache.ibatis.type.EnumOrdinalTypeHandler" javaType="cn.lqdev.learning.springboot.chapter35.biz.entity.StatusEnum"/> </typeHandlers> </configuration>

对于特殊的类型,可以通过typeHandlers进行配置。稍后章节也会讲解想通过其他的方式进行配置。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zywfyd.html