文档章节

mybatis三种开发方式

o
 osc_g8254g7s
发布于 2019/08/20 08:24
字数 1130
阅读 5
收藏 0

精选30+云产品,助力企业轻松上云!>>>

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>
    <mappers>
        <!--引入要用的xml-->
        <mapper resource="com/zby/mapper/CourseMapper.xml"/>
    </mappers>
</configuration>
View Code

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

public class Course {
    private String cno;
    private String cname;
    private  int credit;
    private  int semester;
    public Course() {
    }
    public String getCno() {
        return cno;
    }
    public void setCno(String cno) {
        this.cno = cno;
    }
    public String getCname() {
        return cname;
    }
    public void setCname(String cname) {
        this.cname = cname;
    }
    public int getCredit() {
        return credit;
    }
    public void setCredit(int credit) {
        this.credit = credit;
    }
    public int getSemester() {
        return semester;
    }
    public void setSemester(int semester) {
        this.semester = semester;
    }
    @Override
    public String toString() {
        return "Course{" +
                "cno='" + cno + '\'' +
                ", cname='" + cname + '\'' +
                ", credit=" + credit +
                ", semester=" + semester +
                '}';
    }
}
View Code

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语句的全名,查的结果是数组,需要foreach遍历 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); } } }

 

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

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
Mybatis中Like 的使用方式以及一些注意点

做一个积极的人 编码、改bug、提升自己 我有一个乐园,面向编程,春暖花开! 模糊查询在项目中还是经常使用的,本文就简单整理Mybatis中使用Like进行模糊查询的几种写法以及一些常见的问题。...

osc_320iuulz
2019/10/19
1
0
Mybatis中Like 的使用方式以及一些注意点

做一个积极的人 编码、改bug、提升自己 我有一个乐园,面向编程,春暖花开! 文章目录 模糊查询在项目中还是经常使用的,本文就简单整理Mybatis中使用Like进行模糊查询的几种写法以及一些常见...

阿飞云
04/01
0
0
mybatis错误——java.io.IOException: Could not find resource com/xxx/xxxMapper.xml

转自:https://blog.csdn.net/u010648555/article/details/70880425 在学习Mybatis的时候,参考网上的教程进行简单demo的搭建,配置的没有问题,然后出现了下面的错误! 最终通过上网查找找到...

osc_91760i21
2019/02/23
5
0
spring和mybatis的整合开发(传统Dao开发方式)

spring和mybatis整合开发有三种整合方式1.传统DAO方式的开发整合(现在基本上不会用这种方式了,不推荐使用这种方式),2.mapper接口方式的开发整合(基于MapperFactoryBean的整合和基于Mappe...

osc_uv42f7cs
2019/03/25
12
0
mybatis-redis 拓展包--mybatis-redis

mybatis 二级缓存除了使用 oscache 外,还存在另外一种方式,就是 redis 。 oscache 将数据存储在内存中,当在大型系统中,这严重影响系统性能。 而使用 redis 可以做到集群中多台机器共享一...

尚浩宇
2017/05/15
1.6K
0

没有更多内容

加载失败,请刷新页面

加载更多

科技人文丨玻璃心:承受阈值与表达

大家好,我是SKODE。 有趣的灵魂,聊科技人文。 本系列博客地址:传送门 本文转载自B站:安慰记传送门 玻璃心是网络用语,意思是: 对负面事件的接受度很低 还有对别人可能给出的负面评价非常...

osc_u9mt0sus
52分钟前
20
0
迅睿CMS 游客不允许上传附件

游客不允许上传附件 迅睿CMS系统:https://www.xunruicms.com/ 本文档原文地址:https://www.xunruicms.com/doc/752.html...

迅睿CMS-PHP开源CMS程序
52分钟前
7
0
代理,注解,接口和实现类的小测验

* retention : 保留* policy : 策略 ps : 简单测试了一下手写代理,jdk动态代理,和cglib动态代理,根据其不同的结果分析其原理 一:测试目的 主要想看一下不同的代理模式对于目标类中方法上注...

岁一
53分钟前
12
0
V-Ray 5 For 3ds Max 正式发布:超越渲染 - 知乎

15个新功能,V-Ray5助你时间更节省,渲染更出色! 作者:ChaosGroup VRay 5 For 3ds Max 已正式发布! 2分钟视频,抢先预览新功能↓ 知乎视频 www.zhihu.com V-Ray 5 for 3ds Max 新增功能 ...

osc_o9u1um45
53分钟前
0
0
毕业的笑容和悲伤永远是校园的回忆

校园的风轻轻的拂过我的脸庞,风儿显得更加凉爽, 开满火红的凤凰树,染遍了校园的每个角落, 晚上那枝头蝉儿的竞相鸣奏,唱满了令人不舍的毕业歌, 它们彷彿告诉了我们要毕业了。 毕业典礼那...

瑾123
54分钟前
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部