MyBatis3 之增删改查操作

本文详细介绍了MyBatis3的CRUD操作,包括配置文件、映射文件、DAO接口及其实现,以及如何通过MyBatis进行增删改查等常见数据库操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MyBatis3  之  CRUD:

jar包就不上了,主要看代码。先总览一下文件结构:

MyBatis3 之增删改查操作

然后是代码:

1)configuration.xml     , MyBatis主配置文件

01<?xml version="1.0" encoding="UTF-8"?>
02<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
03"http://mybatis.org/dtd/mybatis-3-config.dtd">
04 
05<!-- 注意:每个标签必须按顺序写,会提示错误:-->
06<configuration>
07    <!-- 属性配置 -->
08    <properties resource="jdbc.properties"/>
09     
10    <!-- 设置缓存和延迟加载等等重要的运行时的行为方式 -->
11    <settings>
12        <!-- 设置超时时间,它决定驱动等待一个数据库响应的时间  -->
13        <setting name="defaultStatementTimeout" value="25000"/>
14    </settings>
15     
16    <!-- 别名 -->
17    <typeAliases>
18        <typeAlias alias="User" type="com.mybatis.model.User"/>
19    </typeAliases>
20     
21    <environments default="development">
22        <!-- environment 元素体中包含对事务管理和连接池的环境配置 -->
23        <environment id="development">
24            <transactionManager type="JDBC" />
25            <dataSource type="POOLED">
26                <property name="driver" value="${driver}" />
27                <property name="url" value="${url}" />
28                <property name="username" value="${username}" />
29                <property name="password" value="${password}" />
30            </dataSource>
31        </environment>
32    </environments>
33     
34    <!-- ORM映射文件 -->
35    <mappers>
36        <mapper resource="com/mybatis/model/UserSqlMap.xml" />
37    </mappers>
38     
39</configuration>

 2)jdbc.properties

1driver=com.mysql.jdbc.Driver
2url=jdbc:mysql://localhost:3306/mybatis
3username=root
4password=123456
3)log4j.properties
1log4j.rootLogger=DEBUG,A1
2# \u8f93\u51fa\u5230\u63a7\u5236\u53f0
3log4j.appender.A1=org.apache.log4j.ConsoleAppender
4log4j.appender.A1.layout=org.apache.log4j.PatternLayout
5log4j.appender.A1.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss} [\u65E5\u5FD7\u4FE1\u606F] %m%n
4)User .java
01package com.mybatis.model;
02 
03import java.io.Serializable;
04 
05@SuppressWarnings("serial")
06public class User implements Serializable {
07     
08    private int id;
09    private String userName;
10    private String password;
11     
12    public User(){
13    }
14     
15    public int getId() {
16        return id;
17    }
18    public void setId(int id) {
19        this.id = id;
20    }
21    public String getUserName() {
22        return userName;
23    }
24    public void setUserName(String userName) {
25        this.userName = userName;
26    }
27    public String getPassword() {
28        return password;
29    }
30    public void setPassword(String password) {
31        this.password = password;
32    }
33 
34}
5)UserSqlMap.xml
01<?xml version="1.0" encoding="UTF-8"?>
02<!DOCTYPE mapper    
03PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"    
04"http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">    
05    
06<!-- namespace用于java代码调用时识别指定xml的mapper文件 -->
07<mapper namespace="com.mybatis.model.User">
08    <!-- 配置ORM映射 -->
09    <resultMap type="User" id="user_orm">
10        <id property="id" column="id"/>
11        <result property="userName" column="userName"/>
12        <result property="password" column="password"/>
13    </resultMap>
14     
15    <!-- 用来定义可重用的SQL代码段 -->
16    <sql id="demo_sql">
17       userName,password
18    </sql>
19     
20    <insert id="inser_user" parameterType="User">
21        <!-- include 引用可重用的SQL代码段 -->
22        INSERT INTO USER(<include refid="demo_sql"/>) VALUES(#{userName},#{password})
23    </insert>
24     
25    <update id="update_user" parameterType="User">
26        UPDATE USER SET userName=#{userName} ,password=#{password}  WHERE id=#{id}
27    </update>
28     
29    <update id="delete_user" parameterType="int">
30        DELETE FROM USER WHERE id=#{id}
31    </update>
32   
33    <select id="selectAll_user" useCache="false" flushCache="true" resultMap="user_orm">
34        SELECT * FROM USER
35    </select>
36     
37    <!-- 使用map传人多个参数 -->
38    <select id="selectList_user" useCache="false" flushCache="true" parameterType="map" resultMap="user_orm">
39        SELECT * FROM USER LIMIT #{pageNow},#{pageSize}
40    </select>
41     
42    <select id="selectById_user" parameterType="int" resultType="User">
43        SELECT * FROM USER WHERE id= #{id}
44    </select>
45     
46    <select id="selectCount_user"  resultType="int">
47        SELECT count(*) FROM USER
48    </select>
49     
50    <select id="selectByName_user" parameterType="String" resultType="User">
51        SELECT * FROM USER WHERE userName= #{userName}
52    </select>
53     
54</mapper>
6)SessionFactoryUtil.java  MyBatis工具类,用于创建SqlSessionFactory
01package com.mybatis.sessionfactory;
02 
03import java.io.IOException;
04import java.io.Reader;
05 
06import org.apache.ibatis.io.Resources;
07import org.apache.ibatis.session.SqlSession;
08import org.apache.ibatis.session.SqlSessionFactory;
09import org.apache.ibatis.session.SqlSessionFactoryBuilder;
10 
11public class SessionFactoryUtil {
12     
13    private static final String RESOURCE = "Configuration.xml";
14    private static SqlSessionFactory sqlSessionFactory = null;
15    private static ThreadLocal<SqlSession> threadLocal = new ThreadLocal<SqlSession>();
16 
17    static {
18        Reader reader = null;
19        try {
20            reader = Resources.getResourceAsReader(RESOURCE);
21        } catch (IOException e) {
22            throw new RuntimeException("Get resource error:"+RESOURCE, e);
23        }
24 
25        sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
26    }
27     
28    /**
29     * Function  : 获得SqlSessionFactory
30     */
31    public static SqlSessionFactory getSqlSessionFactory(){  
32        return sqlSessionFactory;  
33    }
34     
35    /**
36     * Function  : 重新创建SqlSessionFactory
37     */
38    public static void rebuildSqlSessionFactory(){
39        Reader reader = null;
40        try {
41            reader = Resources.getResourceAsReader(RESOURCE);
42        } catch (IOException e) {
43            throw new RuntimeException("Get resource error:"+RESOURCE, e);
44        }
45 
46        sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
47    }
48     
49    /**
50     * Function  : 获取sqlSession
51     */
52    public static SqlSession getSession(){
53        SqlSession session = threadLocal.get();
54         
55        if(session!=null){
56            if(sqlSessionFactory == null){
57                getSqlSessionFactory();
58            }
59            //如果sqlSessionFactory不为空则获取sqlSession,否则返回null
60            session = (sqlSessionFactory!=null) ? sqlSessionFactory.openSession(): null;
61        }
62         
63        return session;
64    }
65     
66    /**
67     * Function  : 关闭sqlSession
68     */
69    public static void closeSession(){
70        SqlSession session = threadLocal.get();
71        threadLocal.set(null);
72        if(session!=null){
73            session.close();
74        }
75    }
76}
7)UserDao interface
01package com.mybatis.dao;
02 
03import java.util.List;
04 
05import com.mybatis.model.User;
06 
07public interface UserDao {
08     
09    public User load(int id);
10    public void add(User user);
11    public void update(User user);
12    public void delete(int id);
13    public User findByName(String userName);
14    public List<User>  queryAllUser();
15    public List<User> list(int pageNow,int pageSize);
16    public int getAllCount();
17     
18}
8)UserDaoImpl
01package com.mybatis.dao.implment;
02 
03import java.util.HashMap;
04import java.util.List;
05import java.util.Map;
06 
07import org.apache.ibatis.session.SqlSession;
08 
09import com.mybatis.dao.UserDao;
10import com.mybatis.model.User;
11import com.mybatis.sessionfactory.SessionFactoryUtil;
12 
13 
14public class UserDaoImpl implements UserDao {
15     
16    public User load(int id){
17        SqlSession session = SessionFactoryUtil.getSqlSessionFactory().openSession();
18        User user = (User) session.selectOne("com.mybatis.model.User.selectById_user", id);
19        session.close();
20        return user;
21    }
22 
23    public void add(User user) {
24        SqlSession session = SessionFactoryUtil.getSqlSessionFactory().openSession();
25        session.insert("com.mybatis.model.User.inser_user", user);
26        session.commit();
27        session.close();
28    }
29     
30    public void update(User user){
31        SqlSession session = SessionFactoryUtil.getSqlSessionFactory().openSession();
32        session.update("com.mybatis.model.User.update_user", user);
33        session.commit();
34        session.close();
35    }
36     
37    public void delete(int id){
38        SqlSession session = SessionFactoryUtil.getSqlSessionFactory().openSession();
39        session.delete("com.mybatis.model.User.delete_user", id);
40        session.close();
41    }
42     
43    public User findByName(String userName){
44        SqlSession session = SessionFactoryUtil.getSqlSessionFactory().openSession();
45        User user = (User)session.selectOne("com.mybatis.model.User.selectByName_user", userName);
46        session.close();
47        return user;
48    }
49     
50    @SuppressWarnings("unchecked")
51    public List<User> queryAllUser() {
52        SqlSession session = SessionFactoryUtil.getSqlSessionFactory().openSession();
53        List<User> list = session.selectList("com.mybatis.model.User.selectAll_user");
54        session.close();
55        return list;
56    }
57     
58    @SuppressWarnings("unchecked")
59    public List<User> list(int pageNow , int pageSize){
60        SqlSession session = SessionFactoryUtil.getSqlSessionFactory().openSession();
61        Map<String,Object> params = new HashMap<String ,Object>();
62        params.put("pageNow", pageNow);
63        params.put("pageSize", pageSize);
64        List<User> list = session.selectList("com.mybatis.model.User.selectList_user", params);
65        session.close();
66        return list;
67    }
68     
69    public int getAllCount(){
70        SqlSession session =SessionFactoryUtil.getSqlSessionFactory().openSession();
71        int count = (Integer) session.selectOne("com.mybatis.model.User.selectCount_user");
72        session.close();
73        return count;
74    }
75     
76}
9)测试类:
01package com.mybatis.dao.implment;
02 
03import java.util.List;
04 
05import org.junit.Test;
06 
07import com.mybatis.dao.UserDao;
08import com.mybatis.model.User;
09 
10public class UserDaoTest {
11     
12    private UserDao userDao = new UserDaoImpl();
13     
14    @Test
15    public void testLoad(){
16        User u = userDao.load(1);
17        if(u!=null){
18            System.out.println("UserId:"+u.getId()+"  UserName:"+u.getUserName()+"  Password:"+u.getPassword());
19        }
20        else{
21            System.out.println("id不存在!!");
22        }
23    }
24     
25    @Test
26    public void testAdd(){
27        User user = new User();
28        user.setUserName("admin5");
29        user.setPassword("123456");
30        userDao.add(user);
31    }
32     
33    @Test
34    public void testUpdate(){
35        User user = new User();
36        user.setId(2);
37        user.setUserName("manager");
38        user.setPassword("123456");
39        userDao.update(user);
40    }
41     
42    @Test
43    public void testQueryAllUser(){
44        List<User> list = userDao.queryAllUser();
45        if(list!=null&list.size()>0){
46            for(User u:list){
47                System.out.println("UserId:"+u.getId()+"  UserName:"+u.getUserName()+"  Password:"+u.getPassword());
48            }
49        }
50    }
51     
52    @Test
53    public void testFindByName(){
54        User u = userDao.findByName("admin");
55        if(u!=null){
56            System.out.println("UserId:"+u.getId()+"  UserName:"+u.getUserName()+"  Password:"+u.getPassword());
57        }
58        else{
59            System.out.println("用户名不存在!!");
60        }
61    }
62     
63    @Test
64    public void testList(){
65        List<User> list = userDao.list(1, 4);
66        if(list!=null&list.size()>0){
67            for(User u:list){
68                System.out.println("UserId:"+u.getId()+"  UserName:"+u.getUserName()+"  Password:"+u.getPassword());
69            }
70        }
71    }
72     
73    @Test
74    public void testGetAllCount(){
75            System.out.println("All Count : "+userDao.getAllCount());
76    }
77     
78    @Test
79    public void testDelete(){
80        userDao.delete(3);
81    }
82 
83}
10)执行testFindByName():

MyBatis3 之增删改查操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值