目录
一、添加用户
(1)持久层接口方法
(2)映射文件
(3)测试方法
二、修改用户
(1)持久层接口方法
(2)映射文件
(3)测试方法
三、删除用户
(1)持久层接口方法
(2)映射文件
(3)测试方法
四、查询用户
(1)持久层接口方法
(2)映射文件
(3)测试方法
五、模糊查询
(1)持久层接口方法
(2)映射文件
(3)测试方法
六、分页查询
(1)持久层接口方法
(2)映射文件
(3)测试方法
七、映射文件注意点
一、添加用户
(1)持久层接口方法
public interface UserMapper {//增加用户void add(User user); }
(2)映射文件
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.gq.mapper.UserMapper"><!-- 增加用户--><insert id="add" parameterType="com.gq.pojo.User">insert into user(username,sex,address) values(#{username},#{sex},#{address})</insert> </mapper>
(3)测试方法
@Testpublic void addTest() throws Exception {InputStream is=Resources.getResourceAsStream("SqlMapConfig.xml");SqlSessionFactoryBuilder sqlSessionFactoryBuilder=new SqlSessionFactoryBuilder();SqlSessionFactory sqlSessionFactory=sqlSessionFactoryBuilder.build(is);SqlSession session=sqlSessionFactory.openSession();UserMapper userMapper=session.getMapper(UserMapper.class);User user=new User("大明","女","合肥");userMapper.add(user);session.commit();session.close();is.close();}
二、修改用户
(1)持久层接口方法
public interface UserMapper {//更新用户void update(User user); }
(2)映射文件
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.gq.mapper.UserMapper"><!-- 更新用户--><update id="update" parameterType="com.gq.pojo.User">update user set username=#{username},sex=#{sex},address=#{address} where id=#{id}</update> </mapper>
(3)测试方法
@Testpublic void updateTest() throws Exception{InputStream is=Resources.getResourceAsStream("SqlMapConfig.xml");SqlSessionFactoryBuilder sqlSessionFactoryBuilder=new SqlSessionFactoryBuilder();SqlSessionFactory sqlSessionFactory=sqlSessionFactoryBuilder.build(is);SqlSession session=sqlSessionFactory.openSession();UserMapper userMapper=session.getMapper(UserMapper.class);User user=new User(7,"唐三","男","北京");userMapper.update(user);session.commit();session.close();is.close();}
三、删除用户
(1)持久层接口方法
public interface UserMapper {//删除用户void delete(int userid); }
(2)映射文件
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.gq.mapper.UserMapper"><!--根据id删除用户--><delete id="delete" parameterType="int">delete from user where id=#{userid}</delete> </mapper>
(3)测试方法
@Testpublic void deleteTest() throws Exception{InputStream is=Resources.getResourceAsStream("SqlMapConfig.xml");SqlSessionFactoryBuilder sqlSessionFactoryBuilder=new SqlSessionFactoryBuilder();SqlSessionFactory sqlSessionFactory=sqlSessionFactoryBuilder.build(is);SqlSession session=sqlSessionFactory.openSession();UserMapper userMapper=session.getMapper(UserMapper.class);userMapper.delete(7);session.commit();session.close();is.close();}
四、查询用户
(1)持久层接口方法
public interface UserMapper {//根据id查询用户User findById(int userid); }
(2)映射文件
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.gq.mapper.UserMapper"><!--根据id查询用户 --><select id="findById" parameterType="int" resultType="com.gq.pojo.User">select *from user where id=#{userid}</select> </mapper>
(3)测试方法
@Testpublic void selectByidTest() throws Exception{InputStream is=Resources.getResourceAsStream("SqlMapConfig.xml");SqlSessionFactoryBuilder sqlSessionFactoryBuilder=new SqlSessionFactoryBuilder();SqlSessionFactory sqlSessionFactory=sqlSessionFactoryBuilder.build(is);SqlSession session=sqlSessionFactory.openSession();UserMapper userMapper=session.getMapper(UserMapper.class);User user=userMapper.findById(3);System.out.println("-------------_______---------------");System.out.println("username="+user.getUsername()+" address="+user.getAddress()+" sex="+user.getSex());session.commit();session.close();is.close();}
五、模糊查询
(1)持久层接口方法
List<User> findByNameLike(String username);
(2)映射文件
<select id="findByNameLike" parameterType="string" resultType="com.gq.pojo.User">select *from user where username like #{username}</select>
(3)测试方法
@Testpublic void findNameLikeTest() throws Exception{InputStream is=Resources.getResourceAsStream("SqlMapConfig.xml");SqlSessionFactoryBuilder sqlSessionFactoryBuilder=new SqlSessionFactoryBuilder();SqlSessionFactory sqlSessionFactory=sqlSessionFactoryBuilder.build(is);SqlSession session=sqlSessionFactory.openSession();UserMapper userMapper=session.getMapper(UserMapper.class);List<User> userList=userMapper.findByNameLike("%北京%");for(User user:userList){System.out.println(user.toString());}session.commit();session.close();is.close();}
六、分页查询
(1)持久层接口方法
List<User> findPage(@Param("a1") int start, @Param("a2") int size);
对于这里的@Param注解,解释如下:
它可以定义参数名称,让我们在映射文件直接使用名称即可,如果没有他的话,分页查询传递的则为arg0,arg1....或者是param1,param2......并且这两个是死的,不能改
(2)映射文件
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.gq.mapper.UserMapper"><!-- 分页查询--><select id="findPage" resultType="com.gq.pojo.User"> //因为这里我们前面已经使用@Param注解定义过名字了,不然不可以使用a1,a2select *from user limit #{a1},#{a2}</select> </mapper>
(3)测试方法
public void findPageTest() throws Exception{InputStream is=Resources.getResourceAsStream("SqlMapConfig.xml");SqlSessionFactoryBuilder sqlSessionFactoryBuilder=new SqlSessionFactoryBuilder();SqlSessionFactory sqlSessionFactory=sqlSessionFactoryBuilder.build(is);SqlSession session=sqlSessionFactory.openSession();UserMapper userMapper=session.getMapper(UserMapper.class);List<User> userList=userMapper.findPage(0,2);userList.forEach(System.out::println);session.commit();session.close();is.close();}
七、映射文件注意点
对于映射文件中的一些如parameterType等等,具体解释如下。
parameterType:表示参数类型
resultType:表示返回值的类型
对于parameterType,假如是字符串类型,我们将他的值写为string,而不是java.lang.String,为什么呢?
参数/返回值类型为基本数据类型/包装类/String等类型我们可以写全类名也可以写别名
数据类型 别名 byte _byte long _long short _short int _int int _integer double _double float _float boolean _boolean String string Byte byte Long long Short short Integer int/integer Double double Float float Boolean boolean Date date BigDecimal decimal/bigdecimal Object object Map map HashMap hashmap List list ArrayList arraylist Collection collection Iterator iterator