mybatis学习案例

数据库depot 实现mybatis功能

数据库

depot.sql文件

DROP TABLE IF EXISTS `factory`;
CREATE TABLE `factory` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '进货商',
  `name` varchar(255) DEFAULT NULL,
  `place` varchar(255) DEFAULT NULL,
  `phone` varchar(255) DEFAULT NULL,
  `fax` varchar(255) DEFAULT NULL COMMENT '备注',
  `card` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
​
-- ----------------------------
-- Records of factory
-- ----------------------------
INSERT INTO `factory` VALUES ('1', '上好佳食品', '北京市朝阳区朝外大街', '12312341234', '12341234', '1234567891234567891');
INSERT INTO `factory` VALUES ('2', '王老吉凉茶', '北京市朝阳区朝外大街', '12312341234', '12341234', '1234567891234567891');
INSERT INTO `factory` VALUES ('3', '肉食类专供', '北京市朝阳区朝外大街', '12312341234', '12341234', '1234567891234567891');
INSERT INTO `factory` VALUES ('4', '蛋奶类专供', '北京市朝阳区朝外大街', '12312341234', '12341234', '1234567891234567891');
INSERT INTO `factory` VALUES ('5', '服装类专供', '北京市朝阳区朝外大街', '12312341234', '12341234', '1234567891234567891');
INSERT INTO `factory` VALUES ('6', '日用品专供', '北京市朝阳区朝外大街', '12312341234', '12341234', '1234567891234567891');
​
-- ----------------------------
-- Table structure for `goods`
-- ----------------------------
DROP TABLE IF EXISTS `goods`;
CREATE TABLE `goods` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `pricein` float DEFAULT NULL,
  `priceout` varchar(255) DEFAULT NULL COMMENT '生产日期',
  `store` int(11) DEFAULT '0',
  `sales` int(11) DEFAULT '0',
  `type_id` varchar(255) DEFAULT NULL,
  `factory_id` int(11) DEFAULT NULL COMMENT '进货商',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
​
-- ----------------------------
-- Records of goods
-- ----------------------------
INSERT INTO `goods` VALUES ('1', '上好佳薯片', '2', '4.0', '80', '20', '1', '1');
INSERT INTO `goods` VALUES ('2', '王老吉凉茶', '3', '5', '80', '20', '1', '2');
INSERT INTO `goods` VALUES ('3', '双汇冷鲜肉', '9', '12', '80', '20', '1', '3');
INSERT INTO `goods` VALUES ('4', '咯咯哒鸡蛋', '11', '15', '80', '20', '1', '4');
INSERT INTO `goods` VALUES ('5', '男士牛仔裤', '67', '125', '80', '20', '2', '5');
INSERT INTO `goods` VALUES ('6', '雕牌洗衣粉', '6', '9', '80', '20', '3', '6');
​
-- ----------------------------
-- Table structure for `grop`
-- ----------------------------
DROP TABLE IF EXISTS `grop`;
CREATE TABLE `grop` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
​
-- ----------------------------
-- Records of grop
-- ----------------------------
INSERT INTO `grop` VALUES ('1', '经理');
INSERT INTO `grop` VALUES ('2', '员工');
​
-- ----------------------------
-- Table structure for `sell`
-- ----------------------------
DROP TABLE IF EXISTS `sell`;
CREATE TABLE `sell` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '出货表',
  `amount` int(11) DEFAULT NULL COMMENT '出货数量',
  `remark` varchar(255) DEFAULT NULL COMMENT '备注',
  `createdate` datetime DEFAULT NULL,
  `goods_id` int(11) DEFAULT NULL,
  `user_id` int(11) DEFAULT NULL COMMENT '经手人',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
​
-- ----------------------------
-- Records of sell
-- ----------------------------
INSERT INTO `sell` VALUES ('1', '20', null, now(), '1', '2');
INSERT INTO `sell` VALUES ('2', '20', null, now(), '2', '2');
INSERT INTO `sell` VALUES ('3', '20', '特殊处理', now(), '3', '2');
INSERT INTO `sell` VALUES ('4', '20', null, now(), '4', '2');
INSERT INTO `sell` VALUES ('5', '20', null, now(), '5', '2');
INSERT INTO `sell` VALUES ('6', '20', null, now(), '6', '2');
​
-- ----------------------------
-- Table structure for `stock`
-- ----------------------------
DROP TABLE IF EXISTS `stock`;
CREATE TABLE `stock` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '进货表',
  `amount` int(11) DEFAULT NULL COMMENT '数量',
  `remark` varchar(255) DEFAULT NULL COMMENT '备注',
  `createdate` datetime DEFAULT NULL COMMENT '进货日期',
  `goods_id` int(11) DEFAULT NULL,
  `user_id` int(11) DEFAULT NULL COMMENT '经手人',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
​
-- ----------------------------
-- Records of stock
-- ----------------------------
INSERT INTO `stock` VALUES ('1', '100', null, now(), '1', '2');
INSERT INTO `stock` VALUES ('2', '100', '特价', now(), '2', '2');
INSERT INTO `stock` VALUES ('3', '100', null, now(), '3', '2');
INSERT INTO `stock` VALUES ('4', '100', '按斤计价', now(), '4', '2');
INSERT INTO `stock` VALUES ('5', '100', null, now(), '5', '2');
INSERT INTO `stock` VALUES ('6', '100', null, now(), '6', '2');
​
-- ----------------------------
-- Table structure for `type`
-- ----------------------------
DROP TABLE IF EXISTS `type`;
CREATE TABLE `type` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
​
-- ----------------------------
-- Records of type
-- ----------------------------
INSERT INTO `type` VALUES ('1', '食品');
INSERT INTO `type` VALUES ('2', '服饰');
INSERT INTO `type` VALUES ('3', '日用');
​
-- ----------------------------
-- Table structure for `user`
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) DEFAULT NULL,
  `password` varchar(255) DEFAULT NULL,
  `grop_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
​
-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('1', '1', '1', '1');
INSERT INTO `user` VALUES ('2', '2', '2', '2');

  

 

 

 

七个表信息

factory

列名类型
id int(11)
name varchar(255)
place varchar(255)
phone varchar(255)
fax varchar(255)
card varchar(255)

 

good

列名类型
id int(11)
name varchar(255)
pricein(定价) float
priceout(卖价) float
store(库存) int
sales(卖出量) int
type_id int
factory-_id int

 

grop(职位)

列名类型
id int(11)
name varchar(255)

 

sell(销售单)

列名类型
id int(11)
amount int(11)
remark(标记) varchar(255)
createdate datetime
goods_id int
user_id int

stock(进货单)

列名类型
id int(11)
amount int(11)
remark(标记) varchar(255)
createdate datetime
goods_id int
user_id int

type(商品类型)

列名类型
id int(11)
name varchar(255)

user

列名类型
id int(11)
username varchar(255)
password varchar(255)
grop_id int

 

创建项目实现流程

  • 1,创建空白maven工程
  • 2,完善pom.xml中的信息
  • 3,导入log4j.properties
  • 4,创建连接数据库文件SqlMapConifig.xml和jdbcConfig.properties数据库连接文件
  • 5,进行数据库连接测试
  • 6,创建项目结构和各文件名称
  • 7,SqlMapConifig.xml中定义映射配置
  • 8,实现增删改查
  • 9,实现多表查询
  • 10,实现模糊查询

步骤四的补充即文件导入资源

pom.xml
 1 <dependencies>
 2     <dependency>
 3         <groupId>org.mybatis</groupId>
 4         <artifactId>mybatis</artifactId>
 5         <version>3.4.5</version>
 6     </dependency>
 7     <dependency>
 8         <groupId>mysql</groupId>
 9         <artifactId>mysql-connector-java</artifactId>
10         <version>5.1.6</version>
11     </dependency>
12     <dependency>
13         <groupId>log4j</groupId>
14         <artifactId>log4j</artifactId>
15         <version>1.2.12</version>
16     </dependency>
17     <dependency>
18         <groupId>junit</groupId>
19         <artifactId>junit</artifactId>
20         <version>4.10</version>
21     </dependency>
22 </dependencies>

 

 
log4j.properties
<dependencies>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.4.5</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.6</version>
    </dependency>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.12</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.10</version>
    </dependency>
</dependencies>

 

 
SqlMapConifig.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">
<!--myBatis的主配置文件-->
<configuration><!--指定连接数据库的信息-->
    <properties resource="jdbcConfig.properties"></properties><!--用于指定要配置别名的包,当指定之后,该包下的实体类都会被注册别名也不区分大小写。-->
    <typeAliases>
    <package name="com.cn.model"></package>
    </typeAliases><!--配置环境-->
    <environments default="mysql">
        <!--配置mysql的环境-->
        <environment id="mysql">
            <!--配置事务类型-->
            <transactionManager type="JDBC"></transactionManager>
            <!--配置数据源连接池-->
            <dataSource type="POOLED">
                <!--配置连接数据库的四个基本信息-->
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments><!--指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件-->
    <mappers>
        <package name="com.cn.dao"></package>
    </mappers></configuration>
 

 

 

 

4,注意事项

a,SqlMapConifig.xml中需要安装一定的排列顺序。他们位置变化可能会产生错误。
b,mappers是连接数据库与IFactoryDao.xml的桥梁。
SqlMapConifig.xml
 <mappers>
       <package name="com.cn.dao"></package>
</mappers>
IFactoryDao.xml
<mapper namespace="com.cn.dao.IFactoryDao">
c,typeAliases标签是指定类库可直接写别名
SqlMapConifig.xml
<!--用于指定要配置别名的包,当指定之后,该包下的实体类都会被注册别名也不区分大小写。-->
<typeAliases>
<package name="com.cn.model"></package>
</typeAliases>
IFactoryDao.xml
<select id="findAll" resultType="Factory">
  SELECT * from factory
</select>

 

 

步骤八的补充和sql语句案例

sql语句案例

insert into [table] ([column],[column],[column])
values(?,?,?)
<insert id="saveFactory" parameterType="Factory">
    INSERT into factory VALUE (#{id},#{name},#{place},#{phone},#{fax},#{card})
</insert>

delete 
from [table]
where column = ?
<delete id="deleteFactory" parameterType="java.lang.Integer">
    delete from factory where id=#{uid}
</delete>

update [table]
set column = ?
where column = ?
<update id="updateFactory" parameterType="Factory">
    UPDATE factory set name=#{name},place=#{place},phone=#{phone},fax=#{fax},card=#{card} where id=#{id}
</update>

select *
from [table]
where [column] = ?
<select id="findAll" resultType="Factory">
    SELECT * from factory
</select>

步骤九实现多表查询

type与goods一对多

sql语句

SELECT tid,tname,gid,gname "goods_gname",priceout from type t  LEFT JOIN goods g on tid=gid
<!-- 配置一对多的关系
        property:填写pojo类中集合类类属性的名称
        javaType:填写集合类型的名称 
    --> 
<resultMap id="GoodsType" type="Type">
        <id column="tid" property="tid"/>
        <result column="tname" property="tname"/>
        <collection property="goods" javaType="list" ofType="good">
            <id column="gid" property="gid"/>
            <result column="goods_gname" property="gname"/>
            <result column="priceout" property="priceout"/>
        </collection>
    </resultMap>

 

重点:

<collection property="goods" javaType="list" ofType="good">
gname "goods_gname"

 

 

步骤十实现模糊查询

    <select id="selectGood" parameterType="good" resultMap="Good">
        SELECT * from goods
        <where>
            <if test="gid!=null and gid!=' '">
                gid like "%" #{gid} "%"
            </if>
            <if test="gname!=null and gname!=' '">
                gname like "%" #{gname} "%"
            </if>
        </where>
    </select>

 

posted @ 2020-07-01 10:35  皮皮亮  阅读(26)  评论(1)    收藏  举报