您的位置:首页 > 其它

MyBatis学习笔记(一)

2017-10-08 22:24 274 查看
一、MyBatis介绍



  MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

二、MyBatis快速入门

1)创建Java Project或者Java Web Project



2)导入相应的jar包



3)创建数据库和表(mysql)

CREATE DATABASE mybatis;
USE mybatis;
CREATE TABLE `users` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`USER_ID` varchar(32) DEFAULT NULL,
`USER_NAME` varchar(32) DEFAULT NULL,
`NICKNAME` varchar(32) DEFAULT NULL,
`PASSWORD` varchar(20) DEFAULT NULL,
`IS_ADMIN` varchar(2) DEFAULT NULL,
PRIMARY KEY (`ID`)
);


4)添加mysql驱动配置文件datasource.properties



dataSource.driverClassName=com.mysql.jdbc.Driver
dataSource.url=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf-8&useSSL=true
dataSource.username=root
dataSource.password=root


5)添加mybatis配置文件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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<!-- 配置数据库连接信息 -->
<dataSource type="POOLED">
<property name="driver" value="${dataSource.driverClassName}" />
<property name="url" value="${dataSource.url}" />
<property name="username" value="${dataSource.username}" />
<property name="password" value="${dataSource.password}" />
</dataSource>
</environment>
</environments>

<mappers>
<package name="com.zavierliu.mybatis.demo.dao" />
</mappers>

</configuration>


6)创建表所对应的实体对象User

package com.zavierliu.mybatis.demo.data;

public class User {
private Integer id;
private String userId;
private String userName;
private String nickname;
private String password;
private String isAdmin;

public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getIsAdmin() {
return isAdmin;
}
public void setIsAdmin(String isAdmin) {
this.isAdmin = isAdmin;
}

@Override
public String toString() {
return "{"
+ "id: " + id
+ ", userId: " + userId
+ ", userName: " + userName
+ ", nickname: " + nickname
+ ", password: " + password
+ ", actStatus: " + isAdmin + "}";
}
}


7)创建dao接口UserMapper.java和操作表的sql映射文件UserMapper.xml

UserMapper.java

package com.zavierliu.mybatis.demo.dao;

import java.util.List;
import java.util.Map;

import com.zavierliu.mybatis.demo.data.User;

public interface UserMapper {

public Map<String, Object> getUserById(int id);

public int addUser(User user);

public void updateUser(User user);

public void deleteUser(int id);

public List<User> getUserByParam(Map<String, Object> param);
}


UserMapper.xml

<?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="com.zavierliu.mybatis.demo.dao.UserMapper">

<resultMap type="com.zavierliu.mybatis.demo.data.User" id="usermap">
<id column="id" property="id" />
<result column="user_id" property="userId" />
<result column="user_name" property="userName" />
<result column="nickname" property="nickname" />
<result column="password" property="password" />
<result column="is_admin" property="isAdmin" />
</resultMap>

<select id="getUserById" parameterType="int" resultType="map">
SELECT
id,
user_id,
user_name,
nickname,
password,
is_admin
FROM
users
WHERE
user_id = #{_parameter }
</select>

<insert id="addUser" parameterType="com.zavierliu.mybatis.demo.data.User" useGeneratedKeys="true" keyProperty="id">
INSERT INTO
users
(
user_id,
user_name,
nickname,
password,
is_admin
) VALUES (
#{userId},
#{userName},
#{nickname},
#{password},
#{isAdmin}
)
</insert>

<update id="updateUser" parameterType="com.zavierliu.mybatis.demo.data.User">
UPDATE
users
<set>
<if test="userId != null and userId != ''">
user_id = #{userId },
</if>
<if test="userName != null and userName != ''">
user_name = #{userName },
</if>
<if test="nickname != null and nickname != ''">
nickname = #{nickname },
</if>
<if test="password != null and password != ''">
password = #{password },
</if>
<if test="isAdmin != null and isAdmin != ''">
is_admin = #{isAdmin }
</if>
</set>
WHERE
id = #{id}
</update>

<delete id="deleteUser" parameterType="int">
DELETE FROM
users
WHERE
id = #{_parameter }
</delete>

<select id="getUserByParam" parameterType="map" resultMap="usermap">
SELECT
id,
user_id,
user_name,
nickname,
password,
is_admin
FROM
users
<where>
<if test="userName != null and userName != ''">
AND user_name LIKE '%${userName}%'
</if>
<if test="nickname != null and nickname != ''">
AND nickname LIKE '%${nickname}%'
</if>
<if test="isAdmin != null and isAdmin != ''">
AND is_admin = #{isAdmin }
</if>
</where>
</select>

</mapper>


8)创建获取SqlSessionFactory的工具类MyBatisUtil.java

package com.zavierliu.mybatis.utils;

import java.io.IOException;
import java.io.Reader;
import java.util.Properties;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class MyBatisUtil {

private static SqlSessionFactory factory = null;

private MyBatisUtil() {
}

static {
Reader reader = null;
Properties properties = PropertiesUtil.loadProperties(
MyBatisUtil.class, "datasource.properties");
try {
reader = Resources.getResourceAsReader("mybatis-config.xml");
} catch (IOException e) {
throw new RuntimeException(e.getMessage());
}
factory = new SqlSessionFactoryBuilder().build(reader, properties);
}

public static SqlSessionFactory getSqlSessionFactory() {
return factory;
}
}


9)测试文件Main.java

package test;
import com.zavierliu.mybatis.demo.data.User;
import com.zavierliu.mybatis.demo.service.IUserService;
import com.zavierliu.mybatis.demo.service.impl.UserServiceImpl;

public class Main {

public static void main(String[] args) {
User user = new User();
user.setUserId("user1");
user.setUserName("demo_test");
user.setNickname("测试帐号");
user.setIsAdmin("N");
user.setPassword("****");

IUserService userService = new UserServiceImpl();
userService.addUser(user);
System.out.println("新增用户:" + user);

user.setUserName("demo_update");
user.setNickname("测试更新");
userService.updateUser(user);
System.out.println("更新用户:" + user);
}

}


三、完整的文件目录



四、运行结果

新增用户:{id: 7, userId: user1, userName: demo_test, nickname: 测试帐号, password: **, actStatus: N}

更新用户:{id: 7, userId: user1, userName: demo_update, nickname: 测试更新, password: **, actStatus: N}



五、源码下载

http://download.csdn.net/download/zavierliu/10012835
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mybatis 持久层框架