MyBatis 的开发方式

MyBatis 的开发方式

1.使用原生接口
2.使用Mapper代理实现自定义接口

使用原生接口

1.使用原生接口MyBatis框架需要开发者自定义SQL语句,写在Mapper.xml文件中,实际开发中,会为每个实体类创建对应的Mapper.xml,定义管理该对象数据的SQL

<?xml version="1.0" encoding="UTF-8" 2>
<!DOCTYPE mapper PUBLIC "-//mybatis.orq//DTD Mapper 3.0//EN)"
http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespaces ="com. ztb.mapper. AccoutMapper">
  <insert id="save" parameterType="com.ztb.entity. Account">
  insert into t _account (username , password, age) values (#(username),# (password),#(age)
  </insert>
  </mapper>

namespace通常设置为文件所在包+文件名的形式。
insert标签表示执行添加操作。
select标签表示执行查询操作。
update标签表示执行更新操作。
delete标签表示执行删除操作。
id是实际调用MyBatis方法时需要用到的参数。
parameterType是调用对应方法时参数的数据类型。

2、在全局配置文件config.xml中注册AccountMapper.xml

<configuration>
    <!--配置MyBatis运行环境->
    <environments default="development"> 
    <environment id-"development">
    <!--配置JDBC事务管理-->
    <transactionManager type="JDBC"></transactionManager>
    <!-- POOLED配置JDBC数据源连接池-->
            <dataSource type="POOLED">         
             <property name="driver" value="com.mysql.ci.idbc. Driver"></property>           
             <property name="driver" value="com.mysql.cj.jdbc.Driver"></property>
             <property name-"url" value-"idbc:mysal://localhost:3306/mybatis?useUnicode=true&amp; characterEncoding-UTF-8"> </property>
             <property name="username" value="root"></property>
              <property name="password" value="123456"></property>
         </dataSource>
     </environment>
    </environments>
    < !--注册AccountMapper.xml资源——> 
        < mappers > 
        < mapper = "com/ztb/mapper/AccountMapper.xml " > 
        < / mapper > 
        < / mappers > 
<configuration>
  1. 调用MyBatis的原生接口执行操作
public class Test {
     public static void main(String[] args)//加载MyBatis配置文件
     Inputstream  inputstream=Test.class.getclassLoader ().getResourceAsStream("config.xml");
     SqlSessionFactoryBuilder  sqlSessionFactoryBuilder =new SqlSessionFactoryBuilder();
     SqlsessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(inputstream);
     SqlSession sqlSession = sqlSessionFactory.openSession() ;
     String statement = "com.southwind.mapper.AccoutMapper. save";
     Account account = new Account (11,"张三"," 123123",22);
     sqlSession. insert (statement, account);
     sqlSession.commit();//提交事务

使用Mapper代理实现自定义接口

1.先在持久层(Dao)定义相关的增删改查接口

2、创建接口对应的Mapper.xml,定义接口方法对应的SQL语句。statement标签可根据SQL执行的业务选择insert, delete, update, select.MyBatis框架会根据规则自动创建接口实现类的代理对象。
规则:
Mapper.xml中namespace为接口的全类名。
Mapper.xml中statement的id为接口中对应的方法名。
Mapper.xml 中statement的parameterType和接口中对应方法的参数类型一致。
Mapper.xml 中statement的resultType和接口中对应方法的返回值类型一致.


<mapper namespace="com. southwind.repository.AccountRepository"> 
  <insert id="save" parameterTvpe="com,ztb.Account">
  insert into t_ account (username,password,age) values (#(usernane),#(possword),#( age))
  </insert>
  <update id="update" parameterType-"com.ztb.entity. Account">
  update t_account set username =#(username) ,password =#(password) ,age =#(age) where id =#{id}
  </update>
  
  <select id="findAll" resultType="com. ztb.entity.Account">
  select * from t account
  </select>
  <select id="findById" parameterType="long" resultType="com.ztb.entity.Account">
  select * from t account where id =#(id)
  </select>
</mapper>

3.在config.xml中注册AccountRespository.xml。

 < !--注册AccountMapper.xml资源,注册AccountRespository.xml——> 
        < mappers > 
        < mapper = "com/ztb/mapper/AccountMapper.xml " > 
        < mapper = "com/ztb/repository/AccountRespository.xml " > 
        < / mapper > 
        < / mappers > 

4.调用接口完成相关操作

public class Test {
     public static void main(String[] args)//加载MyBatis配置文件
     Inputstream  inputstream=Test.class.getclassLoader ().getResourceAsStream("config.xml");
     SqlSessionFactoryBuilder  sqlSessionFactoryBuilder =new SqlSessionFactoryBuilder();
     SqlsessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(inputstream);
     SqlSession sqlSession = sqlSessionFactory.openSession() ;
     ///获取接口代理对象
     AccountRepository  accountRepository= sqlSession.getMapper(AccountRepository.class);
     
     
   //  String statement = "com.southwind.mapper.AccoutMapper. save";
    // Account account = new Account (11,"张三"," 123123",22);
     //sqlSession. insert (statement, account);
    // sqlSession.commit();//提交事务

//修改对象
Account account = accountRepository.findById(3L);
account. setUsername ("小明");
account. setPassword ("000");account. setAge(18);
int result =accountRepository.update(account);
sqlSession. commit();//提交事务
System.out.println(result);
sqlSession. close();
//添加对象
Account account = new Account(3L,"王五", "111111",24);
int result = accountRepository. save(account);sqlSession.commit();
//查询全部对象
List<Account> list = aqgountRepository.findALL();
for (Account account:list){ 
 System.out.println(account);
 }
 qlSession.close;
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值