基于Mybatis的bookstore架构模型
总共分为Control,dao,enter,entity,service,util,view这几层。同时还含有一个mapperconfig.xml文件。
1,mapperconfig.xml
这里面用来配置相关数据库的连接和mapper的resource
- <configuration>
- <settings>
- <setting name="cacheEnabled" value="true"/>
- </settings>
- <environments default="test">
- <environment id="test">
- <transactionManager type="JDBC"></transactionManager>
- <dataSource type="POOLED">
- <property name="driver" value="com.mysql.jdbc.Driver"/>
- <property name="url" value="jdbc:mysql://localhost:3306/bookstore?characterEncoding=UTF-8"/>
- <property name="username" value="***"/>
- <property name="password" value="****"/>
- </dataSource>
- </environment>
- </environments>
- <mappers>
- <mapper resource="com/chinasofti/bookstore/dao/TypesDao.xml"/>
- <mapper resource="com/chinasofti/bookstore/dao/BookDao.xml"/>
- </mappers>
- </configuration>
2,entity
这是实体类,没什么好说的。就是javabean掌握好就好。总共book和type两个实体类。
1(book)
- package com.chinasofti.bookstore.entity;
- public class Book {
- private int bid;
- private String bname;
- private String author;
- private String descn;
- private int price;
- private int num;
- private Types t;
- public Book(int bid, String bname, String author, String descn, int price, int num, Types t) {
- this.bid = bid;
- this.bname = bname;
- this.author = author;
- this.descn = descn;
- this.price = price;
- this.num = num;
- this.t = t;
- }
- public Book(String bname, String author, String descn, int price, int num, Types t) {
- this.bname = bname;
- this.author = author;
- this.descn = descn;
- this.price = price;
- this.num = num;
- this.t = t;
- }
- public Book() {
- }
- public int getBid() {
- return bid;
- }
- public void setBid(int bid) {
- this.bid = bid;
- }
- public String getBname() {
- return bname;
- }
- public void setBname(String bname) {
- this.bname = bname;
- }
- public String getAuthor() {
- return author;
- }
- public void setAuthor(String author) {
- this.author = author;
- }
- public String getDescn() {
- return descn;
- }
- public void setDescn(String descn) {
- this.descn = descn;
- }
- public int getPrice() {
- return price;
- }
- public void setPrice(int price) {
- this.price = price;
- }
- public int getNum() {
- return num;
- }
- public void setNum(int num) {
- this.num = num;
- }
- public Types getT() {
- return t;
- }
- public void setT(Types t) {
- this.t = t;
- }
- @Override
- public String toString() {
- return "Book{" +
- "bid=" + bid +
- ", bname='" + bname + '\'' +
- ", author='" + author + '\'' +
- ", descn='" + descn + '\'' +
- ", price=" + price +
- ", num=" + num +
- ", t=" + t +
- '}';
- }
- }
2(type)
- package com.chinasofti.bookstore.entity;
- import java.io.Serializable;
- public class Types implements Serializable {
- private int tid;
- private String tname;
- public Types(int tid, String tname) {
- this.tid = tid;
- this.tname = tname;
- }
- public Types() {
- }
- public int getTid() {
- return tid;
- }
- public void setTid(int tid) {
- this.tid = tid;
- }
- public String getTname() {
- return tname;
- }
- public void setTname(String tname) {
- this.tname = tname;
- }
- @Override
- public String toString() {
- return "Types{" +
- "tid=" + tid +
- ", tname='" + tname + '\'' +
- '}';
- }
- }
3,dao
bookdao.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">
- <mapper namespace="com.chinasofti.bookstore.dao.BookDao">
- <resultMap id="book" type="com.chinasofti.bookstore.entity.Book">
- <id property="bid" column="BID"/>
- <result property="bname" column="BNAME"/>
- <result property="descn" column="DESCN"/>
- <result property="author" column="author"/>
- <result property="price" column="PRICE"/>
- <result property="num" column="num"/>
- </resultMap>
- <resultMap id="booktypes" type="com.chinasofti.bookstore.entity.Book" extends="book">
- <association property="t" javaType="com.chinasofti.bookstore.entity.Types">
- <id property="tid" column="TID"/>
- <result property="tname" column="TNAME"/>
- </association>
- </resultMap>
- <insert id="insert" parameterType="com.chinasofti.bookstore.entity.Book">
- insert into book (bid,bname,author,descn,price,num,tid) values (#{bid},#{bname},#{author},#{descn},#{price},#{num},#{t.tid});
- </insert>
- <delete id="delectById" parameterType="int">
- delete from book where bid=#{bid}
- </delete>
- <select id="selectByName" parameterType="string" resultMap="booktypes">
- select *from (select *from book where bname=#{bname}) b ,types t where b.bid=t.tid
- </select>
- <select id="selectAll" resultMap="booktypes">
- select*from book b left join types t on bname=#{bname}and b.bid=t.tid
- </select>
- <update id="update" parameterType="com.chinasofti.bookstore.entity.Book">
- update book <set>
- <if test="bname!=null">bname=#{bname},</if>
- <if test="author!=null">author=#{author},</if>
- <if test="descn!=null">descn=#{descn},</if>
- <if test="price!=null">price=#{price},</if>
- <if test="num!=null">num=#{num},</if>
- </set>
- where bid=#{bid}
- </update>
- </mapper>
bookdao(接口)
- package com.chinasofti.bookstore.dao;
- import com.chinasofti.bookstore.entity.Book;
- import java.util.List;
- public interface BookDao {
- int insert(Book book);
- int delectById(int bid);
- int update(Book book);
- List<Book> selectAll();
- Book selectByName(String bname);
- }
typedao.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">
- <mapper namespace="com.chinasofti.bookstore.dao.TypesDao">
- <cache/>
- <sql id="ty">tid,tname</sql>
- <resultMap id="tp" type="com.chinasofti.bookstore.entity.Types">
- <id property="tid" column="TID"/>
- <result property="tname" column="TNAME"/>
- </resultMap>
- <insert id="inserttype" parameterType="string">
- insert into types(tname) values (#{tname});
- </insert>
- <delete id="deleteById" parameterType="int">
- delete from types where tid=#{tid}
- </delete>
- <select id="selectAll" resultMap="tp">
- select <include refid="ty"/> from types
- </select>
- <select id="selectByName" parameterType="string" resultMap="tp">
- select <include refid="ty"/> from types where tname=#{tname}
- </select>
- </mapper>
typedao
- package com.chinasofti.bookstore.dao;
- import com.chinasofti.bookstore.entity.Types;
- import java.util.List;
- public interface TypesDao {
- int inserttype(String tname);
- int deleteById(int tid);
- List<Types> selectAll();
- Types selectByName(String name);
- }
4,service
bookservice
- package com.chinasofti.bookstore.service;
- import com.chinasofti.bookstore.dao.BookDao;
- import com.chinasofti.bookstore.entity.Book;
- import org.apache.ibatis.io.Resources;
- import org.apache.ibatis.session.SqlSession;
- import org.apache.ibatis.session.SqlSessionFactory;
- import org.apache.ibatis.session.SqlSessionFactoryBuilder;
- import java.io.IOException;
- import java.util.List;
- public class BookService {
- private SqlSessionFactory factory;
- private SqlSession session;
- private BookDao dao;
- public BookService(){
- try {
- factory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("sqlconfig.xml"));
- session = factory.openSession();
- dao = session.getMapper(BookDao.class);
- } catch (IOException e) {
- e.printStackTrace();
- System.out.println("sqlsession创建失败");
- }
- }
- public String addBook(Book book){
- Book b = dao.selectByName(book.getBname());
- if (b!=null){
- return "该书以存在";
- }
- String s= dao.insert(book)>0?"添加成功":"添加失败";
- session.commit();
- return s;
- }
- public List<Book> findAll(){
- return dao.selectAll();
- }
- public String remove(int bid){
- String s=dao.delectById(bid)>0?"删除成功":"删除失败";
- session.commit();
- return s;
- }
- public String change(Book book){
- String s=dao.update(book)>0?"修改成功":"修改失败";
- session.commit();
- return s;
- }
- }
typeservice
- package com.chinasofti.bookstore.service;
- import com.chinasofti.bookstore.dao.TypesDao;
- import com.chinasofti.bookstore.entity.Types;
- import org.apache.ibatis.io.Resources;
- import org.apache.ibatis.session.SqlSession;
- import org.apache.ibatis.session.SqlSessionFactory;
- import org.apache.ibatis.session.SqlSessionFactoryBuilder;
- import java.io.IOException;
- import java.util.List;
- public class TypesService {
- private SqlSessionFactory factory;
- private SqlSession session;
- private TypesDao dao;
- public TypesService(){
- try {
- factory=new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("sqlconfig.xml"));
- session = factory.openSession();
- dao = session.getMapper(TypesDao.class);
- } catch (IOException e) {
- e.printStackTrace();
- System.out.println("创建失败");
- }
- }
- public String addType(String tname){
- Types t = dao.selectByName(tname);
- if (t!=null){
- return "该类别已存在,请重新输入";
- }
- if (dao.inserttype(tname)>0){
- session.commit();
- return "添加成功";
- }else {
- return "添加失败";
- }
- }
- public List<Types> findAll(){
- return dao.selectAll();
- }
- public String remove(int tid){
- String s=dao.deleteById(tid)>0?"删除成功":"删除失败";
- session.commit();
- return s;
- }
- public Types findByName(String tname){
- return dao.selectByName(tname);
- }
- }
5,util
- package com.chinasofti.bookstore.util;
- import java.util.Scanner;
- public class UserInput {
- //创造用于接收用户输入整数的方法
- public static int getInt(String wang){
- System.out.println(wang);
- while (true){
- Scanner sc=new Scanner(System.in);
- try {
- return sc.nextInt();
- }
- catch (Exception e){
- System.out.println("对不起,输入格式不正确,请重新输入");
- }
- }
- }
- public static double getDouble(String wang){
- System.out.println(wang);
- while (true){
- Scanner sc=new Scanner(System.in);
- try {
- return sc.nextDouble();
- }
- catch (Exception e){
- System.out.println("对不起,输入格式不正确,请重新输入");
- }
- }
- }
- public static String getString(String wang){
- System.out.println(wang);
- Scanner sc=new Scanner(System.in);
- return sc.next();
- }
- }
6,view
- package com.chinasofti.bookstore.view;
- import com.chinasofti.bookstore.entity.Types;
- import java.util.List;
- /*输出界面
- * 图书管理
- 1、添加图书类别
- 2、显示图书类别
- 3、删除图书类别
- 4、添加图书
- 5、查询图书
- 6、删除图书
- 7、修改图书
- 8、根据类别查询图书*/
- public class View {
- public static void welcome(){
- System.out.println("---------欢迎来到我的世界--------------");
- System.out.println("1、添加图书类别");
- System.out.println("2、显示图书类别");
- System.out.println("3、删除图书类别");
- System.out.println("4、添加图书");
- System.out.println("5、查询图书");
- System.out.println("6、删除图书");
- System.out.println("7、修改图书");
- System.out.println("8、根据类别查询图书");
- System.out.println("---------------------------------------");
- }
- public static void showType(List<Types> all){
- System.out.println("所有类别如下");
- System.out.println("编号\t名称");
- for (Types t:all){
- System.out.println(t.getTid()+"\t"+t.getTname());
- }
- }
- }
7,control(业务逻辑只写了一个,其余的依葫芦画瓢就好)
- package com.chinasofti.bookstore.control;
- import com.chinasofti.bookstore.entity.Book;
- import com.chinasofti.bookstore.entity.Types;
- import com.chinasofti.bookstore.service.BookService;
- import com.chinasofti.bookstore.service.TypesService;
- import com.chinasofti.bookstore.util.UserInput;
- import com.chinasofti.bookstore.view.View;
- import java.util.List;
- public class Control {
- private BookService service;
- private TypesService typesService;
- public Control() {
- this.service = new BookService();
- this.typesService=new TypesService();
- }
- public void start(){
- //显示主界面
- View.welcome();
- //接收用户输入的指令
- int select = UserInput.getInt("请选择");
- if (select<=0){
- System.out.println("欢迎下次再来,886");
- System.exit(0);
- }else if(select==4){
- this.addbook();
- }
- }
- private void addbook() {
- System.out.println("-----------请添加图书--------------");
- View.showType(this.typesService.findAll());
- System.out.println(this.service.addBook(new Book(
- UserInput.getString("请输入书名"),
- UserInput.getString("请输入图书的作者"),
- UserInput.getString("请输入图书的描述"),
- UserInput.getInt("请输入图书的价格"),
- UserInput.getInt("请输入图书的数量"),
- typesService.findByName(UserInput.getString("请输入类别名称"))
- )));
- }
- }
基于Mybatis的bookstore架构模型的更多相关文章
- JVM笔记 -- JVM的发展以及基于栈的指令集架构
2011年,JDK7发布,1.7u4中,开始启用新的垃圾回收器G1(但是不是默认). 2017年,发布JDK9,G1成为默认GC,代替CMS.(一般公司使用jdk8的时候,会通过参数,指定GC为G1) ...
- MFC主窗口架构模型
根据主窗口类型,MFC软件工程可以分为一下几种架构模型: 1.SDI(Simple Document Interface)单文档界面,一个主窗口下只编辑一份文档 2.MDI(Multiple Docu ...
- 高扩展的基于NIO的服务器架构
当你考虑写一个扩展性良好的基于Java的服务器时,相信你会毫不犹豫地使用Java的NIO包.为了确保你的服务器能够健壮.稳定地运行,你可能会花大量的时间阅读博客和教程来了解线程同步的NIO selec ...
- Unity3D中的AI架构模型
我们都知道现在AI(由人工制造出来的系统所表现出来的模拟人类的智能活动)非常的火,可以说是家喻户晓.当然,在游戏中,AI也是到处可以找到的,对于AI,我们应该关注的问题是如何让游戏角色能够向人或动物那 ...
- 基于hadoop的BI架构
BI系统,是企业利用数据驱动运营的一个典型系统.BI系统通过发掘企业运行过程中的数据,发现企业的潜在风险.为企业的各项决策提供数据支撑. 传统的BI系统通常构建于关系型数据库之上.随着企业业务量的增大 ...
- 【神经网络篇】--基于数据集cifa10的经典模型实例
一.前述 本文分享一篇基于数据集cifa10的经典模型架构和代码. 二.代码 import tensorflow as tf import numpy as np import math import ...
- 【深度学习篇】--神经网络中的池化层和CNN架构模型
一.前述 本文讲述池化层和经典神经网络中的架构模型. 二.池化Pooling 1.目标 降采样subsample,shrink(浓缩),减少计算负荷,减少内存使用,参数数量减少(也可防止过拟合)减少输 ...
- 基于SOA的银行系统架构
Part-1 [简述] 1.通过引入面向服务架构(SOA),企业服务总线(ESB),适配器(Adapter)及面向构件等技术,尝试打造一个统一业务流程服务平台,实现面向流程的服务集成. 2.传统银行 ...
- Shuttle ESB(三)——架构模型介绍(2)
上一篇文章中,介绍了Shuttle ESB架构模型中的三个重要部分. 今天,我们继续介绍剩余的三个内容:模式和消息路由. 四.模式 Request/Response(请求/响应模式) 对基于Reque ...
随机推荐
- 基于 HTML5 WebGL + WebVR 的 3D 虚实现实可视化培训系统
前言 2019 年 VR, AR, XR, 5G, 工业互联网等名词频繁出现在我们的视野中,信息的分享与虚实的结合已经成为大势所趋,5G 是新一代信息通信技术升级的重要方向,工业互联网是制造业转型升级 ...
- javascript-void keyword
javascript-void keyword 写在前面 ECMA-262定义了ECMAScript所支持的关键字(keyword),关键字不能用作ECMAScript程序的标识符(Indetifie ...
- (三)unittest断言方法的介绍
断言如同在测试用例上,类似于预期结果与实际结果是否一致,如果一致则表示测试通过,Assert断言很好的用于测试结果判断上,更灵活的对预期结果和实际结果进行对比,下面简单的介绍一下unittest的As ...
- SpringBoot2 整合 Zookeeper组件,管理架构中服务协调
本文源码:GitHub·点这里 || GitEE·点这里 一.Zookeeper基础简介 1.概念简介 Zookeeper是一个Apache开源的分布式的应用,为系统架构提供协调服务.从设计模式角度来 ...
- AcWing 243. 一个简单的整数问题2 | 树状数组
传送门 题目描述 给定一个长度为N的数列A,以及M条指令,每条指令可能是以下两种之一: 1.“C l r d”,表示把 A[l],A[l+1],…,A[r] 都加上 d. 2.“Q l r”,表示询问 ...
- JPA或Hibernate中使用原生SQL实现分页查询、排序
发生背景:前端展示的数据需要来自A表和D表拼接,A表和D表根据A表的主键进行关联,D表的非主键字段关联C表的主键,根据条件筛选出符合的数据,并且根据A表的主键关联B表的主键(多主键)的条件,过滤A表中 ...
- es lucene搜索及聚合流程源码分析
本文以TermQuery,GlobalOrdinalsStringTermsAggregator为例,通过代码,分析es,lucene搜索及聚合流程.1:协调节点收到请求后,将search任务发到相关 ...
- Go Goosy Disk Docker Port Provisioners(GDP)
小伙伴们,她们中出了一个叛徒,他是谁?是谁?是谁? 由一则口口相传的故事开始吧: 中午吃饭时间抽空小李跑到同座大楼的小张公司串门,小李是一名docker顾问熟称砖家,这间公司老板想挖小李,他盯了前台不 ...
- Ubuntu16安装NVIDIA驱动后重复登录 简单粗暴
第一步 卸载所有NVIDIA的东西 第二步 开机,应该能进入默认驱动的桌面了,在设置里关闭开机密码,开机自动登录 第三步 安装英伟达驱动
- 《C# 爬虫 破境之道》:第一境 爬虫原理 — 第六节:第一境尾声
在第一境中,我们主要了解了爬虫的一些基本原理,说原理也行,说基础知识也罢,结果就是已经知道一个小爬虫是如何诞生的了~那么现在,请默默回想一下,在第一境中,您都掌握了哪些内容?哪些还比较模糊?如果还有什 ...