MyBatis3 之 CRUD:
jar包就不上了,主要看代码。先总览一下文件结构:
然后是代码:
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
1 |
driver=com.mysql.jdbc.Driver |
2 |
url=jdbc:mysql: //localhost:3306/mybatis
|
3 |
username=root |
4 |
password= 123456
|
3)log4j.properties
1 |
log4j.rootLogger=DEBUG,A1 |
2 |
# \u8f93\u51fa\u5230\u63a7\u5236\u53f0 |
3 |
log4j.appender.A1=org.apache.log4j.ConsoleAppender |
4 |
log4j.appender.A1.layout=org.apache.log4j.PatternLayout |
5 |
log4j.appender.A1.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss} [\u65E5\u5FD7\u4FE1\u606F] %m%n |
4)User .java
01 |
package com.mybatis.model;
|
02 |
03 |
import java.io.Serializable;
|
04 |
05 |
@SuppressWarnings ( "serial" )
|
06 |
public 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 |
03 |
PUBLIC "-//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
01 |
package com.mybatis.sessionfactory;
|
02 |
03 |
import java.io.IOException;
|
04 |
import java.io.Reader;
|
05 |
06 |
import org.apache.ibatis.io.Resources;
|
07 |
import org.apache.ibatis.session.SqlSession;
|
08 |
import org.apache.ibatis.session.SqlSessionFactory;
|
09 |
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
|
10 |
11 |
public 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
01 |
package com.mybatis.dao;
|
02 |
03 |
import java.util.List;
|
04 |
05 |
import com.mybatis.model.User;
|
06 |
07 |
public 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
01 |
package com.mybatis.dao.implment;
|
02 |
03 |
import java.util.HashMap;
|
04 |
import java.util.List;
|
05 |
import java.util.Map;
|
06 |
07 |
import org.apache.ibatis.session.SqlSession;
|
08 |
09 |
import com.mybatis.dao.UserDao;
|
10 |
import com.mybatis.model.User;
|
11 |
import com.mybatis.sessionfactory.SessionFactoryUtil;
|
12 |
13 |
14 |
public 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)测试类:
01 |
package com.mybatis.dao.implment;
|
02 |
03 |
import java.util.List;
|
04 |
05 |
import org.junit.Test;
|
06 |
07 |
import com.mybatis.dao.UserDao;
|
08 |
import com.mybatis.model.User;
|
09 |
10 |
public 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():
相关推荐
在实际开发中,为了提高代码的复用性和减少重复工作,开发者通常会实现一套通用的增删改查模板,这就是“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配置文件主要用于设置...