美文网首页
第一次用MyBatis

第一次用MyBatis

作者: Chowing | 来源:发表于2018-08-06 10:05 被阅读0次

以前我们都是用jdbc来将我们的java程序与数据库相连接,而MyBatis是对jdbc的一个封装。

MyBatis框架的引入

JDBC的问题:

  • 数据库连接频繁创建、关闭,浪费数据库的资源,影响操作效率。
    解决方法:使用数据库连接池如c3p0.
  • 改sql就要改java代码,然后需要重新编译,不易维护。
    解决方法:将sql语句统一配置在文件中,就不需要改java
  • 我们通过preparedStatement对象向占位符设置参数,系统不易维护。
    解决方法:将sql中的占位符及对应的参数类型配置在配置文件中,能自动输入的映射。
    4.遍历查询结果集存在硬编码(列名)。解决方法:自动进行sql查询结果向java对象的映射(输出映射)。
    为了解决这些问题,所以出现了MyBatis框架。

MyBatis介绍

通过xml或注解的方式将要执行的各种statement配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回。

1、准备开发环境

导入jar包:mybatis-3.1.1.jar(低于这个版本的jar包需要导入很多依赖包)和mysql-connection-java,创建数据库和相应的表,SQL脚本如下:

create database mybatis;
use mybatis;
create table user(
id int primary key auto_increment,
username varchar(50),
birthday date,
sex varchar(20),
address carchar(50)
);
insert into user values(null,'xxw','1996-10-17','male',null);
insert into user values(null,'wyr','1997-04-24','female',null);

2、使用MyBatis查询表中数据(通过id查询)

添加Mybatis的配置文件SqlMapConfig.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>
    <environments default="development">
        <environment id="development">
            <!-- 使用jdbc事务管理 -->
            <transactionManager type="JDBC"/>
            <!-- 数据库连接池 -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/数据库名字?characterEncoding=utf-8"/>
                <property name="username" value="账号"/>
                <property name="password" value="密码"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="userMapper.xml"/>
    </mappers>
</configuration>

定义表所需要的实体类User.java

public class User{
    private int id;
    private String username;
    private Date birthday;
    private String sex;
    private String address;
    //getter and setter and toString()
}

定义操作user表的sql映射文件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="chowing">
    <select id="findUserById" parameterType="int" resultType="User">
        select * from user where id = #{id}
    </select>
</mapper>

在SqlMapConfig文件中注册User.xml文件,添加一个<mappers></mappers>字段,并在里面传入User.xml文件路径。

<configuration>
    .....
    <mappers>
        <mapper resource="userMapper.xml"/>
    </mappers>
</configuration>

接下来我们借助junit.jar包来编写的测试类

public class MyBatisFirst {
    private SqlSessionFactory sqlSessionFactory;
    @Before
    public void init() throws IOException {
        sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("SqlMapConfig.xml"));
    }
    @Test
    public void testFinMemberById() {
        SqlSession sqlSession = sqlSessionFactory.openSession();
        User user = null;
            try {
                user = sqlSession.selectOne("chowing.findUserById", "1");
            } catch (Exception e) {
                e.printStackTrace();
            }
        sqlSession.close();
    }
}

相关文章

网友评论

      本文标题:第一次用MyBatis

      本文链接:https://www.haomeiwen.com/subject/iuvmvftx.html