Spring Boot(四):MyBatis 整合

版权声明:本文为博主原创文章,非商用转载请注明出处: https://blog.csdn.net/qq_17058993/article/details/82413955

领导说用bootdo 学习发现需要springboot+MyBatis 需要学习了解MyBatis 大大简化sql语句的书写。记得刚踏入社会在wg的时候,写后台用到sql都是反复的打开关闭数据库,而且结果集合需要自己去写,代码超级多。

MyBatis的运行流程: 

一、Mybatis对JDBC的问题总结:

学习博客:MyBatis精简使用与配置

底层的原理学习,很受用。

数据库连接 :

问题:在用的时候打开数据库连接,在不用的时候关闭,频繁的开关和关闭,是一种资源的浪费

解决办法:利用连接池的方式连接数据库

Sql语句写在代码中:

问题:将sql写死在java代码中,不利于维护。一旦sql变更,需要重新编译java代码。 

解决办法:将sql写在配置文件中,让程序读取配置文件

结果集遍历 :

问题:将列名写死在代码中,而且,需要人工的去封装称实体层对象,开发很繁琐。

解决办法: 通过某中机制,将从数据库查询出来的结果,自动的封装到实体类的对象中去


二、纯净MyBatis 配置

学习博客:MyBatis框架教程「入门起步」

1、我的项目目录:

2、引入jar包:

① mybatis-3.4.6.jar

② sqljdbc4.jar

添加方法:

3、main入口

程序的入口,加载核心配置文件,创建sqlsession工厂,生产sqlsession,执行sql语句

public class MyBatisTest {

    public static void main(String[] args) {

        SqlSession sqlSession = null;
        
        try {
            //加载核心配置文件
            InputStream is = Resources.getResourceAsStream("com/sample/mybatis-config.xml");

            //创建sqlsession工厂 -->相当于connection
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);

            //获取sqlsession -->相当于执行sql语句对象
            sqlSession = sqlSessionFactory.openSession();

            //执行sql
//            Map<String, Object> map = sqlSession.selectList("com.sample.TUser.load");
//            System.out.println("map:" + map);

            System.out.println("list:" + sqlSession.selectList("com.sample.TUser.load"));

        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            if (sqlSession != null) {
                sqlSession.close();
            }
        }
    }
}

4、mybatis-config.xml 

核心配置文件,包括数据库配置,这里使用sqlserver。 加载映射文件 也就是写的sql语句

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTDConfig 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

    <!-- 配置环境 -->
    <environments default="hello">
        <environment id="hello">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
                <property name="url" value="jdbc:sqlserver://localhost:1433;databaseName=student"/>
                <property name="username" value="sa"/>
                <property name="password" value="Wang8087266"/>
            </dataSource>
        </environment>
    </environments>

    <!-- 加载映射文件 sql语句 -->
    <mappers>
        <mapper resource="com/sample/TestMapper.xml" />
    </mappers>
</configuration>

5、TestMapper.xml

sql语句部分 namespace要与实体类对应起来 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTDMapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.sample.TUser">
    <!-- 通过id返回数据 -->
    <select id="load" resultType="map">
     select * from T_user where 1=1
    </select>
</mapper>

6、entity:TUser 

实体类

public class TUser {

  private Integer id;
  private String name;

  public Integer getId() {
    return id;
  }
  public void setId(Integer id) {
    this.id = id;
  }
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }

}

7、打印输出结果


三、springboot 整合 MyBatis 

学习博客:springboot整合mybatis

 

1、用IDEA创建集合MyBatis的springboot工程

这里选择 Gradle ,以前用AS写Android习惯了。

最后选择完需要的插件

2、创建完成的项目目录

3、程序运行main入口

SpringbootMybatisApplication

注意这里添加的 扫描的mapper

@MapperScan("com.weihao.springbootmybatis.mapper")  //扫描的mapper
@SpringBootApplication
public class SpringbootMybatisApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootMybatisApplication.class, args);
    }
}

4、UserMapper 

数据库操作语句

@Repository
public interface UserMapper {
    List<TUser> getUser();
}

5、核心配置文件 运行默认扫描 application.properties

主要添加 MyBatis配置 (实体类、mapper配置文件)

## Mybatis 配置
mybatis.typeAliasesPackage=com.weihao.springbootmybatis.entity
mybatis.mapperLocations=classpath:mapper/*.xml
mybatis.configuration.map-underscore-to-camel-case=true



# 定位页面的目录到static/下 (返回静态Html)
spring.mvc.view.prefix=/
spring.mvc.view.suffix=.html


## 使用模版返回页面 (不是必须的 springboot默认就是从template中查询页面)
# 定位模板的目录
#spring.mvc.view.prefix=classpath:/templates/
# 给返回的页面添加后缀名
#spring.mvc.view.suffix=.html


##数据库地址
spring.datasource.url=jdbc:sqlserver://localhost:1433;databaseName=student
##数据库用户名
spring.datasource.username=sa
##数据库密码
spring.datasource.password=Wang8087266
##数据库驱动
spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver

6、SQL语句

entity实体类忽略不介绍了,主要是 UserMapper.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="com.weihao.springbootmybatis.mapper.UserMapper">

    <select id="getUser" resultType="TUser">
        SELECT * FROM T_user where 1=1
    </select>

</mapper>

7、UserService 

相当于impl,实现类。

@Service
public class UserService {

    @Autowired
    private UserMapper userMapper;

    public List<TUser> getUser() {
        return userMapper.getUser();
    }
}

8、UserController 

请求控制类

@Controller
public class UserController {

    @Autowired
    private UserService userService;

    @RequestMapping("/")
    @ResponseBody
    public List<TUser> getUser() {

        System.out.println("getUser");

        return userService.getUser();
    }

}

9、浏览器输出结果

猜你喜欢

转载自blog.csdn.net/qq_17058993/article/details/82413955