mybatis--mysql--- 过程-配置文件---xml文件

具体流程

通过mybatis对mysql数据库进行操作

创建的时候,包要一层一层

1、创建一个mevan工程,在pom.xml文件中导入两个依赖的jar包

2、在main下创建一个resource类型文件,且和java下面 的每一层目录都要相对应,,注意层次感

在这里插入图片描述

3、首先要创建一个实体类,这实体类的属性要和表格中的字段名相对应,且类型也要对应,实体类中的类型要用引用类型,开头都是大写,属性的get 、set的方法都要有,还有toString方法

4、写一个接口,里面是方法,一般就是增删改查这四个方法

5、在resource下面写一个对应的xml文件,写四个方法

6、在resource下创建连接mysql的配置文件

mysql.driver=com.mysql.jdbc.Driver
mysql.url=jdbc:mysql://192.168.119.180:3306/test?useSSL=false
mysql.username=root
mysql.password=12345678

#3306后面是数据库名称

7、在resource下面创建xml文件,mybatis.xml

开始写一些配置

8、在测试类中开始测试

1、pom.xml配置文件

这个文件中主要就是导入了两个依赖的jar包,,改成8版本要注意

 <dependencies>
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.6</version>
    </dependency>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.47</version>
    </dependency>
  </dependencies>


#主要就是这两个jar包的导入

2、实体类要求

对应这数据库中的表,写对应的实体了,字段名称和属性名称对应,类型对应

1、mysql中数据表的字段名

mysql> desc user_info;
+---------------+--------------------------+------+-----+---------+----------------+
| Field         | Type                     | Null | Key | Default | Extra          |
+---------------+--------------------------+------+-----+---------+----------------+
| user_id       | int(6) unsigned zerofill | NO   | PRI | NULL    | auto_increment |
| user_name     | varchar(10)              | NO   |     | NULL    |                |
| user_account  | varchar(30)              | NO   |     | NULL    |                |
| user_pass     | varchar(50)              | NO   |     | NULL    |                |
| user_phone    | varchar(20)              | NO   | UNI | NULL    |                |
| user_gender   | char(1)                  | NO   |     | NULL    |                |
| user_pid      | varchar(20)              | NO   | UNI | NULL    |                |
| user_province | varchar(50)              | NO   |     | NULL    |                |
| user_city     | varchar(50)              | NO   |     | NULL    |                |
| user_district | varchar(50)              | NO   |     | NULL    |                |
| user_address  | varchar(200)             | NO   |     | NULL    |                |
| user_balance  | decimal(10,2)            | NO   |     | 2000.00 |                |
+---------------+--------------------------+------+-----+---------+----------------+

2、java实体类属性名称

	private Integer user_id;
    private String user_name;
    private String usr_account;
    private String usr_pass;
    private String user_phone;
    private String user_gender;
    private String user_pid;
    private String user_province;
    private String user_city;
    private String user_district;
    private String user_address;
    private Double user_balance;

#还有就是get、set方法,toString方法,。。构造方法没说,,可以研究一下

3、mapper接口中的方法

接口中的方法是要映射到xml文件中,和xml文件中的增删改查四个方法相对应的

增删改查

//查询
List<UserInfo> findBy(UserInfo useInfo);
//UserInfo是你写的实体类的名称,直接传实体类,返回值也是实体类的集合,,要是查询全部,就将表中符合条件的信息全部返回


//删除
int removeBy(int[] ids)
    
//修改
int update(UserInfo userInfo)
//用这个方法的时候,注意xml文件的方法中要添加一些限制条件,不然就全表修改同一字段值
    
    
//添加
int add(List<UserInfo> list)
//注意数据的添加类型,实体类一个一个添加数据,能不能写构造方法等
    

4、与mapper接口对应的xml文件配置

#xml文件是有格式的,要满足固定的格式

//这个namespace是Mpper的带包全路径的名字

1、每个标签后的id后填写对应mapper接口中的方法名,就是通过id进行捆绑关联的
2、parameterMap | resultMap 的存在是为了修正实体类的属性和数据表中字段名称,类型,数量不一致而存在的	
3、parameterType | resultType 直接关联实体类型,,你自己写的那个实体类的类名
4、简单的固定的where条件: where field=value and ...,   可以直接写在查询语句后面,不用where标签
5、复杂动态的where条件 :<where></where> 功能1、无条件时不添加where,多条件时自动去除第一个and
6、单分支:<if test="条件"></if>
7、多分支:<choose><when test="条件1"></when>...<otherwise></otherwise></choose>  
8、条件表达式不能出现< | <= 与标签的语法冲突,如果遇到有需要的时候,就用>或者>=来等价替换一下
9、复杂动态的修改操作 :<set></set> 功能1、多字段修改时自动去除最后一个逗号,
10、 parameterType : 非基本类型array | list | map,,只能是这三种类型  其他类型不可以
11、循环 :其中 collection item 必须有,其他可以没有
    <foreach collection"array|list|map" item="alias别名" poen="开始符号" close="结束符号" separator="分隔符" index="ix">
        #{alias},#{ix}
    </foreach> 
   
    
    
 //第一个是查询方法
 <select id="findBy" parameterType="UserInfo" resultType="UserInfo">
    select user_id, user_name,user_gender,user_city from  user_info
    <where>
        <choose>
            <when test="null != user_id">
                user_id=#{user_id}
            </when>
            <when test="null != user_phone">
                user_phone=#{user_phone}
            </when>
            <when test="null != user_pid">
                user_pid=#{user_pid}
            </when>
            <otherwise>
                <if test="null != user_name">
                    and user_name like concat(#{user_name},'%')
                </if>
                <if test="null != user_gender">
                    and user_gender=#{user_gender}
                </if>
                <if test="null != user_province">
                    and user_province=#{user_province}
                </if>
                <if test="null != user_city">
                    and user_city=#{user_city}
                </if>
                <if test="null != user_district">
                    and user_district=#{user_district}
                </if>
                <if test="null != user_balance">
                    and #{user_balance}>=user_balance
                </if>
            </otherwise>
        </choose>
    </where>
</select>
   
//删除方法
<delete id="removeBy" >
    delete from user_info where user_id
    <foreach collection="array" item="id" open="in (" close=")" separator=",">
        #{id}
    </foreach>
</delete>
        
//修改操作
<update id="update" parameterType="UserInfo">
    update user_info
    <set>
        <if test="null != user_phone">
            user_phone=#{user_phone},
        </if>
        <if test="null != user_pid">
            user_pid=#{user_pid},
        </if>
        <if test="null != user_name">
            user_name=#{user_name},
        </if>
        <if test="null != user_gender">
            user_gender=#{user_gender},
        </if>
        <if test="null != user_province">
            user_province=#{user_province},
        </if>
        <if test="null != user_city">
            user_city=#{user_city},
        </if>
        <if test="null != user_district">
            user_district=#{user_district},
        </if>
        <if test="null != user_address">
            user_address=#{user_address},
        </if>
    </set>
    where user_id=#{user_id}
</update>

//添加操作    
<insert id="add">
    insert into user_info(user_name,user_account,user_pass,user_phone,user_gender,user_pid,user_province,
    user_city,user_district,user_address)  values
    <foreach collection="list" item="user" separator=",">
        (#{user.user_name},#{user.user_account},#{user.user_pass},#{user.user_phone},#{user.user_gender},
        #{user.user_pid},#{user.user_province},#{user.user_city},#{user.user_district},#{user.user_address})
    </foreach>
</insert>
</mapper>

1、
choose、when、otherwise 标签
这三个标签需要组合在一起使用,类似于 Java 中的 switch、case、default。只有一个条件生效,也就是只执行满足的条件 when,没有满足的条件就执行 otherwise,表示默认条件。
2、
foreach 标签
foreach标签主要有以下参数:
item :循环体中的具体对象。支持属性的点路径访问,如item.age,item.info.details,在list和数组中是其中的对象,在map中是value。
index :在list和数组中,index是元素的序号,在map中,index是元素的key,该参数可选。
open :表示该语句以什么开始
close :表示该语句以什么结束
separator :表示元素之间的分隔符,例如在in()的时候,separator=","会自动在元素中间用“,“隔开,避免手动输入逗号导致sql错误,如in(1,2,)这样。该参数可选。

5、连接mysql配置文件

在resource下面创建一个DataSource.properties文件,填写下面内容

mysql.driver=com.mysql.jdbc.Driver
mysql.url=jdbc:mysql://192.168.119.180:3306/test?useSSL=false
mysql.username=root
mysql.password=12345678

#3306后面是数据库名称
#下面就是数据库名称,数据库密码

6、mybatis配置文件

在resource下面创建一个mybatis.xml 文件,然后开始配置文件之旅

这个配置文件也是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>
    		//连接mysql配置文件的路径,可以不用,将配置文件的内容直接写在下面
    <properties resource="datasource.properties"/>
    <typeAliases>
        		//这个是实体类所在的文件路径
        <package name="cn.kgc.entity"/>
    </typeAliases>
    <!-- 可以配多个数据源,只要关系数据库就行,,,default和id要绑定起来,用什么数据库,写什么-->
    <environments default="mysql">
        <environment id="mysql">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                //后买写的配置文件里面的键,,也可以直接将配置文件的值,写在后面,不用配置文件
                <property name="driver" value="${mysql.driver}"/>
                <property name="url" value="${mysql.url}"/>
                <property name="username" value="${mysql.username}"/>
                <property name="password" value="${mysql.password}"/>
            </dataSource>
        </environment>
    </environments>
    <!-- <mapper class | package> 二选一 -->
    <mappers>
       <!-- <mapper resource="cn/kgc/mapper/userMapper.xml"/> 缺陷,每个 *Mapper.xml 都需要单独配置-->
        //mapper的xml文件的路径
        <package name="cn.kgc.mapper"/>
    </mappers>

</configuration>


7、测试类

这个类写main方法,开始调用方法,开始测试

package cn.kgc;

import cn.kgc.entity.UserInfo;
import cn.kgc.mapper.UserMapper;
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.io.InputStream;
import java.util.List;

/**
 *mybatis : 半自动化ORM(Object Relationship Mapping)框架
 * 动态sql
 *
 * 框架
 * User实体类:属性:userName,userPass
 * select ... from where userName=#{userName} and userPass=#{userPass}        : ?的值是映射进去的
 *
 * 以前java
 *  select ... from where userName=? and userPass=?       : ?的值是映射进去的
 *
 */
public class App 
{
    public static void main( String[] args ) throws IOException {

        final String RESOURCE = "mybatis.xml";
        InputStream stream = Resources.getResourceAsStream(RESOURCE);
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(stream);
        SqlSession sqlSession = factory.openSession(true);
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        UserInfo info = new UserInfo();
        info.setUser_city("南京市");
        List<UserInfo> list = userMapper.findBy(info);
        for (UserInfo userInfo : list) {
            System.out.println(userInfo);
        }
/*        int[] arr = {4};
        int re = userMapper.removeBy(arr);*/
        
        List<UserInfo> list = new ArrayList<>();
        info.setUser_gender("男");
        info.setUser_city("上海");
        info.setUser_province("江苏省");
        info.setUser_address("河道旁边");
        info.setUser_name("SB");
        info.setUser_phone("13700790156");
        info.setUser_pid("32072119970929323x");
        info.setUsr_account("不知道");
        info.setUsr_pass("不知道了");
        info.setUser_district("随便写的");
        list.add(info);
        int add = userMapper.add(list);
        
     //调用这个方法的时候,注意一下,你写的xml文件的条件,要给一个id,不然不知道修改哪一个
        info.setUser_address("沙雕欢乐窝");
        info.setUser_id(48);
        userMapper.update(info);

        sqlSession.close();

    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值