0


idea中mybatis配置

1、prom.xml中导入坐标

        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.5</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.46</version>
        </dependency>

2、在resources文件夹下新建mybatis-config.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>
    <properties resource="jdbc.properties">

    </properties>

    <!--起别名-->
    <typeAliases>
        <package name="com.wk.entity"/>
    </typeAliases>

    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="${url}"/>
                <property name="username" value="root"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <!--扫描mapper-->
        <package name="com.wk.dao"/>
    </mappers>
</configuration>

3、在resources资源包下新建jdbc.properties文件存储值

url=jdbc:mysql://localhost:3306/test?characterEncoding=utf8&useSSL=false
uname=root
password=123
driver=com.mysql.jdbc.Driver

4、包结构

5、在dao包下新建一个类dao接口(TeacherDao)存放数据库操作

public interface TeacherDao {
//       @Select("select * from teacher")
    //查询所有教师信息
    List<Teacher> selectAllTeacher();
    //增加一个教师信息
    int addTeacher(Teacher teacher);
    //更改教师信息
    int updateTeacher(Teacher teacher);
    //删除教师信息
    int deleteTeacherById(Integer id);
}

6、 在resources包下建com/wk/dao包(显示为com.wk.dao)

新建TeacherDao.xml与dao包中的TeacherDao一一对应

<?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.wk.dao.TeacherDao">
    <insert id="addTeacher">
        insert into teacher (t_name,phone) values (#{teachername},#{phone})

    </insert>
    <update id="updateTeacher">
        update teacher set phone=#{phone} where t_id=#{id}
    </update>
    <delete id="deleteTeacherById">
        delete from teacher where t_id=#{id}
    </delete>

    <select id="selectAllTeacher" resultType="com.wk.entity.Teacher">

select * from teacher
    </select>
</mapper>

6.1解决列名与属性名不一致问题

TeacherDao.xml文件下加入

    <resultMap id="teacherMap" type="com.wk.entity.Teacher">
        <result column="t_id" property="id"/>
        <result column="t_name" property="teachername"/>
        <result column="phone" property="phone"/>
    </resultMap>

并将 select标签中的resultType="com.wk.entity.Teacher"改为resultMap="teacherMap"

7、在entity包中新建类,存放数据库中对象信息

public class Teacher {
private int id;
private String teachername;
private String phone;

    public Teacher() {
    }

    public Teacher(int id, String teachername, String phone) {
        this.id = id;
        this.teachername = teachername;
        this.phone = phone;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getTeachername() {
        return teachername;
    }

    public void setTeachername(String teachername) {
        this.teachername = teachername;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    @Override
    public String toString() {
        return "Teacher{" +
                "id=" + id +
                ", teachername='" + teachername + '\'' +
                ", phone='" + phone + '\'' +
                '}';
    }
}

数据库表信息

8、在util包下新建sqlsessionfactory关键对象

(1) SqlSessionFactory

    1.SqlSessionFactory是MyBatis的关键对象,它是个单个数据库映射关系经过编译后的内存镜像。

    2.SqlSessionFactory对象的实例可以通过SqlSessionFactoryBuilder对象类获得,而SqlSessionFactoryBuilder则可以从XML配置文件或一个预先定制的Configuration的实例构建出SqlSessionFactory的实例。

    3.每一个MyBatis的应用程序都以一个SqlSessionFactory对象的实例为核心。

    4.SqlSessionFactory是线程安全的,SqlSessionFactory一旦被创建,应该在应用执行期间都存在。在应用运行期间不要重复创建多次,建议使用单例模式。

    5.SqlSessionFactory是创建SqlSession的工厂。

(2) SqlSession

  1.SqlSession是MyBatis的关键对象,是执行持久化操作的独享,类似于JDBC中的Connection。

    2.它是应用程序与持久层之间执行交互操作的一个单线程对象,也是MyBatis执行持久化操作的关键对象。

    3.SqlSession对象完全包含以数据库为背景的所有执行SQL操作的方法,它的底层封装了JDBC连接,可以用SqlSession实例来直接执行被映射的SQL语句。

    4.每个线程都应该有它自己的SqlSession实例。

    5.SqlSession的实例不能被共享,同时SqlSession也是线程不安全的,绝对不能讲SqlSeesion实例的引用放在一个类的静态字段甚至是实例字段中。也绝不能将SqlSession实例的引用放在任何类型的管理范围中,比如Servlet当中的HttpSession对象中。

    6.使用完SqlSeesion之后关闭Session很重要,应该确保使用finally块来关闭它。

(3) Resources

Resources类:从类路径中加载资源。

Resources可加载的配置文件

public class SqlSessionFactoryUtils {
    private static SqlSessionFactory sqlSessionFactory;

    static {

        try {
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            //Resources类:从类路径中加载资源。
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
    public static SqlSessionFactory getSqlSessionFactory(){return sqlSessionFactory;}
}

9、在test包下编写测试类

public class Test01 {
    private static SqlSessionFactory sqlSessionFactory = SqlSessionFactoryUtils.getSqlSessionFactory();
    public static void main(String[] args) {
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //利用sqlSession对象获取出想要的接口对象
        TeacherDao mapper = sqlSession.getMapper(TeacherDao.class);

        //查询所有教师信息
//        List<Teacher> list= mapper.selectAllTeacher();
//        System.out.println(list);

        //添加教师信息
//        Teacher teacher = new Teacher();
//        teacher.setTeachername("史蒂夫");
//        teacher.setPhone("123456789");
//        int i = mapper.addTeacher(teacher);
//        System.out.println(i);
//        //手动提交事务
//        sqlSession.commit();

        //修改教师信息
//        Teacher teacher = new Teacher();
//        teacher.setPhone("88888888");
//        teacher.setId(1);
//        int i = mapper.updateTeacher(teacher);
//        sqlSession.commit();
//        System.out.println(i);

        //删除教师信息
        int i = mapper.deleteTeacherById(2);
        System.out.println(i);
        sqlSession.commit();
    }
}

本文转载自: https://blog.csdn.net/qq_54351538/article/details/127616366
版权归原作者 wangkay88 所有, 如有侵权,请联系我们删除。

“idea中mybatis配置”的评论:

还没有评论