configuration.xml , MyBatis主配置文件
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <!-- 注意:每个标签必须按顺序写,会提示错误:--> <configuration> <!-- 属性配置 --> <properties resource="jdbc.properties"/> <!-- 设置缓存和延迟加载等等重要的运行时的行为方式 --> <settings> <!-- 设置超时时间,它决定驱动等待一个数据库响应的时间 --> <setting name="defaultStatementTimeout" value="25000"/> </settings> <!-- 别名 --> <typeAliases> <typeAlias alias="User" type="com.mybatis.model.User"/> </typeAliases> <environments default="development"> <!-- environment 元素体中包含对事务管理和连接池的环境配置 --> <environment id="development"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="${driver}" /> <property name="url" value="${url}" /> <property name="username" value="${username}" /> <property name="password" value="${password}" /> </dataSource> </environment> </environments> <!-- ORM映射文件 --> <mappers> <mapper resource="com/mybatis/model/UserSqlMap.xml" /> </mappers> </configuration>
jdbc.properties
driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8 username=root password=123456
log4j.properties
log4j.rootLogger=debug, stdout, R log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%5p - %m%n log4j.appender.R=org.apache.log4j.RollingFileAppender log4j.appender.R.File=firestorm.log log4j.appender.R.MaxFileSize=100KB log4j.appender.R.MaxBackupIndex=1 log4j.appender.R.layout=org.apache.log4j.PatternLayout log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n log4j.logger.com.codefutures=DEBUG
User .java
package com.mybatis.model; import java.io.Serializable; @SuppressWarnings("serial") public class User implements Serializable { private int id; private String userName; private String password; public User(){ } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
UserSqlMap.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd"> <!-- namespace用于java代码调用时识别指定xml的mapper文件 --> <mapper namespace="com.mybatis.model.User"> <!-- 配置ORM映射 --> <resultMap type="User" id="user_orm"> <id property="id" column="id"/> <result property="userName" column="userName"/> <result property="password" column="password"/> </resultMap> <!-- 用来定义可重用的SQL代码段 --> <sql id="demo_sql"> userName,password </sql> <insert id="inser_user" parameterType="User"> <!-- include 引用可重用的SQL代码段 --> INSERT INTO USER(<include refid="demo_sql"/>) VALUES(#{userName},#{password}) </insert> <update id="update_user" parameterType="User"> UPDATE USER SET userName=#{userName} ,password=#{password} WHERE id=#{id} </update> <update id="delete_user" parameterType="int"> DELETE FROM USER WHERE id=#{id} </update> <select id="selectAll_user" useCache="false" flushCache="true" resultMap="user_orm"> SELECT * FROM USER </select> <!-- 使用map传人多个参数 --> <select id="selectList_user" useCache="false" flushCache="true" parameterType="map" resultMap="user_orm"> SELECT * FROM USER LIMIT #{pageNow},#{pageSize} </select> <select id="selectById_user" parameterType="int" resultType="User"> SELECT * FROM USER WHERE id= #{id} </select> <select id="selectCount_user" resultType="int"> SELECT count(*) FROM USER </select> <select id="selectByName_user" parameterType="String" resultType="User"> SELECT * FROM USER WHERE userName= #{userName} </select> <!--模糊 MyIbatis 3.2.0--> <select id="selectUserByName" parameterType="String" resultMap="user_orm"> SELECT * FROM USER WHERE userName like "%"#{userName}"%" </select> </mapper>
SessionFactoryUtil.java MyBatis工具类,用于创建SqlSessionFactory
package com.mybatis.sessionfactory; import java.io.IOException; 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; public class SessionFactoryUtil { private static final String RESOURCE = "Configuration.xml"; private static SqlSessionFactory sqlSessionFactory = null; private static ThreadLocal<SqlSession> threadLocal = new ThreadLocal<SqlSession>(); static { Reader reader = null; try { reader = Resources.getResourceAsReader(RESOURCE); } catch (IOException e) { throw new RuntimeException("Get resource error:"+RESOURCE, e); } sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); } /** * Function : 获得SqlSessionFactory */ public static SqlSessionFactory getSqlSessionFactory(){ return sqlSessionFactory; } /** * Function : 重新创建SqlSessionFactory */ public static void rebuildSqlSessionFactory(){ Reader reader = null; try { reader = Resources.getResourceAsReader(RESOURCE); } catch (IOException e) { throw new RuntimeException("Get resource error:"+RESOURCE, e); } sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); } /** * Function : 获取sqlSession */ public static SqlSession getSession(){ SqlSession session = threadLocal.get(); if(session!=null){ if(sqlSessionFactory == null){ getSqlSessionFactory(); } //如果sqlSessionFactory不为空则获取sqlSession,否则返回null session = (sqlSessionFactory!=null) ? sqlSessionFactory.openSession(): null; } return session; } /** * Function : 关闭sqlSession */ public static void closeSession(){ SqlSession session = threadLocal.get(); threadLocal.set(null); if(session!=null){ session.close(); } } }
UserDao interface
package com.mybatis.dao; import java.util.List; import com.mybatis.model.User; public interface UserDao { public User load(int id); public void add(User user); public void update(User user); public void delete(int id); public User findByName(String userName); public List<User> queryAllUser(); public List<User> list(int pageNow,int pageSize); public int getAllCount(); }
UserDaoImpl
package com.mybatis.dao.implment; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.ibatis.session.SqlSession; import com.mybatis.dao.UserDao; import com.mybatis.model.User; import com.mybatis.sessionfactory.SessionFactoryUtil; public class UserDaoImpl implements UserDao { public User load(int id){ SqlSession session = SessionFactoryUtil.getSqlSessionFactory().openSession(); User user = (User) session.selectOne("com.mybatis.model.User.selectById_user", id); session.close(); return user; } public void add(User user) { SqlSession session = SessionFactoryUtil.getSqlSessionFactory().openSession(); session.insert("com.mybatis.model.User.inser_user", user); session.commit(); session.close(); } public void update(User user){ SqlSession session = SessionFactoryUtil.getSqlSessionFactory().openSession(); session.update("com.mybatis.model.User.update_user", user); session.commit(); session.close(); } public void delete(int id){ SqlSession session = SessionFactoryUtil.getSqlSessionFactory().openSession(); session.delete("com.mybatis.model.User.delete_user", id); session.close(); } public User findByName(String userName){ SqlSession session = SessionFactoryUtil.getSqlSessionFactory().openSession(); User user = (User)session.selectOne("com.mybatis.model.User.selectByName_user", userName); session.close(); return user; } @SuppressWarnings("unchecked") public List<User> queryAllUser() { SqlSession session = SessionFactoryUtil.getSqlSessionFactory().openSession(); List<User> list = session.selectList("com.mybatis.model.User.selectAll_user"); session.close(); return list; } @SuppressWarnings("unchecked") public List<User> list(int pageNow , int pageSize){ SqlSession session = SessionFactoryUtil.getSqlSessionFactory().openSession(); Map<String,Object> params = new HashMap<String ,Object>(); params.put("pageNow", pageNow); params.put("pageSize", pageSize); List<User> list = session.selectList("com.mybatis.model.User.selectList_user", params); session.close(); return list; } public int getAllCount(){ SqlSession session =SessionFactoryUtil.getSqlSessionFactory().openSession(); int count = (Integer) session.selectOne("com.mybatis.model.User.selectCount_user"); session.close(); return count; } }
测试类:
package com.mybatis.dao.implment; import java.util.List; import org.junit.Test; import com.mybatis.dao.UserDao; import com.mybatis.model.User; public class UserDaoTest { private UserDao userDao = new UserDaoImpl(); @Test public void testLoad(){ User u = userDao.load(1); if(u!=null){ System.out.println("UserId:"+u.getId()+" UserName:"+u.getUserName()+" Password:"+u.getPassword()); } else{ System.out.println("id不存在!!"); } } @Test public void testAdd(){ User user = new User(); user.setUserName("admin5"); user.setPassword("123456"); userDao.add(user); } @Test public void testUpdate(){ User user = new User(); user.setId(2); user.setUserName("manager"); user.setPassword("123456"); userDao.update(user); } @Test public void testQueryAllUser(){ List<User> list = userDao.queryAllUser(); if(list!=null&list.size()>0){ for(User u:list){ System.out.println("UserId:"+u.getId()+" UserName:"+u.getUserName()+" Password:"+u.getPassword()); } } } @Test public void testFindByName(){ User u = userDao.findByName("admin"); if(u!=null){ System.out.println("UserId:"+u.getId()+" UserName:"+u.getUserName()+" Password:"+u.getPassword()); } else{ System.out.println("用户名不存在!!"); } } @Test public void testList(){ List<User> list = userDao.list(1, 4); if(list!=null&list.size()>0){ for(User u:list){ System.out.println("UserId:"+u.getId()+" UserName:"+u.getUserName()+" Password:"+u.getPassword()); } } } @Test public void testGetAllCount(){ System.out.println("All Count : "+userDao.getAllCount()); } @Test public void testDelete(){ userDao.delete(3); } }
相关推荐
在实际开发中,为了提高代码的复用性和减少重复工作,开发者通常会实现一套通用的增删改查模板,这就是“Mybatis通用增删改查”的概念。 1. **基础 DaoImpl 概念** Dao(Data Access Object)接口是Java中用于...
本文详细介绍了如何使用 Spring Boot 框架和 MyBatis Plus 实现增删改查操作的教程。MyBatis Plus 提供了许多实用的功能来简化数据库交互,例如自动将 Java 对象与数据库表对应,自动生成 SQL 语句等。
总的来说,MyBatis3的增删改查操作通过XML配置文件中的SQL语句进行,结合Mapper接口和Service层,能够灵活地完成数据库的CRUD操作。这种设计提高了代码的可读性和可维护性,降低了数据库操作的复杂度。在项目开发中...
总结来说,"通用mybatis-MySQL增删改查CRUD源码"提供了一套便捷的数据库操作方案,通过MyBatis框架与MySQL数据库的配合,实现了高效、可复用的CRUD功能,大大减轻了开发者的负担。在实际项目中,这样的源码可以作为...
以上就是Spring Boot+Mybatis构建登录注册增删改查系统的详细过程,通过这个项目,开发者可以深入理解Spring Boot的自动配置原理,以及Mybatis如何与Spring Boot结合实现数据库操作。在实际开发中,还需要考虑异常...
这些脚本在项目启动前执行,确保数据库中有必要的表和数据,便于登录和后续的增删改查操作。 **6. 数据库设计** 项目可能包含了多个实体,例如学生(Student)、成绩(Grades)和用户(User),这些实体对应数据库...
在本文中,我们将深入探讨如何使用Mybatis来实现基本的数据库增删改查(CRUD)操作。 首先,我们需要在项目中引入Mybatis的依赖。通常,这可以通过Maven或Gradle来完成。在Maven的pom.xml文件中,添加以下依赖: `...
在Java Web开发中,数据增删改查(CRUD)是最基础的操作,涵盖了创建(Create)、读取(Read)、更新(Update)和删除(Delete)四种数据库操作。Spring与MyBatis的结合,使得这些操作变得非常简洁和高效。 1. **...
在实现增删改查功能时,开发者可以为每个数据库操作创建对应的Mapper方法,如insert、update、delete和select。这些方法可以接受参数,如实体对象或Map,返回值通常是受影响的行数或查询结果。对于查询,Mybatis支持...
这个系统具备基础的图书信息增删改查(CRUD)功能,并且实现了分页展示,同时也包含了用户登录模块。下面我们将详细解析这些关键知识点。 1. **JSP(JavaServer Pages)**: JSP是Java的一个动态网页技术,允许...
在本压缩包中,包含了 MyBatis 基础运行所需的核心组件和其他依赖库,用于实现基本的增删改查操作。 1. `mybatis-3.1.1-javadoc.jar`:这是 MyBatis 框架的 Java 文档,包含所有类和接口的详细说明,对于开发者来说...
在本文中,我们将深入探讨如何使用MyBatis进行基本的增删改查操作,并了解必要的配置和依赖。 首先,要开始使用MyBatis,你需要在项目中引入相应的jar包。这些jar包通常包括MyBatis的核心库、...
本文将详细讲解如何整合Spring、SpringMVC和MyBatis进行增删改查操作。 首先,`tb_user.sql`文件通常包含数据库表的创建脚本。在SSM架构中,MyBatis会与数据库进行交互,`tb_user`可能是我们的用户表,用于存储用户...
在本示例中,"mybatis_crud增删改查数据库操作.zip" 提供了一个使用MyBatis进行CRUD(Create、Read、Update、Delete)操作的教程。通过解压这个压缩包,我们可以看到一个名为"mybatis_day03_crud"的目录,这通常包含...
3. **增删改查操作**: - **创建(Create)**:创建新的数据记录,通常涉及`insert`语句,MyBatis通过Mapper接口的`insert()`方法实现。 - **读取(Read)**:获取数据记录,可能使用`select`语句,可通过`select...
Mybatis 是一款流行的Java持久层框架,它简化了数据库与Java应用之间的交互,使得开发者能够更专注于SQL本身,而不是繁琐的...通过学习和掌握Mybatis的基本增删改查操作,开发者可以高效地处理与数据库相关的业务逻辑。
在Java Web应用中,Mybatis常用于处理数据库操作,如增删改查(CRUD)。下面我们将详细讨论如何使用Mybatis来实现这些基本操作。 一、Mybatis的架构与核心组件 Mybatis主要由以下几个核心组件组成: 1. **...
在本项目中,我们主要探讨的是如何利用SpringBoot框架与Mybatis进行数据库的增删改查操作。SpringBoot以其简洁的配置和快速的启动能力,成为现代Java开发中的热门选择,而Mybatis作为轻量级的持久层框架,提供灵活的...
这个入门教程旨在帮助初学者快速理解并掌握如何使用Mybatis-Plus进行数据库的增删改查(CRUD)以及分页操作。 1. **Mybatis-Plus简介** Mybatis-Plus是一个对Mybatis的增强工具,它在Mybatis的基础上做了很多自动...
在深入探讨MyBatis的简单增删改查操作之前,我们先了解一下MyBatis的基本概念和架构。 MyBatis的核心组件包括:XML配置文件、Mapper接口及Mapper XML文件、SqlSessionFactory和SqlSession。XML配置文件主要用于设置...