05 Mybatis应用篇---XML映射文件之select,insert,update,delete实战
来源:互联网 发布:unity5和unity3d差别 编辑:程序博客网 时间:2024/06/05 14:42
前面 04 Mybatis应用篇---XML映射文件之select,insert,update,delete基础介绍 ,简单的介绍了一下XML映射文件之select,insert,update和delete的基本使用,这节以一个简单的demo演示一下MyBatis的CRUD。
目录:
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>hzq</groupId> <artifactId>hzq_mybatis_crud</artifactId> <packaging>war</packaging> <version>1.0-SNAPSHOT</version> <name>hzq_mybatis_crud Maven Webapp</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.0</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.16</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.41</version> </dependency> </dependencies> <build> <finalName>hzq_mybatis_crud</finalName> </build></project>
库表设计:
CREATE TABLE sys_user ( userno INT(11) NOT NULL AUTO_INCREMENT , username VARCHAR(32) DEFAULT NULL, password VARCHAR(32) DEFAULT NULL, age INT(11) DEFAULT NULL, createTime DATETIME DEFAULT NULL, PRIMARY KEY (userno));
配置文件:
db.properties
url:jdbc:mysql://192.168.0.104:3306/mybatis?useUnicode=true&characterEncoding=utf8driver:com.mysql.jdbc.Driverusername:rootpassword:root
mybatis-config.xml
<?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="db.properties"/> <settings> <!--配置log4j--> <setting name="logImpl" value="LOG4J"/> </settings> <!--注册别名--> <typeAliases> <package name="hzq.mybatis.crud.entity"/> </typeAliases> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"></transactionManager> <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> <!--添加mapper映射文件--> <mappers> <mapper resource="hzq/UserMapper.xml"/> </mappers></configuration>
log4j.properties
log4j.rootLogger=debugger,CONSOLE,Alog4j.addivity.org.apache=falselog4j.appender.CONSOLE=org.apache.log4j.ConsoleAppenderlog4j.appender.CONSOLE.Threshold=DEBUGlog4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss} -%-4r [%t] %-5p %x - %m%nlog4j.appender.CONSOLE.Target=System.outlog4j.appender.CONSOLE.Encoding=gbklog4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayoutlog4j.appender.A=org.apache.log4j.DailyRollingFileAppender log4j.appender.A.File=${catalina.home}/logs/FH_log/PurePro_log4j.appender.A.DatePattern=yyyy-MM-dd'.log'log4j.appender.A.layout=org.apache.log4j.PatternLayout log4j.appender.A.layout.ConversionPattern=[FH_sys] %d{yyyy-MM-dd HH\:mm\:ss} %5p %c{1}\:%L \: %m%n
代码:
User实体:
package hzq.mybatis.crud.entity;import java.util.Date;/** * Created by hzq on 2017/4/9. */public class User { private int userno; private String username; private String password; private int age; private Date createTime; public int getUserno() { return userno; } public void setUserno(int userno) { this.userno = userno; } 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; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Date getCreateTime() { return createTime; } public void setCreateTime(Date createTime) { this.createTime = createTime; } @Override public String toString() { return "User{" + "userno=" + userno + ", username='" + username + '\'' + ", password='" + password + '\'' + ", age=" + age + ", createTime=" + createTime + '}'; }}
dao接口:
package hzq.mybatis.crud.dao;import hzq.mybatis.crud.entity.User;import java.util.List;/** * Created by hzq on 2017/4/9. */public interface IUserDao { /** * 查询所有 * @return */ public List<User> findAll(); /** * 保存,并返回主键id(mysql id自增) * @param user * @return */ public int save(User user); /** * 修改 * @param user */ public void update(User user); /** * 根据id删除 * @param id */ public void delete(int id);}
dao实现类:
package hzq.mybatis.crud.dao.impl;import hzq.mybatis.crud.dao.IUserDao;import hzq.mybatis.crud.entity.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 java.io.IOException;import java.util.List;/** * Created by hzq on 2017/4/9. */public class UserDaoImpl implements IUserDao { private SqlSession sqlSession = this.getSqlSession(); public List<User> findAll() { return sqlSession.selectList("UserMapper.findAll"); } public int save(User user) { sqlSession.insert("UserMapper.save",user); sqlSession.commit(); sqlSession.close(); return user.getUserno(); } public void update(User user) { sqlSession.update("UserMapper.update",user); sqlSession.commit(); sqlSession.close(); } public void delete(int id) { sqlSession.delete("UserMapper.deleteById",id); sqlSession.commit(); sqlSession.close(); } /** * 获取SqlSession * @return */ public SqlSession getSqlSession(){ String res = "mybatis-config.xml"; SqlSessionFactory sqlSessionFactory = null; SqlSession sqlSession = null; try { sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader(res)); sqlSession = sqlSessionFactory.openSession(); } catch (IOException e) { e.printStackTrace(); } return sqlSession; }}
<?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"><mapper namespace="UserMapper"> <sql id="tableName"> sys_user </sql> <sql id="column"> userno, username, password, age, createTime </sql> <sql id="value" > #{userno}, #{username}, #{password}, #{age}, #{createTime} </sql> <select id="findAll" resultType="user"> SELECT <include refid="column"/> FROM <include refid="tableName"/> </select> <!-- useGeneratedKeys : 这会令 MyBatis 使用 JDBC 的 getGeneratedKeys 方法来取出由数据库内部生成的主键 keyProperty : MyBatis 会通过 getGeneratedKeys 的返回值或者通过 insert 语句的 selectKey 子元素设置它的键值 --> <insert id="save" parameterType="user" useGeneratedKeys="true" keyProperty="userno" > INSERT INTO <include refid="tableName"/> ( <include refid="column"/> )VALUES ( <include refid="value"/> ) </insert> <update id="update" parameterType="user"> UPDATE <include refid="tableName"/> SET username = #{username} WHERE userno = #{userno} </update> <delete id="deleteById" parameterType="int"> DELETE FROM <include refid="tableName"/> WHERE userno = #{1} </delete></mapper>
测试类:
package hzq.mybatis.crud;import hzq.mybatis.crud.dao.IUserDao;import hzq.mybatis.crud.dao.impl.UserDaoImpl;import hzq.mybatis.crud.entity.User;import org.junit.Test;import java.util.Date;import java.util.List;/** * Created by hzq on 2017/4/9. */public class CRUDTest { private IUserDao userDao = new UserDaoImpl(); /** * select 查询 */ @Test public void select(){ List<User> users = userDao.findAll(); for (User u : users){ System.out.println(u); } } /** * insert 保存 */ @Test public void insert(){ User user = new User(); user.setAge(18); user.setCreateTime(new Date()); user.setPassword("user1"); user.setUsername("user1"); int id = userDao.save(user); System.out.println("用户的id是:"+id); } /** * 修改 */ @Test public void update(){ User user = new User(); user.setUsername("user2"); user.setUserno(1); userDao.update(user); } /** * 根据id删除 */ @Test public void delete(){ int id = 1; userDao.delete(id); }}
源码下载:http://download.csdn.net/detail/mmd0308/9808728
一个简单的MyBatis的CRUD案例完了,但是这里面还有很多不明白的地方,如Mapper文件中的Sql元素,获取参数的方式:#{1},#{userno}等等,带着这些疑问,我们在进一步研究MyBatis的XML映射文件中sql和参数。
2 0
- 05 Mybatis应用篇---XML映射文件之select,insert,update,delete实战
- 04 Mybatis应用篇---XML映射文件之select,insert,update,delete基础介绍
- Mybatis下mapper映射文件配置之insert、update、delete
- MyBatis (一)configuration.xml的配置/mapper持久类的映射/sqlSession的获取/基础的select,insert,delete,update
- 深入浅出Mybatis系列(七)---mapper映射文件配置之insert、update、delete
- 深入浅出Mybatis系列(七)---mapper映射文件配置之insert、update、delete
- 深入浅出Mybatis系列(七)---mapper映射文件配置之insert、update、delete
- 深入浅出Mybatis系列(七)---mapper映射文件配置之insert、update、delete
- 深入浅出Mybatis系列(七)---mapper映射文件配置之insert、update、delete
- 深入浅出Mybatis系列(七)---mapper映射文件配置之insert、update、delete
- 深入浅出Mybatis系列(七)---mapper映射文件配置之insert、update、delete
- MyBatis源码学习笔记(七)mapper映射文件配置之insert、update、delete
- 深入浅出Mybatis系列(七)---mapper映射文件配置之insert、update、delete
- MyBatis——XML映射文件—更新(Mapper XML文件——Insert ,Update,delete)
- myBatis3之SQL映射的XML文件(insert,update,delete 元素)
- mybatis映射器三(insert,update,delete)
- mybatis——select、insert、update、delete
- MyBatis☞ select、insert、update、delete
- System V进程间通信---消息队列
- 什么是设计模式(Design Patterns)
- javaSE_08Java中static、继承、重写-思维导图
- O2O的理解
- 使用 Spring 3 来创建 RESTful Web Services
- 05 Mybatis应用篇---XML映射文件之select,insert,update,delete实战
- C++ typedef使用方法总结
- 漫游Kafka实战篇之客户端编程实例
- 使用JS完成表单的校验
- JavaSE DataInputStream和DataOutputStream流
- Nginx编译安装详细教程及常用命令介绍
- Servlet基础总结
- Python入门教程(三)Python中文编码
- 1048. Find Coins (25)