原始dao方式的使用

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>
	<!-- 加载属性文件,获取连接池参数 -->
	<properties resource="db.properties"></properties>
	<!-- 定义别名,包扫描方式,批量,,可以简化mapper.xml文件中参数的书写 -->
	<typeAliases>
		<package name="com.mybatis.model"/>
	</typeAliases>
	
	<environments default="development">
			<environment id="development">
				<!-- 事务 -->
				<transactionManager type="JDBC"></transactionManager>
				<!-- 连接池 -->
				<dataSource type="POOLED">
					<property name="driver" value="${jdbc.driver}"/>
			        <property name="url" value="${jdbc.url}"/>
			        <property name="username" value="${jdbc.username}"/>
			        <property name="password" value="${jdbc.password}"/>
				</dataSource>
			</environment>
	</environments>
	
	<mappers>
		<mapper resource="config/sqlmap/UserMapper.xml"/>
	</mappers>


</configuration>

UserDao

package com.mybatis.dao;

import com.mybatis.model.User;

public interface UserDao {

	//根据id查询user
	public User findUserById(int id) throws Exception;
}

UserDaoImpl.java

package com.mybatis.dao.impl;

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

import com.mybatis.dao.UserDao;
import com.mybatis.model.User;

public class UserDaoImpl implements UserDao{

	private SqlSessionFactory factory;
	//构造方法,获取SqlSessionFactory
	public UserDaoImpl(SqlSessionFactory factory) {
		this.factory=factory;
	}
	@Override
	public User findUserById(int id) throws Exception {
                //由于sqlsession是线程不安全的,所以最好在方法内定义
		SqlSession session = factory.openSession();
                // <T> T selectOne(String statement, Object parameter);
                //第一个参数是  命名空间.statement的id   第二个参数为传入参数
		User user = session.selectOne("dao.find",id);
		session.close();
		return user;
	}

}

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="dao">
	<!-- statement的id是find      
		输入参数类型是int    
		返回值参数类型是user(因为配置了别名,com.mybatis.model.User直接写为user,首字母大小写均可)
		#{}表示占位符    
		${}表示拼接sql,相当于直接把值放入sql语句中,可能会有sql注入的问题,不建议使用  
		例子:select * from user where name = '%${name}%'
	-->
	<select id="find" parameterType="int" resultType="user">
		select * from user where id=#{id}
	</select>

</mapper>

测试方法

package com.mybatis.test;

import java.io.IOException;
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.mybatis.dao.UserDao;
import com.mybatis.dao.impl.UserDaoImpl;
import com.mybatis.model.User;

public class daoTest {
	private SqlSessionFactory sqlSessionFactory;
	@Before
	public void before() throws IOException{
		//主配置文件路径
		String resource = "config/SqlMapConfig.xml";
		InputStream is = Resources.getResourceAsStream(resource);
		sqlSessionFactory=new SqlSessionFactoryBuilder().build(is);
	}
	
	@Test
	public void test() throws Exception {
		UserDao dao = new UserDaoImpl(sqlSessionFactory);
		User user = dao.findUserById(41);
		System.out.println(user);
	}

}

db.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatisdb
jdbc.username=root
jdbc.password=123456

log4j.properties

# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

主键返回的例子

<?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="test">

	<insert id="addUser" parameterType="com.study.pojo.User">
	    <!-- 将插入数据的主键返回,返回到user对象中
		select last_insert_id()    得到刚插入进去记录的主键值,只适用于自增主键
		order="AFTER"表示在插入sql执行后执行 
	    -->
		<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
		select last_insert_id()
		</selectKey>
		insert into user(username,birthday,sex,address) value(#{username},#{birthday},#{sex},#{address})
	</insert>
</mapper>

猜你喜欢

转载自blog.csdn.net/weixin_38503726/article/details/86478613
今日推荐