您的位置:首页 > 其它

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。

目录:



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和参数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐