05 Mybatis应用篇---XML映射文件之select,insert,update,delete实战
2017-04-09 17:52
645 查看
前面 04
Mybatis应用篇---XML映射文件之select,insert,update,delete基础介绍 ,简单的介绍了一下XML映射文件之select,insert,update和delete的基本使用,这节以一个简单的demo演示一下MyBatis的CRUD。
目录:
![](http://img.blog.csdn.net/20170409210355941?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbW1kMDMwOA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
pom.xml
库表设计:
配置文件:
db.properties
mybatis-config.xml
log4j.properties
代码:
User实体:
dao接口:
dao实现类:
Mapper映射文件:
测试类:
源码下载:http://download.csdn.net/detail/mmd0308/9808728
一个简单的MyBatis的CRUD案例完了,但是这里面还有很多不明白的地方,如Mapper文件中的Sql元素,获取参数的方式:#{1},#{userno}等等,带着这些疑问,我们在进一步研究MyBatis的XML映射文件中sql和参数。
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=utf8 driver:com.mysql.jdbc.Driver username:root password: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,A log4j.addivity.org.apache=false log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.Threshold=DEBUG log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss} -%-4r [%t] %-5p %x - %m%n log4j.appender.CONSOLE.Target=System.out log4j.appender.CONSOLE.Encoding=gbk log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.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; } }
Mapper映射文件:
<?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和参数。
相关文章推荐
- 04 Mybatis应用篇---XML映射文件之select,insert,update,delete基础介绍
- MyBatis-3.4.2-源码分析15:XML解析之buildStatementFromContext(context.evalNodes(‘select|insert|update|delete’
- 深入浅出Mybatis系列(七)---mapper映射文件配置之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.xml文件update、delete以及insert返回值问题
- 深入浅出Mybatis系列(七)---mapper映射文件配置之insert、update、delete
- 深入浅出Mybatis系列(七)---mapper映射文件配置之insert、update、delete
- mybatis整理笔记MapperXML文件2 -- MapperXML文件中的insert, update and delete[文章摘自文档]
- myBatis3之SQL映射的XML文件(insert,update,delete 元素)
- MyBatis3.2.4映射配置:insert 、update 和 delete
- mybatis中----select、insert、update、delete主要操作方法与属性
- mybatis映射器三(insert,update,delete)
- MyBatis3.2.4映射配置:insert 、update 和 delete