本文主要是介绍mybatis学习笔记(1)-xml实体映射和测试类,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1.user.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:命名空间,用于隔离sql,还有一个很重要的作用,后面会讲 -->
<mapper namespace="user"><!-- id:statement的id 或者叫做sql的id --><!-- parameterType:声明输入参数的类型 --><!-- resultType:声明输出结果的类型,应该填写pojo的全路径 --><!-- #{}:输入参数的占位符,相当于jdbc的? --><select id="queryUserId" parameterType="int"resultType="com.skiff.www.domain.User">select * from user where id = #{id}</select><!-- 如果返回多个结果,mybatis会自动把返回的结果放在list容器中 --><!-- resultType的配置和返回一个结果的配置一样 --><select id="queryUserByUsername1" parameterType="string"resultType="com.skiff.www.domain.User">SELECT * FROM user WHERE username LIKE #{username}</select><!-- 如果传入的参数是简单数据类型,${}里面必须写value --><select id="queryUserByUsername2" parameterType="string"resultType="com.skiff.www.domain.User">SELECT * FROM `user` WHERE username LIKE '%${value}%'</select><!-- 插入语句中values中括号的字段和数据库中的表中的数据是一一对应的 而value后面的数据是实体的对象中对应的属性 --><!-- 保存用户 --><insert id="saveUser" parameterType="com.skiff.www.domain.User"><!-- selectKey 标签实现主键返回 --><!-- keyColumn:主键对应的表中的哪一列 --><!-- keyProperty:主键对应的pojo中的哪一个属性 --><!-- order:设置在执行insert语句前执行查询id的sql,在执行insert语句之后执行查询id的sql --><!-- resultType:设置返回的id的类型 --><selectKey keyColumn="id" keyProperty="id" order="AFTER"resultType="int">SELECT LAST_INSERT_ID()</selectKey>INSERT INTO `user`(username,birthday,sex,address) VALUES(#{name},#{birthday},#{sex},#{address})</insert><!-- 更新用户 --><update id="updateUserById" parameterType="com.skiff.www.domain.User">UPDATE `user` SETusername = #{name},address = #{address},birthday = #{birthday} WHERE id = #{id}</update><!-- 删除用户 --><delete id="deleteUserById" parameterType="int">delete from user whereid=#{id}</delete></mapper>
2.采用junit测试增删改查
/** * @文件名称: TestUser.java * @描述: TODO * @作者: 一叶扁舟(skiff)* @时间:2018年1月9日 上午10:16:07 * @版本:V1.0 */
package test.com.skiff.www.testUser;import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.List;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 org.junit.Before;
import org.junit.Test;import com.skiff.www.domain.User;/** * @类功能说明: * @作者: 一叶扁舟 (skiff)* @创建时间:2018年1月9日 上午10:16:07 * @版本:V1.0 */
public class TestUser {private SqlSessionFactory sqlSessionFactory = null;@Beforepublic void init() throws IOException{SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();//2.加载sqlMapConfig.xml文件InputStream is = Resources.getResourceAsStream("sqlMapConfig.xml");//3.创建一个factory工厂sqlSessionFactory = builder.build(is);}@Testpublic void testSelect(){User user = new User();user.setName("一叶扁舟");user.setAddress("福州");user.setSex("1");user.setBirthday(new Date());
// 4.创建一个sessionSqlSession session = sqlSessionFactory.openSession();// 5. 执行SqlSession对象执行查询,获取结果User// 第一个参数是User.xml的statement的id,第二个参数是执行sql需要的参数;User user1 = session.selectOne("queryUserId",1);// 6. 打印结果System.out.println(user1);// 7. 释放资源session.close();}@Testpublic void testSaveUser(){User user = new User();user.setName("一叶扁舟");user.setAddress("福州");user.setSex("1");user.setBirthday(new Date());SqlSession session = sqlSessionFactory.openSession();session.insert("saveUser",user);System.out.println(user);session.commit();session.close();}@Testpublic void queryName(){// 4. 创建SqlSession对象SqlSession sqlSession = sqlSessionFactory.openSession();// 5. 执行SqlSession对象执行查询,获取结果User// 查询多条数据使用selectList方法List<Object> list = sqlSession.selectList("queryUserByUsername1", "%张%");// 6. 打印结果for (Object user : list) {System.out.println(user);}// 7. 释放资源sqlSession.close();}@Testpublic void testQueryUserByUsername2() throws Exception {// 4. 创建SqlSession对象SqlSession sqlSession = sqlSessionFactory.openSession();// 5. 执行SqlSession对象执行查询,获取结果User// 查询多条数据使用selectList方法List<Object> list = sqlSession.selectList("queryUserByUsername2", "王");// 6. 打印结果for (Object user : list) {System.out.println(user);}// 7. 释放资源sqlSession.close();}@Testpublic void testUpdateUserById() {// 4. 创建SqlSession对象SqlSession sqlSession = sqlSessionFactory.openSession();// 5. 执行SqlSession对象执行更新// 创建需要更新的UserUser user = new User();user.setId(30);user.setName("关羽");user.setSex("1");user.setBirthday(new Date());user.setAddress("魔都");sqlSession.update("updateUserById", user);// 需要进行事务提交sqlSession.commit();// 7. 释放资源sqlSession.close();}@Testpublic void testDeleteUserById() {// 4. 创建SqlSession对象SqlSession sqlSession = sqlSessionFactory.openSession();// 5. 执行SqlSession对象执行删除sqlSession.delete("deleteUserById", 30);// 需要进行事务提交sqlSession.commit();// 7. 释放资源sqlSession.close();}}
这篇关于mybatis学习笔记(1)-xml实体映射和测试类的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!