MyBatis配置、实现Mysql数据库的crud

1、MyBatis简介

MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除 了几乎所有的 JDBC 代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs(Plan Old Java Objects,普通的 Java 对象)映射成数据库中的记录。

2、MyBatis配置

2.1 准备工作

此次配置mybatis是在idea中,在maven的基础之上实现的。

(1) 添加依赖

打开maven中的pom.xml文件,添加以下依赖。(若只配置mybatis框架,只导入mybatis依赖和mysql依赖)

<dependencies>
    <!--test测试方法依赖-->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
    
    <!--mybatis依赖-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.4.6</version>
    </dependency>
    
    <!--mysql连接驱动-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.38</version>
    </dependency>

    <!-- lombok依赖-->
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.16.20</version>
      <scope>provided</scope>
    </dependency>

    <!--log4j日志依赖-->
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</version>
    </dependency>
  </dependencies>
(2) 目录结构准备

在这里插入图片描述

(3) 新建mybatis主配置文件

在resources目录下,右键新建文件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>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="org/mybatis/example/BlogMapper.xml"/>
    </mappers>
</configuration>-->


<!-- ------------------------------------------------------------------------------------------------------------------- -->
<?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>

<!-- 属性配置,数据库配置文件 -->
    <properties resource="db.properties"/>
    <!--引用外部的db.properties,如果只有一个文件,可以用/结束-->


<!-- 配置别名,三种方式-->
    <typeAliases>
        <!--1:将指定对象 更改成别名 dao-->
        <typeAlias type="com.ujy.db.dao.IUserDao" alias="dao"></typeAlias>
        <!--2:包,此包下的所有类都可以用本文件的类名作为别名(可以不区分大小写)-->
        <package name="com.ujy.db.bean"/>
        <!-- 3:可以使用注解显示某个类的别名,在类文件上写-->
    </typeAliases>


<!--  可以配置多个environment,每一个id要不同,默认是default-->
    <environments default="development">
        <environment id="development">
        <!-- 事务管理器-->
            <transactionManager type="JDBC"/>
            <!-- 数据源-->
            <dataSource type="POOLED">
                <!--抽取成一个属性配置文件-->
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>

    </environments>

<!--    关联map隐射文件-->
    <mappers>
<!--        设置隐射文件的位置和名称-->
        <mapper resource="com/ujy/db/dao/UserMapping.xml"/>
    </mappers>
</configuration>
(4) 获取SqlSession对象

在utils工具包中新建类,该类用于获取SqlSession对象

public class Sqlsession {

    private static SqlSessionFactory factory =null;
    static{
//        加载主配置文件
        String file = "mybatis-config.xml";
        try {
            InputStream resourceAsStream = Resources.getResourceAsStream(file);
            factory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    public static SqlSession getSession() {
        // 从factory中获取session对象
        return factory.openSession();

    }
}
(5) 配置mysql数据库

1、在resources下新建db.properties,写入以下数据,相关数据更换成自己的。

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/person
username=root
password=xxxx

2、在主配置文件中关联db.properties。(关联代码已经写在主配置文件中)

2.2 实现增删改查类

(1)创建数据表

在这里插入图片描述

(2)创建实体类

在bean文件夹下,创建一个User类

@Getter@Setter@ToString
@AllArgsConstructor@NoArgsConstructor
@Alias("MyUser")
public class User {
    private String id;
    private String name;
    private String passwd;

}
(3)创建dao的接口

在dao目录下新建一个接口,定义增删改查方法,其中查询分为两种情况,全部查询和部分查询。

public interface IUserDao {
    int add(User user);
    int update(User user);
    int delete(int id);
    List<User> select();
    User selectone(int id);
}
(4)创建dao的实现类

在dao下新建一个文件夹Imp,用来存放接口的实现类。新建一个实现类。

public class UserDao implements IUserDao {

    public int add(User user) {
        //增加数据
        SqlSession session = Sqlsession.getSession();
        int fin = session.insert("com.ujy.db.dao.IUserDao.add", user);
        /*别名: int fin = session.insert("dao.add", user);*/
        session.commit();
        session.close();
        return fin;
    }

    public int update(User user) {
        //修改数据
        SqlSession session = Sqlsession.getSession();
        int fin = session.update("com.ujy.db.dao.IUserDao.update", user);
        session.commit();
        session.close();
        return fin;
    }

    public int delete(int id) {
        //删除数据
        SqlSession session = Sqlsession.getSession();
        int fin = session.delete("com.ujy.db.dao.IUserDao.delete", id);
        session.commit();
        session.close();
        return fin;
    }

    public List<User> select() {
        //查询全部数据,查询不需要提交事务
        SqlSession session = Sqlsession.getSession();
        List<User> user = session.selectList("com.ujy.db.dao.IUserDao.select");
        return user;
    }

    public User selectone(int id) {
        //查询单条数据
        SqlSession session = Sqlsession.getSession();
        Object user = session.selectOne("com.ujy.db.dao.IUserDao.selectone", id);
        return (User) user;
    }
}

2.3 创建mapper的映射文件

在resources文件夹下,新建一个文件夹com/ujy/db/dao,在文件夹下新建映射文件UserMapping.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="org.mybatis.example.BlogMapper">
    <select id="selectBlog" resultType="Blog">
    select * from Blog where id = #{id}
  </select>
</mapper>-->

<!-- --------------------------------------------------------------------------------------------------------------- -->
<?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">

<!--主配置文件可以将com.ujy.db.dao.IUserDao别名成dao-->
<!--<mapper namespace="dao">-->
<mapper namespace="com.ujy.db.dao.IUserDao">

    <!-- 增-->
    <!--自动获取插入数据主键的值
    useGeneratedKeys:是否获取主键值,默认为false
    keyProperty:把获取到的主键值,赋给此对象,引号中只能写主键名,写其他为null
    keyColumn:从哪一列获取主键,可以不写,没啥用-->
    <insert id="add" useGeneratedKeys="true" keyProperty="id" keyColumn="id">
        insert into users value (null,#{name},#{passwd})
   </insert>

    <!-- 改-->
    <update id="update">
        update users set name=#{name},passwd=#{passwd} where id=#{id}
    </update>

    <!-- 删-->
    <delete id="delete">
        delete from users where id=#{suibian}
    </delete>

    <!--查询全部,resultType指定返回值类型
    <别名:select id="select" resultType="User">-->
    <select id="select" resultType="com.ujy.db.bean.User">
        select * from users
    </select>
    
    <!--  查询单条数据-->
    <!--别名:<select id="selectone" resultType="MyUser">-->
    <select id="selectone" resultType="com.ujy.db.bean.User" resultMap="UserMap">
        select * from users where id=#{id}
    </select>


    <!--结果集隐射标签,用于实体类中属性名和数据库字段名不匹配的情况,写一个转换的过程
        id:当前结果集隐射的唯一标识,要把id写到select中的resultMap!!!
        type:对象类型-->
    <resultMap id="UserMap" type="com.ujy.db.bean.User">
        <!--property是实体类属性名,column是数据库字段名,
        当前是查询,是把column转成property-->
        <id column="id" property="id"/>
        <result column="name" property="name"/>
        <result column="passwd" property="passwd"/>
    </resultMap>
    
</mapper>
!!!主配置文件关联映射文件!!!

主配置文件已经加入。
在这里插入图片描述

2.4 测试

在test下的java文件夹中,创建一个测试类TestRun,分配测试crud方法是否可行。

public class TestRun {
    @Test
    public void testadd() {
        User user = new User(null,"zhangsan","222");
        UserDao ud = new UserDao();
        int fin = ud.add(user);

        String id = user.getId();
        System.out.println(id);
        if (fin>0){
            System.out.println("写入成功!!!");
        }
    }
    @Test
    public void testupdate(){
        User user = new User("8","张三","000");
        UserDao ud = new UserDao();
        int fin = ud.update(user);
        if (fin>0){
            System.out.println("修改成功");
        }
    }
    @Test
    public void testdelete(){
        UserDao ud = new UserDao();
        int fin = ud.delete(7);
        if(fin>0){
            System.out.println("删除成功");
        }
    }
    @Test
    public void testselect(){
        UserDao ud = new UserDao();
        List<User> user = ud.select();
        System.out.println(user);
    }
    @Test
    public void testselectone(){
        UserDao ud = new UserDao();
        User user = ud.selectone(1);
        if(user!=null){
            System.out.println(user.getId()+"\t"+user.getName()+"\t"+user.getPasswd());
        }


    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值