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); } }
相关文章推荐
- JavaWeb学习笔记-mybatis-07-dao开发使用(原始dao方法)
- Spring+SpringMVC+MyBatis深入学习及搭建(二)——MyBatis原始Dao开发和mapper代理开发
- 原始dao和Mapper动态代理的开放方式---Mybatis学习笔记(六)
- 【MyBatis学习03】原始dao开发方法及其弊端
- SSM框架学习之(一)Mybatis——原始Dao开发
- Mybatis学习笔记(五)——DAO开发
- mybatis学习之原始开发DAO与mapper代理开发DAO的区别
- 【MyBatis学习03】原始dao开发方法及其弊端
- mybatis学习笔记(4)-开发dao方法
- 原始dao和Mapper动态代理的开放方式---Mybatis学习笔记(六)
- JavaWeb学习笔记-mybatis-08-dao开发使用(mapper代理开发)
- 个人学习笔记--MyBatis官方推荐DAO开发方案
- Mybatis学习(九)mybatis原始dao接口与dao实现的开发。
- Mybatis学习笔记(五)【开发dao方法】
- 【MyBatis学习03】原始dao开发方法及其弊端
- 【MyBatis学习03】原始dao开发方法及其弊端
- 【Spring+SpringMVC+MyBatis深入学习及搭建】02.MyBatis原始Dao开发和mapper代理开发
- 【MyBatis学习03】原始dao开发方法及其弊端
- (四)mybatis学习之原始Dao开发方式及与spring整合
- Spring+SpringMVC+MyBatis深入学习及搭建(二)之MyBatis原始Dao开发和mapper代理开发