test.java:
package com.dqd.mybatis;
import java.io.IOException;
public class test {
public static void main(String[] args) throws IOException {
mybatis mb = new mybatis();
//mb.fingUserByIdTest();
//mb.insertUser();
//mb.deleteUser();
mb.updateUser();
}
}
package com.dqd.mybatis;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.List;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import com.dqd.pojo.User;
public class mybatis {
//���id�õ�һ����¼��ͨ���������ģ���ѯ
public void fingUserByIdTest() throws IOException {
String resource = "SqlMapConfig.xml";
InputStream inputstream = Resources.getResourceAsStream(resource);
//�����Ự����,����mybatis��������Ϣ
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputstream);
//�õ�sqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
//ͨ��sqlSession������ݿ�
//��һ������Ϊӳ���ļ��е�statement id,Ϊnamespace+"."+statement.id
//�ڶ�������ָ����ӳ���ļ���ƥ�����͵IJ���
User user = sqlSession.selectOne("test.fingUserById",1);
System.out.println(user);
List<User> list = sqlSession.selectList("test.fingUserByName","dqd");
System.out.println(list.size());
//����ͷ���Դ
sqlSession.close();
}
public void insertUser() throws IOException {
String resource = "SqlMapConfig.xml";
InputStream inputstream = Resources.getResourceAsStream(resource);
//�����Ự����,����mybatis��������Ϣ
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputstream);
//�õ�sqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
//ͨ��sqlSession������ݿ�
User user = new User();
user.setUsername("dqd1");
user.setBirthday(new Date());
user.setSex("0");
user.setAddress("shandong");
sqlSession.insert("test.insertUser",user);
//除了查询,其他的需要使用事务提交到数据库中
sqlSession.commit();
System.out.println(user.getId());//注意如果我们不加操作的将id直接取出来的话,总是0!,那么我们可以在user。xml文件
//中进行配置<selectKey>进行字段的配置(这里配置id)使用select last_insert_id(),必须紧接着插入语句
//关闭资源
sqlSession.close();
}
public void deleteUser() throws IOException {
String resource = "SqlMapConfig.xml";
InputStream inputstream = Resources.getResourceAsStream(resource);
//�����Ự����,����mybatis��������Ϣ
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputstream);
//�õ�sqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
//ͨ��sqlSession������ݿ�
sqlSession.delete("test.deleteUser",2);
//除了查询,其他的需要使用事务提交到数据库中
sqlSession.commit();
//关闭资源
sqlSession.close();
}
public void updateUser() throws IOException {
String resource = "SqlMapConfig.xml";
InputStream inputstream = Resources.getResourceAsStream(resource);
//�����Ự����,����mybatis��������Ϣ
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputstream);
//�õ�sqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
//ͨ��sqlSession������ݿ�
User user = new User();
user.setId(4);
user.setUsername("dqd2");
user.setBirthday(new Date());
user.setSex("1");
user.setAddress("henan");
sqlSession.update("test.updateUser",user);
//除了查询,其他的需要使用事务提交到数据库中
sqlSession.commit();
//关闭资源
sqlSession.close();
}
}
user.xml:(注意user.xml是在sqlmap下面)
<?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">
<!-- 原始的ibatis的配置文件的命名形式,而mybatis使用XXMapper.xml -->
<!-- 命名空间,对sql的分类化管理
如果使用Mapper代理的方式开发就会有重要的作用
-->
<mapper namespace="test">
<!-- 配置sql语句 ,通过select进行数据库查询,id标识映射文件的sql,称作statement的id-->
<!-- 指定id的类型 ,value表示接收的参数,并且命名任意,resultType指定是单条映射对应的java对象-->
<select id="fingUserById" parameterType="int" resultType="com.dqd.pojo.User">
select * from user where id = #{value}
</select>
<!-- 注意模糊查询和id查询的语句区别用$而不是# -->
<select id="fingUserByName" parameterType="java.lang.String" resultType="com.dqd.pojo.User">
select * from user where username like '%${value}%'
</select>
<!-- 添加用户
parameterType:指定输入参数的类型pojo
#{}指定pojo的属性名,映射到数据库中字段的名称,
-->
<!-- 设置可以查询id的插入语句
keyproperty表示将查询的主键设置到parameterType中对象的那个属性
order:对insert语句而言
一定注意还需要一个主键的返回类型,否则会报错
-->
<insert id="insertUser" parameterType="com.dqd.pojo.User">
<selectKey keyProperty="id" order="AFTER" >
select LAST_INSERT_ID()
</selectKey>
insert into user(username,birthday,sex,address) values(#{username},#{birthday},#{sex},#{address})
</insert>
<delete id="deleteUser" parameterType="int">
delete from user where id = #{id}
</delete>
<!-- 通过传入的pojo(前提是包含有id)根据id更新用户 -->
<update id="updateUser" parameterType="com.dqd.pojo.User">
update user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address} where id=#{id}
</update>
</mapper>
log4j.properties:
log4j.rootLogger=DEBUG, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%d %5p (%c\:%L) - %m%n
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">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
<property name="username" value="root" />
</dataSource>
</environment>
</environments>
<!-- 加载映射文件 -->
<mappers>
<mapper resource="sqlmap/User.xml" />
</mappers>
</configuration>