您的位置:首页 > 其它

Mybatis学习笔记(3)--MyBatis的原始Dao开发模式

2018-01-12 14:37 471 查看

1.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="user">

<!-- id:statement的id 或者叫做sql的id -->
<!-- parameterType:声明输入参数的类型 -->
<!-- resultType:声明输出结果的类型,应该填写pojo的全路径 -->
<!-- #{}:输入参数的占位符,相当于jdbc的? -->
<select id="queryUserId" parameterType="int"
resultType="com.skiff.www.domain.User">
select * from user where id = #{id}
</select>

<!-- 如果返回多个结果,mybatis会自动把返回的结果放在list容器中 -->
<!-- resultType的配置和返回一个结果的配置一样 -->
<select id="queryUserByUsername1" parameterType="string"
resultType="com.skiff.www.domain.User">
SELECT * FROM user WHERE username LIKE #{username}
</select>

<!-- 如果传入的参数是简单数据类型,${}里面必须写value -->
<select id="queryUserByUsername2" parameterType="string"
resultType="com.skiff.www.domain.User">
SELECT * FROM `user` WHERE username LIKE '%${value}%'
</select>

<!-- 插入语句中values中括号的字段和数据库中的表中的数据是一一对应的 而value后面的数据是实体的对象中对应的属性 -->
<!-- 保存用户 -->
<insert id="saveUser" parameterType="com.skiff.www.domain.User">
<!-- selectKey 标签实现主键返回 -->
<!-- keyColumn:主键对应的表中的哪一列 -->
<!-- keyProperty:主键对应的pojo中的哪一个属性 -->
<!-- order:设置在执行insert语句前执行查询id的sql,在执行insert语句之后执行查询id的sql -->
<!-- resultType:设置返回的id的类型 -->
<selectKey keyColumn="id" keyProperty="id" order="AFTER"
resultType="int">
SELECT LAST_INSERT_ID()
</selectKey>
INSERT INTO `user`
(username,birthday,sex,address) VALUES
(#{name},#{birthday},#{sex},#{address})
</insert>

<!-- 更新用户 -->
<update id="updateUserById" parameterType="com.skiff.www.domain.User">
UPDATE `user` SET
username = #{name},
address = #{address},
birthday = #{birthday} WHERE id = #{id}
</update>

<!-- 删除用户 -->
<delete id="deleteUserById" parameterType="int">
delete from user where
id=#{id}
</delete>

</mapper>


2.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/mybatis?characterEncoding=utf-8" />
<property name="username" value="root" />
<property name="password" value="123456" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper  resource="sqlmap/User.xml"/>
<mapper  resource="sqlmap/Order.xml"/>
</mappers>
<!-- 	<mappers>
<package name="com.skiff.www.mapper"/>
</mappers> -->
</configuration>



3.dao接口:UserDao.java

/**
* @文件名称: UserDao.java
* @描述: TODO
* @作者:  一叶扁舟(skiff)
* @时间:2018年1月9日 下午3:20:26
* @版本:V1.0
*/
package com.skiff.www.dao;

import com.skiff.www.domain.User;

/**
* @类功能说明:
* @作者: 一叶扁舟 (skiff)
* @创建时间:2018年1月9日 下午3:20:26
* @版本:V1.0
*/
public interface UserDao {

//通过用户ID查询一个用户
public User selectUserById(Integer id);
}


4.dao实现类

/**
* @文件名称: UserDaoImpl.java
* @描述: TODO
* @作者:  一叶扁舟(skiff)
* @时间:2018年1月9日 下午3:22:04
* @版本:V1.0
*/
package com.skiff.www.dao.impl;

import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;

import com.skiff.www.dao.UserDao;
import com.skiff.www.domain.User;

/**
* @类功能说明:
* @作者: 一叶扁舟 (skiff)
* @创建时间:2018年1月9日 下午3:22:04
* @版本:V1.0
*/
public class UserDaoImpl implements UserDao{

//注入
private SqlSessionFactory sqlSessionFactory;
public UserDaoImpl(SqlSessionFactory sqlSessionFactory) {
this.sqlSessionFactory = sqlSessionFactory;
}

//通过用户ID查询一个用户
public User selectUserById(Integer id){
SqlSession sqlSession = sqlSessionFactory.openSession();
return sqlSession.selectOne("queryUserId", id);
}
//通过用户名称模糊查询
public List<User> selectUserByUsername(Integer id){
SqlSession sqlSession = sqlSessionFactory.openSession();
return sqlSession.selectList("queryUserId", id);
}
}



5.dao测试类

/**
* @文件名称: UserDaoTest.java
* @描述: TODO
* @作者:  一叶扁舟(skiff)
* @时间:2018年1月9日 下午3:25:52
* @版本:V1.0
*/
package test.com.skiff.www.testUser;

import java.io.InputStream;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Before;
import org.junit.Test;

import com.skiff.www.dao.UserDao;
import com.skiff.www.dao.impl.UserDaoImpl;
import com.skiff.www.domain.User;

/**
* @类功能说明:
* @作者: 一叶扁舟 (skiff)
* @创建时间:2018年1月9日 下午3:25:52
* @版本:V1.0
*/
public class UserDaoTest {

public SqlSessionFactory sqlSessionFactory;
@Before
public void before() throws Exception {
//加载核心配置文件
String resource = "sqlMapConfig.xml";
InputStream in = Resources.getResourceAsStream(resource);
//创建SqlSessionFactory
sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
}
@Test
public void testDao() throws Exception {

//注入session工厂
UserDao userDao = new UserDaoImpl(sqlSessionFactory);
//调用dao方法查询出结果
User user = userDao.selectUserById(31);
System.out.println(user);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mybatis 原始dao开发