简单的mybatis demo和简单的spring demo做个简单的整合demo(4种方式)

方式清单

(先将jar包导完后)

  • 方式一

    思路

    1. 将数据库连接有关的信息配置到db.properties
    2. 为了方便跟进程序,在mybatis-config.xml中将mybatis的自带日志打开
    3. applicationContext.xml中配置数据源、sqlSessionFactory、自动扫描对象关系映射等
    4. 建立包:entities、dao、mapper、service、service.impl,并创建相应类或接口

    代码

    整体目录结构:


    最终目录结构
配置db.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/xzl?useUnicode=true&characterEncoding=utf8
jdbc.username=aaa
jdbc.password=123
配置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>

    <settings>
        <setting name="logImpl" value="STDOUT_LOGGING" />
    </settings>
    
</configuration>
配置applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context 
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <!-- 导入外部配置文件 -->
    <context:property-placeholder location="db.properties"/>
    
    <!-- 配置service的实现类 -->
    <bean name="qqun_ListService" class="demo.cyj.service.impl.Qqun_ListServiceImpl"></bean>
    
    
    <!-- 数据源配置 -->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${jdbc.driver}"></property>
        <property name="url" value="${jdbc.url}"></property>
        <property name="username" value="${jdbc.username}"></property>
        <property name="password" value="${jdbc.password}"></property>
    </bean>

    <!-- sqlSessionFactory给spring托管 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- 数据源 -->
        <property name="dataSource" ref="dataSource"></property>
        <!-- 别名,类名开头变小写 -->
        <property name="typeAliasesPackage"  value="demo.cyj.entities"></property>
        <!-- sql映射文件路径 -->
        <!-- classpath *和不加*的区别 -->
        <property name="mapperLocations" value="classpath*:demo/cyj/mapper/*Mapper.xml"></property>
        <property name="configLocation" value="classpath:mybatis-config.xml"></property>
    </bean>

          <!--自动扫描对象关系映射 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!--指定会话工厂,如果当前上下文中只定义了一个则该属性可省去 -->
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
        <!-- 指定要自动扫描接口的基础包,实现接口 -->
        <property name="basePackage" value="demo.cyj.dao"></property>
    </bean>
    

</beans>
实体类Q群列表:Qqun_List.java
package demo.cyj.entities;

import java.io.Serializable;

public class Qqun_List implements Serializable{
    
    private static final long serialVersionUID = -8969192680204852279L; 
    
    private String  groupId;
    private String  groupName;
    private String  auth;
    private String  flag;
    
    public Qqun_List() {}
    
    public Qqun_List(String groupId, String groupName, String auth, String flag) {
        super();
        this.groupId = groupId;
        this.groupName = groupName;
        this.auth = auth;
        this.flag = flag;
    }
    public String getGroupId() {
        return groupId;
    }
    public void setGroupId(String groupId) {
        this.groupId = groupId;
    }
    public String getGroupName() {
        return groupName;
    }
    public void setGroupName(String groupName) {
        this.groupName = groupName;
    }
    public String getAuth() {
        return auth;
    }
    public void setAuth(String auth) {
        this.auth = auth;
    }
    public String getFlag() {
        return flag;
    }
    public void setFlag(String flag) {
        this.flag = flag;
    }
    @Override
    public String toString() {
        return "Qqun_List [groupId=" + groupId + ", groupName=" + groupName + ", auth=" + auth + ", flag=" + flag + "]";
    }
}
dao接口Qqun_ListDao.java
package demo.cyj.dao;

import java.util.List;

import demo.cyj.entities.Qqun_List;

public interface Qqun_ListDao {

    public List<Qqun_List> findAll();
    
}
配置mapper文件Qqun_ListMapper.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="demo.cyj.dao.Qqun_ListDao">
    <select id="findAll" resultType="qqun_List">
        select * from qqun_list
    </select>
</mapper>
service接口Qqun_ListService.java
package demo.cyj.service;

import java.util.List;

import demo.cyj.entities.Qqun_List;

public interface Qqun_ListService {
    public List<Qqun_List> findAll();   
}
service接口实现类Qqun_ListServiceImpl.java
package demo.cyj.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;

import demo.cyj.dao.Qqun_ListDao;
import demo.cyj.entities.Qqun_List;
import demo.cyj.service.Qqun_ListService;

public class Qqun_ListServiceImpl implements Qqun_ListService{
    @Autowired
    private Qqun_ListDao qqun_ListDao;
    @Override
    public List<Qqun_List> findAll() {
        // TODO Auto-generated method stub
        return qqun_ListDao.findAll();
    }
}
编写测试类Test1.java
package demo.cyj;

import java.util.List;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import demo.cyj.entities.Qqun_List;
import demo.cyj.service.Qqun_ListService;

public class Test1 {
    public static void main(String[] args) {
        ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
        Qqun_ListService qqun_ListService =  ac.getBean(Qqun_ListService.class);//单例才能这样传类类型
        List<Qqun_List> list = qqun_ListService.findAll();
        System.out.println(list);
    }   
}
运行结果

后面的明天写了

  • 方式二

  • 方式三

  • 方式四

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容

  • MyBatis—Spring 项目 目前大部分的 Java 互联网项目,都是用 Spring MVC + Spri...
    我没有三颗心脏阅读 57,195评论 12 30
  • 副标题:重男轻女的封建迷信落后乡村里寄人篱下的普通女孩如何活出自我人生(并且她还有个小儿麻痹症弟弟) 第一章 回忆...
    一个人要像一支队伍_8790阅读 175评论 0 2
  • 快乐是简单 简单很好 却不适合 总想画出点什么 带着情绪的 遗世独立的 空气总是最先被关注 因为它无处不在 空气总...
    小橙君阅读 500评论 0 1
  • 如果上课只是为了玩手机,那来教室干嘛?如果来学校只是为了睡觉,那文凭拿了有什么用?好好想想我能干嘛,我适合干嘛,...
    QMY阅读 253评论 0 0
  • 45天餐饮人成长计划 第6课 周年庆营销怎么做 大鹏老师不仅教操作方式,还不断的强调做周年庆营销的好处...
    可以自己掌控的人生阅读 229评论 0 1