首页 > MyBatis基础-CRUD

MyBatis基础-CRUD

一、mybatis  环境搭建步骤 

第一步:创建 maven 工程

第二步:导入坐标

第三步:编写必要代码(实体类和持久层接口)

第四步:编写 SqlMapConfig.xml

第五步:编写映射配置文件

第六步:编写测试类

二、编写sqlMapConfig.xml

xml version="1.0" encoding="UTF-8"?>
DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration><environments default="mysql"><environment id="mysql"><transactionManager type="JDBC">transactionManager><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/eesy_mybatis"/><property name="username" value="root"/><property name="password" value="123456"/>dataSource>environment>environments><mappers><mapper resource="com/jzq/dao/UserDao.xml"/>mappers>
configuration>

 

三、 在持久层(DAO)接口中添加CRUD方法 

package com.jzq.dao;import com.jzq.domain.User;import java.util.List;/*** @author jzq* @create 2019-08-24 下午 1:39*/
public interface UserDao {List findAll();/*** 保存方法* @param user*/void saveUser(User user);/*** 修改方法* @param user*/void updateUser(User user);/*** 删除方法* @param userId*/void deleteUser(Integer userId);/*** 寻找指定id用户* @param id* @return*/User findUser(Integer id);/*** 模糊查询*/List findByLikeName(String username);/*** 查询总用户数*/int findTotal();
}

 

四、 在用户的映射配置文件(Mapper)中配置

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.jzq.dao.UserDao"><select id="findAll" resultType="com.jzq.domain.User">SELECT * from userselect><insert id="saveUser" parameterType="com.jzq.domain.User"><selectKey keyProperty="id" keyColumn="id" resultType="int" order="AFTER">SELECT last_insert_id();selectKey>INSERT INTO user(username,birthday,sex,address)VALUE (#{username},#{birthday},#{sex},#{address})insert><update id="updateUser" parameterType="com.jzq.domain.User">UPDATE user set username=#{username},sex=#{sex} WHERE id=#{id};update><delete id="deleteUser" parameterType="Integer">DELETE FROM user WHERE id = #{uId}delete><select id="findUser" parameterType="Integer" resultType="com.jzq.domain.User">SELECT * from user WHERE id = #{uid}select><select id="findByLikeName" parameterType="String" resultType="com.jzq.domain.User">SELECT * from user WHERE username like #{name}select><select id="findTotal" resultType="int">SELECT COUNT(id) from user;select>
mapper>

 

五、测试类测试CRUD方法

package com.jzq.test;import com.jzq.dao.UserDao;
import com.jzq.domain.User;
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.After;
import org.junit.Before;
import org.junit.Test;import java.io.InputStream;
import java.util.Date;
import java.util.List;/*** @author jzq* @create 2019-08-24 下午 2:44* CRUD操作*/
public class MyBatisTest {private InputStream in;private SqlSession sqlSession;private SqlSessionFactory factory;private UserDao userDao;@Before//在测试方法执行前执行public void init() throws Exception {//读取配置文件,生成字节输入流in = Resources.getResourceAsStream("SqlMapConfig.xml");//获取sqlSessionFactoryfactory = new SqlSessionFactoryBuilder().build(in);//获取SQLSession对象sqlSession = factory.openSession();//获取dao的代理对象userDao = sqlSession.getMapper(UserDao.class);}@After//在测试方法执行后执行public void destroy() throws Exception {//释放资源
        sqlSession.commit();sqlSession.close();in.close();}/*** 测试查询方法** @throws Exception*/@Testpublic void testFindAll() throws Exception {//执行查询所有方法List users = userDao.findAll();for (User user : users) {System.out.println(user);}//释放资源
sqlSession.close();in.close();}/*** 测试保存操作*/@Testpublic void testSave() throws Exception {User user = new User();user.setUsername("mybaitis_save");user.setBirthday(new Date());user.setSex("男");user.setAddress("北京市非台区");//执行保存方法
        userDao.saveUser(user);sqlSession.commit();}/*** 测试保存操作*/@Testpublic void testFindInsertId() throws Exception {User user = new User();user.setUsername("mybaitis_last insert");user.setBirthday(new Date());user.setSex("女");user.setAddress("北京市台区");System.out.println("执行保存操作之前" + user);//执行保存方法
        userDao.saveUser(user);System.out.println("执行保存操作之后" + user);}/*** 测试更新操作*/@Testpublic void testUpdate() throws Exception {User user = new User();user.setId(50);user.setUsername("mybaitis_update");user.setSex("女");//执行查询所有方法
        userDao.updateUser(user);}/*** 测试删除操作*/@Testpublic void testDelete() throws Exception {userDao.deleteUser(48);}/*** 测试查找指定操作*/@Testpublic void testFindOne() throws Exception {User user = userDao.findUser(50);System.out.println(user);}/*** 测试模糊查找操作*/@Testpublic void testFindLikeName() throws Exception {List users = userDao.findByLikeName("%小%");for (User user : users) {System.out.println(user);}}/*** 测试查询总用户数*/@Testpublic void testFindTotal(){int count = userDao.findTotal();System.out.println(count);}
}

 

转载于:https://www.cnblogs.com/strong-FE/p/11422047.html

更多相关:

  • struts 2 结合json 在struts 2中,要结合json的话,其实是不错的选择,最近做一个登陆系统时,可以考虑选择用 struts 2结合json,下面是要点 register页面    

    Drupal6中的表单如果不让修改

    2019独角兽企业重金招聘Python工程师标准>>> 做好的表单,怎么不让用户进行修改。 $form['user'] = array(    '#type'=> 'textfield',    '#title' => '姓名(*)',      '#default_value' => $feedbacks["u...

  • 在asp.net中的数据绑定中,我们经常会用到Eval,不过大家都知道Eval绑定是通过反射来实现的, 而反射势必会对性能造成一定的影响。不过有两种替代的方式来实现绑定数据,对性能略有提高。 1 当数据源为DataTable时,用下面的方式: 后台代码 protected void Page_Load(object sender,...

  •     先吐为敬!   最近心血来潮研究nodejs如何完成微信支付功能,结果网上一搜索,一大堆“代码拷贝党”、“留一手”、“缺斤少两”、“不说人话”、“自己都没跑通还出来发blog”、“各种缺少依赖包”、“各种注释都没有”、“自己都不知道在写什么”的程序大神纷纷为了增加自己博客一个帖子的名额而发布了各种千奇百�...

  • 阅读ceph源码过程中需要明确当前操作是由哪个线程发出,此时需要根据线程id来确认线程名称 C++获取线程id是通过系统调用来直接获取 函数描述 头文件: 函数名称:syscall(SYS_gettid) 该函数直接返回了一个pid_t int类型的数字,即为当前线程id 此外函数pthread_s...

  • 面试题 分库分表之后,id 主键如何处理? 面试官心理分析 其实这是分库分表之后你必然要面对的一个问题,就是 id 咋生成?因为要是分成多个表之后,每个表都是从 1 开始累加,那肯定不对啊,需要一个全局唯一的 id 来支持。所以这都是你实际生产环境中必须考虑的问题。 面试题剖析 基于数据库的实现方案 数据库自增 id 这个就是说你的...

  • ORM操作    单表、一对多表操作 1 from django.db import models 2 3 4 class UserGroup(models.Model): 5 title = models.CharField(max_length=32) 6 7 8 class UserInfo(m...

  • 建立如下表: 建表语句: class表创建语句 create table class(cid int not null auto_increment primary key, caption varchar(32) not null)engine=innodb default charset=utf8;student表创建语句 c...