SqlMapConfig.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>
<!-- 和spring整合后 environments配置将废除 -->
<environments default="development">
<environment id="development">
<!-- 使用jdbc事务管理 -->
<transactionManager type="JDBC" />
<!-- 数据库连接池 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url"
value="jdbc:mysql://localhost:3306/igeekmybatis?characterEncoding=utf-8" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
<!-- 注册映射文件 -->
<!-- 将映射文件配置到mybatis的配置文件中 -->
<mappers>
<mapper resource="sqlmap/User.xml"/>
</mappers>
</configuration>
User.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">
<!-- namespace:命名空间,用于隔离sql,还有一个很重要的作用,后面会讲 -->
<mapper namespace="test">
<!-- 添加用户 -->
<insert id="save" parameterType="com.igeek.crm.pojo.User">
insert into user(userName,birthday,sex,address)
values(#{username},#{birthday},#{sex},#{address})
</insert>
<!-- 根据ID查询用户 -->
<select id="queryById" parameterType="int" resultType="com.igeek.crm.pojo.User">
select * from user where id = #{id}
</select>
<!-- 根据名称模糊查询 -->
<select id="queryByName" parameterType="string" resultType="com.igeek.crm.pojo.User">
select * from user where username like '%${value}%'
</select>
<!-- 查询全部 -->
<select id="queryAll" resultType="com.igeek.crm.pojo.User">
select * from user
</select>
<!-- 修改用户信息 -->
<update id="update" parameterType="com.igeek.crm.pojo.User">
update user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address} where id=#{id}
</update>
<!-- 根据ID删除用户 -->
<delete id="delete" parameterType="int">
delete from user where id = #{id}
</delete>
</mapper>
UserDAOImpl
package com.igeek.crm.dao.impl;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import com.igeek.crm.dao.UserDAO;
import com.igeek.crm.pojo.User;
/**
* @author www.igeehome.com
*
* TODO
*
* 2018年10月15日下午6:44:34
*/
public class UserDAOImpl implements UserDAO {
private SqlSessionFactory factory;
/**
* 构造方法中传入工厂对象
*
* @param factory
*/
public UserDAOImpl(SqlSessionFactory factory) {
super();
this.factory = factory;
}
@Override
public int save(User user) {
int result = -1;
// 打开session(创建一个sqlSession)
SqlSession session = factory.openSession();
// 通过session执行sql语句
result = session.update("test.save", user);
// 提交事务
session.commit();
// 关闭session
session.close();
return result;
}
@Override
public User queryById(int id) {
User u = null;
// 打开session(创建一个sqlSession)
SqlSession session = factory.openSession();
// 通过session执行sql语句
u = session.selectOne("test.queryById", id);
// 提交事务
// session.commit();
// 关闭session
session.close();
return u;
}
@Override
public List<User> queryByName(String name) {
List<User> users = null;
// 打开session(创建一个sqlSession)
SqlSession session = factory.openSession();
// 通过session执行sql语句
users = session.selectList("test.queryByName", name);
// 提交事务
// session.commit();
// 关闭session
session.close();
return users;
}
@Override
public List<User> queryAll() {
List<User> users = null;
// 打开session(创建一个sqlSession)
SqlSession session = factory.openSession();
// 通过session执行sql语句
users = session.selectList("test.queryAll");
// 提交事务
// session.commit();
// 关闭session
session.close();
return users;
}
@Override
public int update(User user) {
int result = -1;
// 打开session(创建一个sqlSession)
SqlSession session = factory.openSession();
// 通过session执行sql语句
result = session.update("test.update", user);
// 提交事务
session.commit();
// 关闭session
session.close();
return result;
}
@Override
public int delete(int id) {
int result = -1;
// 打开session(创建一个sqlSession)
SqlSession session = factory.openSession();
// 通过session执行sql语句
result = session.delete("test.delete", id);
// 提交事务
session.commit();
// 关闭session
session.close();
return result;
}
}
MyBatisTest 测试:
package com.igeek.crm.test;
import java.io.InputStream;
import java.util.Date;
import java.util.List;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Before;
import org.junit.Test;
import com.igeek.crm.dao.UserDAO;
import com.igeek.crm.dao.impl.UserDAOImpl;
import com.igeek.crm.pojo.User;
/**
* @author www.igeehome.com
*
* TODO
*
* 2018年10月13日下午2:11:12
*/
public class MyBatisTest {
SqlSessionFactory factory =null;
private UserDAO userDao = null;
@Before
public void testInit(){
// 1. 创建SqlSessionFactoryBuilder对象
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
// 2. 加载SqlMapConfig.xml配置文件 /20181013_mybatis/config/SqlMapConfig.xml
InputStream in = MyBatisTest.class.getResourceAsStream("/SqlMapConfig.xml");
// 3. 创建SqlSessionFactory对象
factory = builder.build(in);
//创建dao对象
userDao = new UserDAOImpl(factory);
}
@Test
public void testDelete(){
//先查询
int result = userDao.delete(32);
System.out.println(result);
}
@Test
public void testUpdate(){
//先查询
User u = userDao.queryById(32);
u.setUsername("赵六");
int result = userDao.update(u);
System.out.println(result);
}
@Test
public void testQuerByName(){
List<User> us = userDao.queryByName("小");
System.out.println(us);
}
@Test
public void testQuerById(){
User u = userDao.queryById(32);
System.out.println(u);
}
@Test
public void testSave(){
User user = new User();
user.setUsername("周六");
user.setBirthday(new Date());
user.setSex(1);
user.setAddress("江苏无锡");
userDao.save(user);
}
}