首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

MyBatis3_轻巧入门_2

2013-10-28 
MyBatis3_轻松入门_2MyBatis3博文目录?使用Mapper接口形式操作数据库对数据库的CURD操作的配置?在上一篇博

MyBatis3_轻松入门_2

MyBatis3

博文目录

    ?使用Mapper接口形式操作数据库对数据库的CURD操作的配置

?

在上一篇博客中我们已经实现了对简单数据库的查询,在本篇博客中,我们继续深入探讨MyBatis操作数据库的更深层的东西(木有高深的东西,一练就会)!

?

问题:

User user=(User) session.selectOne("com.cn.mapper.UserMapper.findById", 2);

?

我们的selectOne方法可以接收一个或两个参数,第一个参数是我们的查询方法,第二个参数使我们给方法传入的参数,并且MyBatis只支持传入一个参数!

?

如果我们要通过用户名和用户密码来查一个用户(假设他俩可以唯一确定一个值),该怎么实现呢??

?

MyBatis要求,如果你要传入多个选择条件,请封装成一个对象给我传进来

?

这是很不方便的,并且每次查询我都要写那么长的完全限定名也是不爽的,我们使用下面的一种新的方式进行查询操作!

?

?

在mapper包中建立与我们配置的UserMapper.xml名称相同的一个接口:UserMapper.java,并且里面提供一个与我们配置的相同的方法:findById(int id);

package com.cn.mapper;import com.cn.pojo.User;//UserMapper接口名=配置的UserMapper.xml的名public interface UserMapper {//方法对应UserMapper.xml中的select中的ID=findById,参数对应配置中的parameterType类型,返回值也对应public User findById(int id);}

?实现另一种方式的查询:

package com.cn.test;import java.io.Reader;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 com.cn.mapper.UserMapper;import com.cn.pojo.User;public class MyBatis {public static void main(String[] args) throws Exception {Reader reader=Resources.getResourceAsReader("mybatis.xml");SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(reader);SqlSession session=factory.openSession();//MyBatis自动帮你生成接口的实现类UserMapper userMapper=session.getMapper(UserMapper.class);//使用接口实现类对象调用方法获取查询结果User user=userMapper.findById(1);System.out.println(user.getUsername());/*User user=(User) session.selectOne("com.cn.mapper.UserMapper.findById", 2);System.out.println(user.getUsername());*/session.close();}}

?

?下面我们使用这种方式进行其他数据库操作:

添加操作

?在UserMapper.xml中添加一条语句:

<insert id="save" parameterType="User">insert into t_user(username,password) values(#{username},#{password})</insert>

?

?在UserMapper.java中添加一个方法:

public void save(User user);

? 测试类的main方法:

package com.cn.test;import java.io.Reader;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 com.cn.mapper.UserMapper;import com.cn.pojo.User;public class MyBatis {public static void main(String[] args) throws Exception {Reader reader=Resources.getResourceAsReader("mybatis.xml");SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(reader);SqlSession session=factory.openSession();User user=new User();user.setUsername("mybatis");user.setPassword("000000");UserMapper userMapper=session.getMapper(UserMapper.class);userMapper.save(user);//insert update delete操作都需要事务的支持,事务必须提交后才有效//事务提交有两种方式:1,下面这种,2,在上面的factory.openSession()参数列表中写个true:openSession(true);表示自动提交事务session.commit();session.close();}}

?

?下面的是完整的CURD配置

<?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="com.cn.mapper.UserMapper"> <select id="findById" parameterType="int" resultType="User">   select id,username,password from t_user where id = #{id} </select>   <insert id="save" parameterType="User"> insert into t_user(username,password) values(#{username},#{password}) </insert>  <update id="edit" parameterType="User"> update t_user set username=#{username},password=#{password} where id=#{id} </update>  <delete id="del" parameterType="int"> delete from t_user where id=#{id} </delete><select id="findByUsernamePassword" parameterType="User" resultType="User"> select id,username,password from t_user where username=#{username} and password=#{password} </select></mapper> 

?

package com.cn.mapper;import com.cn.pojo.User;public interface UserMapper {public User findById(int id);public void save(User user);public void edit(User user);public void del(int id);public User findByUsernamePassword(User user);}

?

用这种方法可以解决上面提到的问题:多条件查询。使用原始的也是可以的,他俩基本没啥区别!

这篇博文先写到这里,下一篇继续介绍查询:连接查询

?

?

?

热点排行