美文网首页
第一次用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