mybatis知识点总结(3)关于接口的代码



7基于接口代理的方式来操作我们的数据库

Jdk的动态代理:可以为我们的接口产生实现类

 

1接口的名字要与我们mapper.xml名字保持一致UserMapper.java   è  UserMapper.xml

2接口当中的方法 要与我们的xml当中sqlId保持一致

3我们接口的位置要与我们xml存放的位置保持一致

4xml当中的nameSpace一定要是我们接口的全限定名

5xml一定要在SqlMapConfig.xml当中加载

 

第一步:定义接口

public interface UserMapper {

 

User getUserById(int id);

 

List<User> getUserByAddress(Stringaddress);

 

}

 

第二步:定义xml

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

  <!-- namespace的作用:用于区分多个xml文件-->

<mapper namespace="cn.itcast.mybatis.demo4.UserMapper">

 

 <!--这里的id与我们接口当中的方法名保持一致-->

  <select id="getUserById" parameterType="int" resultType="cn.itcast.mybatis.pojo.User">

  select * from user where id = #{id}

  </select>

  

  

  <!--通过地址来进行模糊查询 -->

  <select id="getUserByAddress" parameterType="string" resultType="cn.itcast.mybatis.pojo.User">

  select * from user where address like '%${value}%'

  </select>

  

  

</mapper>

 

第三步sqlMapConfig.xml当中加载xml

<mappers>

    <!-- <mapper resource="org/mybatis/example/BlogMapper.xml"/> -->

    <mapperresource="mapper.xml"/>

    

    <!--通过反射的知识,来加载我们的xml文件-->

    <mapper class="cn.itcast.mybatis.demo4.UserMapper"/>

    

  </mappers>

 

第四步:测试用例

       private  SqlSessionFactoryBuilderbuilder;

private SqlSessionFactorysqlSessionFactory;

private SqlSessionsqlSession;

@Before

public void init()throws IOException{

//第一步:获取我们的SqlSessionFactoryBuilder

 builder =new SqlSessionFactoryBuilder();

//第二步:通过SqlSessionFactoryBuilder调用build来获取我们的SqlSessionFactory

 sqlSessionFactory =builder.build(Resources.getResourceAsStream("SqlMapConfig.xml"));

//第三步:通过我们的SqlSessionFactory来获取我们的sqlSession

 sqlSession =sqlSessionFactory.openSession();

}

/**

 *通过id来进行查询用户

 *@throws Exception

 */

@Test

public void getUserById()throws Exception {

//通过动态代理来为我们的接口产生一个实现类 , 可以理解为  new   UserMapperImpl();

UserMappermapper =sqlSession.getMapper(UserMapper.class);

Useruser =  mapper.getUserById(29);

System.out.println(user);

sqlSession.close();

}

/**

 *通过地址来进行模糊查询

 *@throws Exception

 */

@Test

public void getUserByAddress()throws Exception {

UserMappermapper =sqlSession.getMapper(UserMapper.class);

List<User>userList =mapper.getUserByAddress("内蒙");

for (Useruser :userList) {

System.out.println(user);

}

sqlSession.close();

}

                                             

 

基于接口代理方式实现数据库的添加与修改

接口当中的方法定义

public interface UserMapper {

 

User getUserById(int id);

 

List<User> getUserByAddress(Stringaddress);

 

void updateUser(User user);

 

void insertUser(User user);

 

}

 

Xml当中的sql语句定义

<!--更新的操作 -->

  <update id="updateUser" parameterType="cn.itcast.mybatis.pojo.User" >

  update  user  set address = #{address} where id = #{id}

  </update>

  

  

  <!--插入数据的操作 -->

  <select id="insertUser" parameterType="cn.itcast.mybatis.pojo.User">

  insert into user (username,birthday,sex,address) values(#{username},#{birthday},#{sex},#{address})

  </select>

 

 

测试用例

/**

 *数据库的修改操作

 *@throws Exception

 */

@Test

public void updateUser()throws Exception {

UserMappermapper =sqlSession.getMapper(UserMapper.class);

Useruser =new User();

user.setId(28);

user.setAddress("山东");

mapper.updateUser(user);

sqlSession.commit();

sqlSession.close();

}

/**

 *插入操作

 */

@Test

public void insertUser()throws Exception {

//通过动态代理,获取我们的UserMapper的实现类

UserMappermapper =sqlSession.getMapper(UserMapper.class);

Useruser =new User();

user.setAddress("湖南");

user.setBirthday(new Date());

user.setSex("0");

user.setUsername("凤姐");

mapper.insertUser(user);

sqlSession.commit();

sqlSession.close();

}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值