Spring Boot 引入 MyBatis

简介
什么是mybatis?
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

安装
1.首先创建一个Spring Boot项目
2.通过maven引入mybatis

org.mybatis.spring.boot
mybatis-spring-boot-starter
2.0.1

4.从XML中构建SqlSessionFactory
每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先定制的 Configuration 的实例构建出 SqlSessionFactory 的实例。

从 XML 文件中构建 SqlSessionFactory 的实例非常简单,建议使用类路径下的资源文件进行配置。 但是也可以使用任意的输入流(InputStream)实例,包括字符串形式的文件路径或者 file:// 的 URL 形式的文件路径来配置。MyBatis 包含一个名叫 Resources 的工具类,它包含一些实用方法,可使从 classpath 或其他位置加载资源文件更加容易。

String resource = “org/mybatis/example/mybatis-config.xml”;
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
XML 配置文件中包含了对 MyBatis 系统的核心设置,包含获取数据库连接实例的数据源(DataSource)和决定事务作用域和控制方式的事务管理器(TransactionManager)。 XML 配置文件的详细内容后面再探讨,这里先给出一个简单的示例:

<?xml version="1.0" encoding="UTF-8" ?> 当然,还有很多可以在 XML 文件中进行配置,上面的示例指出的则是最关键的部分。 要注意 XML 头部的声明,它用来验证 XML 文档正确性。environment 元素体中包含了事务管理和连接池的配置。mappers 元素则是包含一组映射器(mapper),这些映射器的 XML 映射文件包含了 SQL 代码和映射定义信息。 5.不使用XML构建SqlSessionFactory 如果你更愿意直接从 Java 代码而不是 XML 文件中创建配置,或者想要创建你自己的配置构建器,MyBatis 也提供了完整的配置类,提供所有和 XML 文件相同功能的配置项。

DataSource dataSource = BlogDataSourceFactory.getBlogDataSource();
TransactionFactory transactionFactory = new JdbcTransactionFactory();
Environment environment = new Environment(“development”, transactionFactory, dataSource);
Configuration configuration = new Configuration(environment);
configuration.addMapper(BlogMapper.class);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);
注意该例中,configuration 添加了一个映射器类(mapper class)。映射器类是 Java 类,它们包含 SQL 映射语句的注解从而避免依赖 XML 文件。不过,由于 Java 注解的一些限制以及某些 MyBatis 映射的复杂性,要使用大多数高级映射(比如:嵌套联合映射),仍然需要使用 XML 配置。有鉴于此,如果存在一个同名 XML 配置文件,MyBatis 会自动查找并加载它(在这个例子中,基于类路径和 BlogMapper.class 的类名,会加载 BlogMapper.xml)。具体细节稍后讨论。
使用
1.创建于数据库对应的实体类

public class Test implements Serializable {

private Integer id;

private String name;

private Integer age;

/** 省略get set方法 **/

@Override
public String toString() {
    return "Test{" +
            "id=" + id +
            ", name='" + name + '\'' +
            ", age=" + age +
            '}';
}

}

2.创建Dao
1.使用注解的方式实现增删改查

@Component
@Mapper
@Repository
public interface TestDao {

@Insert("insert into test(name,age) values(#{name},#{age})")
int addTest(Test test);

@Update("update test set name=#{name},age=#{age} where id=#{id}")
int updateTest(@Param("name")String name,@Param("age")int age,@Param("id")int id);

@Delete("delete from test where id=#{id}")
int deleteTestById(@Param("id")int id);

@Select("select * from test where id = #{id}")
Test findTestById(@Param("id")int id);

}
简单的语句只需要使用@Insert、@Update、@Delete、@Select这4个注解即可,动态SQL语句需要使用@InsertProvider、@UpdateProvider、@DeleteProvider、@SelectProvider等注解。具体可参考MyBatis官方文档:http://www.mybatis.org/mybatis-3/zh/

2.使用xml配置的方式
配置扫描路径

mybatis:
mapper-locations: classpath:mapper/*.xml
property:
order: BEFORE

<?xml version="1.0" encoding="UTF-8"?>
<insert id="insetTest" parameterType="cn.shuibo.domain.Test">
    INSERT INTO test(
    name,
    age,
    )
    VALUES(
    #{name},
    #{age})
</insert>

<update id="updateTest"  parameterType="cn.jiaren.domain.Test">
    update test
    <set>
        <if test="name!=null and name!=''">
            name = #{name},
        </if>
        <if test="age!=null and age!=''">
            age = #{age}
        </if>
    </set>
    where id = #{id}
</update>

<select id="getTest" resultMap="BaseResultMap">
  select * from test
</select>

<select id="getTestById" parameterType="int" resultType="cn.shuibo.domain.Test">
    select * from test where id=#{id}
</select>

<delete id="deleteTestByIds" parameterType="int">
    delete from test where id=#{id}
</delete>
**测试 1.编写service** public interface TestService {
Test findTestById(int id);

int addTest(Test test);

int updateTest(String name,int age,int id);

int deleteTestById(int id);

Test getTestById(int id);

}
2.编写service实现

@Service(“testService”)
public class TestServiceImpl implements TestService {

@Autowired
private TestDao testDao;

@Override
public Test findTestById(int id) {
    return testDao.findTestById(id);
}

@Override
public int addTest(Test test) {
    return testDao.addTest(test);
}

@Override
public int updateTest(String name, int age, int id) {
    return testDao.updateTest(name,age,id);
}

@Override
public int deleteTestById(int id) {
    return testDao.deleteTestById(id);
}

@Override
public Test getTestById(int id) {
    return testDao.getTestById(id);
}

}
3.编写controller

@RestController
public class TestController {

@Autowired
private TestService testService;

@RequestMapping(value = "/test", method = RequestMethod.GET)
public String getTest(){
    Test test = testService.findTestById(1);
    return test.toString();
}

@RequestMapping(value = "/test1", method = RequestMethod.GET)
public String getTest1(){
    Test test = testService.getTestById(1);
    return test.toString();
}

}
在这里插入图片描述
Test{id=1, name=‘jiaren.cn’, age=18}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot + MyBatis可以通过注解和自动配置来简化SSM框架的配置,具体步骤如下: 1. 引入依赖:在pom.xml文件中添加Spring BootMyBatis的依赖,例如: ``` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.3</version> </dependency> ``` 2. 配置数据源:在application.properties或application.yml文件中配置数据源,例如: ``` spring.datasource.driverClassName=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8 spring.datasource.username=root spring.datasource.password=root ``` 3. 配置MyBatis:在启动类中添加@MapperScan注解,指定Mapper接口所在的包路径,例如: ``` @SpringBootApplication @MapperScan("com.example.demo.mapper") public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } ``` 4. 编写Mapper接口和Mapper XML文件:在Mapper接口中添加@Mapper注解,编写SQL语句,在Mapper XML文件中配置SQL语句和结果映射,例如: ``` @Mapper public interface UserMapper { @Select("select * from user") List<User> findAll(); } ``` ``` <select id="findAll" resultType="com.example.demo.pojo.User"> select * from user </select> ``` 通过以上配置,就可以实现Spring Boot + MyBatis的简化SSM框架。在以上配置中,Spring Boot提供了自动配置和默认配置,可以省去很多繁琐的配置工作,同时还可以提高开发效率和代码可读性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值