设为首页 收藏本站
查看: 973|回复: 0

[经验分享] 简单的mybatis——spring 整合(数据库:oracle)

[复制链接]

尚未签到

发表于 2017-12-10 14:48:20 | 显示全部楼层 |阅读模式
  刚刚开始学,mybatis,怕自己忘记基础,赶紧记录了下来,欢迎各位大神指错!
  mybatis所需的jar包:mybatis-3.4.2.jar
  mybatis与spring整合中需要的jar包:mybatis-spring-1.3.1.jar
  其他jar包就找自己的需求来添加:比如oracle的驱动包,spring需要的相应的包
  注:虽然配置文件里写了:增删改查,但是测试只测试查询所有,其他的自己进行测试了哈

大概思路:
  首先:创建数据,建表,插入测试数据
  再而:创建与表相对应的实体类
  下一步:在接口中定义一些数据访问的方法
  进一步:为MyBatis ORM创建的xml映射文件定义实现数据访问需要的sql脚本
  最后:使用spring.xml完成整合,进行小测试
  建表,插数据



CREATE TABLE books(bid NUMBER PRIMARY KEY ,bname VARCHAR2(50) NOT NULL ,bprice NUMBER NOT NULL );
INSERT  INTO books(bid,bname,bprice) VALUES (1,'百鬼夜行',12.5);
INSERT  INTO books(bid,bname,bprice) VALUES (2,'陌上花开',22.5);
INSERT  INTO books(bid,bname,bprice) VALUES (3,'夏目友人帐',32.5);

  创建实体类  


DSC0000.gif DSC0001.gif


package edu.nf.mybatis.entity;
/**
* Created by Administrator on 2017/3/27.
*/
public class Books {
private long bid;
private String bname;
private double bprice;
public Books() {
}
public Books(long bid, String bname, double bprice) {
this.bid = bid;
this.bname = bname;
this.bprice = bprice;
}
public long getBid() {
return bid;
}
public void setBid(long bid) {
this.bid = bid;
}
public String getBname() {
return bname;
}
public void setBname(String bname) {
this.bname = bname;
}
public double getBprice() {
return bprice;
}
public void setBprice(double bprice) {
this.bprice = bprice;
}
@Override
public String toString() {
return "Books{" +
"bid=" + bid +
", bname='" + bname + '\'' +
", bprice=" + bprice +
'}';
}
}
View Code  定义访问接口





package edu.nf.mybatis.mapper;
import edu.nf.mybatis.entity.Books;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* Created by Administrator on 2017/3/27.
* 图书数据访问的接口
*/
public interface IBookDao {
/*获取所有书籍*/
public List<Books> getAll();
/*通过ID获取单个数据*/
public Books getBookById(@Param("bid") int bid);
/*添加数据*/
public int add(Books entity);
/*根据ID删除*/
public int del(int bid);
/*更新*/
public int update(Books entity);
}
View Code  创建xml映射文件定义实现数据访问需要的sql脚本





<?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="edu.nf.mybatis.mapper.IBookDao">
<!--id应该是对应接口的包名+接口名-->
<!--获取所有书籍-->
<!--因为在spring.xml文件中的sqlSessionFactory中配置属性 <property name="typeAliasesPackage" value="edu.nf.mybatis.entity"></property>-->
<!--所以这里resultType="Books"就只需要写类名Books,而不是edu.nf.mybatis.entity.Books了-->
<select id="getAll" resultType="Books">
select bid,bname,bprice from books
</select>
<!--通过编号获取书籍-->
<select id="getBookById" resultType="Books">
select bid,bname,bprice from books where bid = #{bid};
</select>
<!--添加书籍-->
<insert id="add">
insert into books(bid,bname,bprice) values (#{bid},#{bname},#{bprice});
</insert>
<!--删除书籍-->
<delete id="del">
delete from books where bid = #{bid};
</delete>
<!--更新书籍-->
<update id="update">
update books set bid = #{bid},bname = #{bname},bprice = #{bprice} where bid = #{bid};
</update>
</mapper>
View Code  spring.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:tx="http://www.springframework.org/schema/tx"
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-4.3.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">
<!--1 引入属性文件,在配置中占位使用 -->
<context:property-placeholder location="classpath:db.properties" />
<!--6 容器自动扫描IOC组件  -->
<context:component-scan base-package="edu.nf.mybatis"/>
<!--2 配置C3P0数据源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<!--驱动类名 -->
<property name="driverClass" value="${driver}" />
<!-- url -->
<property name="jdbcUrl" value="${url}" />
<!-- 用户名 -->
<property name="user" value="${user}" />
<!-- 密码 -->
<property name="password" value="${password}" />
</bean>
<!--3 会话工厂bean sqlSessionFactoryBean -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 数据源 -->
<property name="dataSource" ref="dataSource"></property>
<!-- 配置这里后在bookMapper.xml文件中,sql语句返回的类型就不许写全路径,直接写类名就好了-->
<property name="typeAliasesPackage" value="edu.nf.mybatis.entity"></property>
<!-- sql映射文件路径 -->
<property name="mapperLocations" value="classpath:mybatis/*.xml"></property>
</bean>
<bean  class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 指定要自动扫描接口的基础包,实现接口 -->
<property name="basePackage" value="edu.nf.mybatis.mapper" />
</bean>
<!--5 声明式事务管理 -->
<!--定义事物管理器,由spring管理事务 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!--支持注解驱动的事务管理,指定事务管理器 -->
<tx:annotation-driven transaction-manager="transactionManager"/>
</beans>
View Code




import edu.nf.mybatis.entity.Books;
import edu.nf.mybatis.sevice.BooksService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import java.util.List;
/**
* Created by Administrator on 2017/3/27.
*/
public class testMybatis {
@Test
public void test2(){
ApplicationContext ctx=new ClassPathXmlApplicationContext("spring.xml");
BooksService booksService=ctx.getBean(BooksService.class);
List<Books> books=booksService.getAll();
System.out.println(books);
}
}
View Code  web.xml



<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 配置路径,默认是 "WEB-INF/applicationContext.xml" -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring.xml</param-value>
</context-param>
<servlet-mapping>
<servlet-name>myBatis</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
  test2测试运行结果:
DSC0002.png

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-422691-1-1.html 上篇帖子: oracle一些经典sql(转自网络整理)第一篇--------1.列出至少有一个员工的所有部门。 下篇帖子: oracle 11gR2 ASM添加和删除磁盘
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表