Mybatis的配置与使用

Mybatis的优点

1、  通过直接编写SQL语句,可以直接对SQL进行性能的优化;

2、  学习门槛低,学习成本低。只要有SQL基础,就可以学习mybatis,而且很容易上手;

3、  由于直接编写SQL语句,所以灵活多变,代码维护性更好。

4、  不能支持数据库无关性,即数据库发生变更,要写多套代码进行支持,移植性不好。

项目目录结构为图中画红色方框的,其它的为上一次作业的所写代码

 

 

Mybatis的配置

全局配置文件 :SqlMapConfig.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE configuration
 3 PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 4 "http://mybatis.org/dtd/mybatis-3-config.dtd">
 5 
 6 <configuration>
 7     <environments default="development">
 8         <environment id="development">
 9             <!-- 配置JDBC事务,此事务由mybatis管理  -->
10             <transactionManager type="JDBC"></transactionManager>
11             <!-- 数据库连接池 -->
12             <dataSource type="POOLED">
13                 <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
14                 <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false&amp;serverTimezone=UTC"/>
15                 <property name="username" value="root"/>
16                 <property name="password" value="root"/>
17             </dataSource>
18         </environment>
19     </environments>    
20     <mappers>
21         <mapper resource="User.xml"/>
22         <package name="com.my.dao"/>
23     </mappers>
24 </configuration>

实体Bean:User.java

package com.my.dao;

public class User {
    private int id;
    private String username;
    private String password;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    @Override
    public String toString() {
        return "User [id=" + id + ", username=" + username + ", password=" + password + "]";
    }
    
}

配置mybatis中的User.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="test">
    <select id="findUserById" parameterType="int" resultType="com.my.dao.User">
        SELECT * FROM USER WHERE id=#{id}
    </select>
    <insert id="addUser" parameterType="com.my.dao.User">
        insert into user(username,password) value(#{username},#{password})
    </insert>
</mapper>

测试类:MybatisTest.java

package xiangmu;

import java.io.IOException;
import java.io.InputStream;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

import com.my.dao.User;

public class MybatisTest {
    @Test
    public void findUserById() throws IOException {
        //mybatis配置文件路径
        String resource="SqlMapConfig.xml";
        //得到配置文件流
        InputStream stream = Resources.getResourceAsStream(resource);
        //创建session工厂
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(stream);
        //得到sqlsession
        SqlSession sqlSession = sqlSessionFactory.openSession();
        System.out.println(sqlSession);
        //第一个参数:映射文件User.xml中的全路径id,即namespace.id
        //第二个参数:传入的参数,该类型必须与User.xml中的parameterType的类型一致
        User user = sqlSession.selectOne("test.findUserById", 1);
        System.err.println(user);
    }
}

数据库的内容为:

 运行结果如下

 总结

  学会了如何使用mybatis

  本次实验的数据库jar包是基于8.x以上进行的

  在mapper中配置insert语句时无需resultType属性

 

posted @ 2019-04-22 20:55  QAQqiulin  阅读(193)  评论(0编辑  收藏  举报