Mybatis的使用方法与代码实现

1.What

Mybatis作为一个持久层,相当于封装JDBC的框架,去掉其中的获取连接、statement等细节,对数据库的数据进行增删改查

2.Why

使用mybatis对jdbc进行了简化

3.For

使用框架,利用维护与开发

4.流程

  1. 写dao(注解的增删改查操作)与domin(对应数据库表对象的映射)
  2. 编写数据库连接的propertise文件(url,driver,username,password)
  3. 编写框架的配置xml文件(映射dao层,传输数据库层,保存domin层)
<?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="jdbcConfig.properties"></properties>
    <!--配置别名-->
    <typeAliases>
        <package name="domain"></package>
    </typeAliases>
    <!-- 配置环境-->
    <environments default="mysql">
        <environment id="mysql">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"></property>
                <property name="url" value="${jdbc.url}"></property>
                <property name="username" value="${jdbc.username}"></property>
                <property name="password" value="${jdbc.password}"></property>
            </dataSource>
        </environment>
    </environments>
    <!-- 指定带有注解的dao接口所在位置 -->
    <mappers>
        <package name="dao"/>
    </mappers>
</configuration>

映射到package中,避免找不到

  1. 使用mybatis框架(如下)

在这里插入图片描述

5.使用注解来代替jdbc中domin对象的属性与数据库字段属性不一致时起别名

	@Select("select * from user")//查询注解,由mybits运行时进行解析
	@Results(id="userMap",value = {//相当于起别名,属性的引用,使其他也可以简单地使用这个注解
            @Result(id=true,column = "id",property = "userId"),
            @Result(column = "username",property = "userName"),
            @Result(column = "birthday",property = "userBirthday"),
            @Result(column = "sex",property = "userSex"),
            @Result(column = "address",property = "userAddress"),

    }

    )
    List<User> findAll();

6.code

  • 多对1的多表查询
public interface IAccountDao {
    @Select("select * from account")
    @Results(id="accountMap",value={@Result(id = true,column = "id",property = "id"),
            @Result(column = "uid",property = "uid"),
            @Result(column = "money",property = "money"),
            @Result(column = "uid",property = "user",one = @One(select = "dao.IUserDAO.findById",fetchType = FetchType.EAGER))}
    )
    List<Account> findAll();
}

将表中查询出的column = “uid”,放入到one = @One(select = “dao.IUserDAO.findById”,fetchType = FetchType.EAGER)中进行查询,得到的结果放入property = "user"中

  • 多对多的多表查询
    @Select("select * from user")
    @Results(id="userMap",value = {
            @Result(id=true,column = "id",property = "userId"),
            @Result(column = "username",property = "userName"),
            @Result(column = "birthday",property = "userBirthday"),
            @Result(column = "sex",property = "userSex"),
            @Result(column = "address",property = "userAddress"),
            @Result(column = "id",property = "accounts",many = @Many(select = "dao.IAccountDao.findAccountByUid",fetchType = FetchType.LAZY))

    }

    )
    List<User> findAll();

这里的accounts返回的是多个account账户,所以在User类中定义一个接受查询结果的账户属性应该为一个Lsit

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值