第一部分:使用注解方式
1.在pom.xml文件上添加依赖spring的mybatis依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- 添加MySQL依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>5.1.46</scope>
</dependency>
<!-- 添加JDBC依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!--mybatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
<!--mapper -->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>1.1.4</version>
</dependency>
2.在启动类上添加扫描
添加Mapper类
/**
* @author wufei
* @create 2018-09-10 15:26
**/
public interface BaseMapper<T> extends Mapper<T>, InsertMapper<T> {
}
@Mapper
public interface WfTestMapper<T> extends BaseMapper<WfTest>{
}
添加pojo类:
public class WfTest {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
添加service类以及实现类
public interface WfTestService {
public void save(WfTest wfTest);
}
@Service
public class WfTestServiceImpl implements WfTestService {
@Autowired
private WfTestMapper wfTestMapper;
@Override
public void save(WfTest wfTest) {
wfTestMapper.insert(wfTest);
}
}
测试,运行成功。
@SpringBootApplication
@MapperScan("com.think.csm.mapper") 注意,如果使用tkmapper,则这个不需要的,因为tkmapper已经添加了@mapper不需要在这扫描了
@ComponentScan("com.think.csm")
public class CsmApplication {
public static void main(String[] args) {
ConfigurableApplicationContext run = SpringApplication.run(CsmApplication.class, args);
WfTestService wfTestService = run.getBean(WfTestService.class);
WfTest wfTest = new WfTest();
wfTest.setId(1);
wfTest.setName("wftest");
wfTestService.save(wfTest);
}
}
第二步部分: 使用xml方式写sql
1.在添加application.properties上添加扫描配置
#注意:一定要对应mapper映射xml文件的所在路径
mybatis.mapper-locations=classpath:mybatis/mapper/*.xml
# 注意:对应实体类的路径
mybatis.type-aliases-package=com.think.csm.user.pojo
# 输出sql语句
logging.level.com.think.csm.user.mapper=debug
2.添加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 name="cacheEnabled" value="true" />
<!-- 全局启用或禁用延迟加载。当禁用时, 所有关联对象都会即时加载 -->
<setting name="lazyLoadingEnabled" value="true" />
<!-- 允许或不允许多种结果集从一个单独 的语句中返回(需要适合的驱动) -->
<setting name="multipleResultSetsEnabled" value="true" />
<!-- 使用列标签代替列名。 不同的驱动在这 方便表现不同。 参考驱动文档或充分测 试两种方法来决定所使用的驱动 -->
<setting name="useColumnLabel" value="true" />
<!-- 允许 JDBC 支持生成的键。 需要适合的 驱动。 如果设置为 true 则这个设置强制 生成的键被使用, 尽管一些驱动拒绝兼 容但仍然有效(比如
Derby) -->
<setting name="useGeneratedKeys" value="false" />
<!-- 配置默认的执行器。SIMPLE 执行器没 有什么特别之处。REUSE 执行器重用 预处理语句。BATCH 执行器重用语句 和批量更新 -->
<setting name="defaultExecutorType" value="SIMPLE" />
<!-- 设置超时时间, 它决定驱动等待一个数 据库响应的时间 -->
<setting name="defaultStatementTimeout" value="100" />
<setting name="safeRowBoundsEnabled" value="false" />
<setting name="mapUnderscoreToCamelCase" value="false" />
<setting name="localCacheScope" value="SESSION" />
<setting name="jdbcTypeForNull" value="OTHER" />
<setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString" />
<!--打印查询语句-->
<setting name="logImpl" value="STDOUT_LOGGING" />
</settings>
</configuration>
<?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="com.think.csm.user.mapper.WfTestMapper">
<select id="findById" resultType="com.think.csm.user.pojo.WfTest" parameterType="int">
select * from wf_test where `id` = #{id}
</select>
</mapper>
在WfTestMapper类上添加方法
public WfTest findById(@Param("id") int id);
在WfTestService上添加方法
public WfTest findById(int id);
在WfTestServiceImpl类上添加实现
@Override
public WfTest findById(int id) {
return wfTestMapper.findById(id);
}
测试类:
@SpringBootApplication
@MapperScan("com.think.csm.mapper")
@ComponentScan("com.think.csm")
public class CsmApplication {
public static void main(String[] args) {
ConfigurableApplicationContext run = SpringApplication.run(CsmApplication.class, args);
WfTestService wfTestService = run.getBean(WfTestService.class);
WfTest wfTest = new WfTest();
wfTest.setId(4);
wfTest.setName("wftest");
// wfTestService.save(wfTest);
WfTest byId = wfTestService.findById(1);
System.out.println(byId.getName());
}
}
整体目录结构: