首页 > 其他 > 详细

mybatis三种开发方式

时间:2019-08-20 10:29:38      阅读:69      评论:0      收藏:0      [点我收藏+]

MyBatis三种开发方式

先说一下基本配置

MyBatis.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>
    <settings>
        <setting name="logImpl" value="STDOUT_LOGGING"/>
    </settings>
    <typeAliases>
        <package name="com.zby.entity"/>
    </typeAliases>
    <!--配置数据源,数据库连接信息,支持配置多个数据源-->
    <environments default="development">
        <!--数据库连接信息-->
        <environment id="development">
            <!--配置事务管理模式,让mybatis采用jdbc的管理模式-->
            <transactionManager type="JDBC"/>
            <!--配置连接池,数据库连接信息,type属性在指明用哪个连接池,POOLED是mybatis自带的连接池-->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&amp;characterEncoding=utf-8&amp;useSSL=false"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
</configuration>

Course有四个属性,创建他们的无参构造方法、Getter and Setter方法、to String方法

    private String cno;
    private String cname;
    private  int credit;
    private  int semester;

 CourseMapper.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">
<!--namespace给一个命名空间-->
<mapper namespace="com.zby.mapper.CourseMapper">
</mapper>

一.sqlSession执行对应语句
所需类:Course.java类,CourseMapper.xml、Test.java测试类
1.CourseMapper.xml里写sql语句,直接输出

<mapper namespace="com.zby.mapper.CourseMapper">
<!--resultType是告诉mybatis这个语句查询要封装成哪个类,
增删改不用写,因为增删改没有结果集,只需要接受一个int-->
<select id="listCourse" resultType="Course">
select * from course where cno=#{cno}
</select>
</mapper>

2.mybatis 配置文件Mybatis.xml里加语句引入要用的xml

<mappers>
<mapper resource="com/zby/mapper/CourseMapper.xml"/>
</mappers>

3.Test.java测试

public class Test {
    public static void main(String[] args) {
        //创建sqlsession的工厂,一定要写配置文件在哪(由配置文件构建的),工厂一个项目有一个就够,目的是生产session
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build
                (Test.class.getClassLoader().getResourceAsStream("MyBatis.xml"));
        //通过工厂生产sqlsession ,一切操作数据库都依赖这个session,可以把这个session理解为jdbc中的Connection
        SqlSession session = factory.openSession();
        //传sql语句的全名
        List<Course> courseList = session.selectList("com.zby.mapper.CourseMapper.listCourse");
        for (Course course : courseList) {
            System.out.println(course);
        }
    }
}

 

二.使用注解(基本不用)
所需类:Course.java类、CourseMapper.java接口、Test.java测试类
1.利用CourseMapper.java接口,在抽象方法上注解,注解内写sql语句

public interface CourseMapper {
    //select 返回值是个集合,select id 为listCourse
    @Select("select * from course")
    List<Course> listCourse();
}

2..测试类测试

public class Test {
    public static void main(String[] args) {
        //创建sqlsession的工厂,一定要写配置文件在哪(由配置文件构建的),工厂一个项目有一个就够,目的是生产session
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build
                (Test.class.getClassLoader().getResourceAsStream("MyBatis.xml"));
        //通过工厂生产sqlsession ,一切操作数据库都依赖这个session,可以把这个session理解为jdbc中的Connection
        SqlSession session = factory.openSession();
        //利用sqlsession生成接口的实现类对象
        CourseMapper courseMapper = session.getMapper(CourseMapper.class);
        //接口本来没有实现类是无法创建对象的,但此处可以
        for (Course course : courseMapper.listCourse()) {
            System.out.println(course);
        }
    }
}

 

三.利用接口代理(常用)
所需类:Course.java类,CourseMapper.java接口,CourseMapper.xml、Test.java
1.创建一个接口,接口名与xml一样,接口与xml放在一起,一个xml对应一个接口

2.在接口中定义抽象方法,返回值就写你想要的,方法名就是xml中语句的id
xml中namespace的值是接口的全路径

 CourseMapper.java接口中定义方法

public interface CourseMapper {
    //select 返回值是个集合,select id 为listCourse
    List<Course> listCourse();
}

 

CourseMapper.xml sql查询不变

<mapper namespace="com.zby.mapper.CourseMapper">
    <select id="listCourse" resultType="Course">
        select * from course where cno=#{cno}
    </select>
</mapper>

 

mybatis 配置文件Mybatis.xml里加语句引入要用的xml

<mappers>
<mapper resource="com/zby/mapper/CourseMapper.xml"/>
</mappers>

 


3.使用getMapper方法生成接口对象

Test.java测试

public class Test {
    public static void main(String[] args) {
        //创建sqlsession的工厂,一定要写配置文件在哪(由配置文件构建的),工厂一个项目有一个就够,目的是生产session
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build
                (Test.class.getClassLoader().getResourceAsStream("MyBatis.xml"));
        //通过工厂生产sqlsession ,一切操作数据库都依赖这个session,可以把这个session理解为jdbc中的Connection
        SqlSession session = factory.openSession();
        //利用sqlsession生成接口的实现类对象
        CourseMapper courseMapper = session.getMapper(CourseMapper.class);
        //接口本来没有实现类是无法创建对象的,但此处可以
        for (Course course : courseMapper.listCourse()) {
            System.out.println(course);
        }
    }
}

 

不足和错误之处请指出,感谢。

mybatis三种开发方式

原文:https://www.cnblogs.com/here-I-am/p/11379306.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!