Mybatis入门程序

项目大致目录如下:

com.icsc.dao为Mybatis原始dao的开发。后面会和mapper代理的方法开发一起说。

1.创建数据库,表,测试连接(MySql)

package com.icsc.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

/**
 * JDBC连接MySql数据库测试
 * @author W12179
 *
 */
public class JdbcTest {

	public static void main(String[] args) {
		//1.准备参数
		//数据库连接
		Connection conn = null;
		//预编译的sql语句
		PreparedStatement pstm = null;
		//返回结果集
		ResultSet rs = null;
		
		try {
			//2.加载驱动
			Class.forName("com.mysql.jdbc.Driver");
			//3.获取连接
			conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/sys?characterEncoding=utf-8","root","admin");
			//4.准备sql语句
			String sql = "SELECT * FROM USER WHERE ID = ?";
			
			pstm = conn.prepareStatement(sql);
			//设置参数,从第一参数开始,
			pstm.setString(1, "1");
			//5.执行预编译的sql语句,获取结果集
			rs = pstm.executeQuery();
			//6.操作结果集
			while(rs.next()){
				System.out.println(rs.getString("id")+","+rs.getString("name")+","+rs.getString("sex"));
			
			}
			
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			try {
				//7.依次释放资源,注意顺序
				if(rs!=null){
					rs.close();
				}
				if(pstm!=null){
					pstm.close();
				}
				if(conn!=null){
					conn.close();
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		
	}

}

能打印数据库对应的数据,则说明连接数据库成功。

2.加入jar包



3.创建log4j.properties

log4j.rootLogger=DEBUG,Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
log4j.logger.org.apache=INFO

4.创建Mybatis的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>
	<!--  
	与springMVC整合后,这部分由Spring管理,不需要写了。
	-->
	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC"/>
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver"/>
				<property name="username" value="root"/>
				<property name="password" value="admin"/>
				<property name="url" value="jdbc:mysql://localhost:3306/sys?characterEncoding=utf-8"/>
			</dataSource>
		</environment>
	</environments>

	<!--引入mapper.xml -->
	<mappers>
		<mapper resource="sqlmap/User.xml"/>
	</mappers>
</configuration>

5.创建实体类和对应的mapper.xml,以user为例

User.java

package com.icsc.entity;

/**
 * 用户实体类
 * @author W12179
 *
 */
public class User {
	
	private String name;
	private Integer sex;
	private Integer id;
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Integer getSex() {
		return sex;
	}
	public void setSex(Integer sex) {
		this.sex = sex;
	}
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	
	@Override
	public String toString() {
		return "User [name=" + name + ", sex=" + sex + ", id=" + id + "]";
	}
	
	

}

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">

<mapper namespace="test">
	
	<!-- 根据id,查询一笔资料 -->
	<select id="findUserById" parameterType="int" resultType="com.icsc.entity.User">
		select * from user where id = #{id}
	</select>
	<!--
	#{}:表示一个占位符,也就是?,当里面的参数是简单数据类型的时候,可以是value,也可以是任意。
	${}:表示字符串连接符号。当里面的参数是简单数据类型的时候,必须写成value
	resultType:表示输出单条记录的类型。
	parameterType:输入参数的类型
	-->
	
	<!-- 根据name模糊查询 -->
	<select id="findUserByName" parameterType="String" resultType="com.icsc.entity.User">
		select * from user where name like '%${value}%'
	</select>
	
	<!-- 新增资料 -->
	<insert id="insertUser" parameterType="com.icsc.entity.User">
		<!--
		获取自增主键。
		keyProperty:主键放入的属性。
		order:相对于insert语句的执行顺序。
		resultType:主键的返回类型
		-->
		<selectKey keyProperty="id" order="AFTER" resultType="int">
			select LAST_INSERT_ID()
		</selectKey>
		insert into user (name,sex) values(#{name},#{sex})
	</insert>
	<!--
	<insert id="insertUser" parameterType="com.icsc.entity.User">
		获取非自增主键。(UUID)
		keyProperty:主键放入的属性。
		order:相对于insert语句的执行顺序。
		resultType:主键的返回类型
		<selectKey keyProperty="id" order="BEFORE" resultType="String">
			select UUID()
		</selectKey>
		insert into user (id,name,sex) values(#{id},#{name},#{sex})
	</insert>-->
	
	<!-- 根据id删除一笔资料 -->
	<delete id="deleteUser" parameterType="int">
		delete from user where id = #{id}
	</delete>
	
	<!-- 根据id修改一笔资料 -->
	<update id="updateUser" parameterType="com.icsc.entity.User">
		update user set name = #{name},sex=#{sex} where id =#{id}
	</update>
</mapper>

6.测试

package com.icsc.MybatisFirst;

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 org.junit.Test;

import com.icsc.entity.User;

/**
 * 测试User.xml
 * @author W12179
 *
 */
public class MybatisFirst {

	@Test
	public void findUserById() throws Exception{
		//获取sqlSessionFactory
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader("SqlMapConfig.xml"));
		//获取sqlSession,注意SqlSession是线程不安全的,要定义在方法里
		SqlSession sqlSession = sqlSessionFactory.openSession();
		//通过SQLSession操作数据库
		User user = sqlSession.selectOne("test.findUserById", 1);
		
		System.out.println(user);
		//释放资源
		sqlSession.close();
	}
	
	@Test
	public void findUserByName() throws Exception{
		
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader("SqlMapConfig.xml"));
		SqlSession sqlSession = sqlSessionFactory.openSession();
		
		List<User> list = sqlSession.selectList("test.findUserByName", "张");
		
		System.out.println(list);
		sqlSession.close();
	}
	
	@Test
	public void insertUser() throws Exception{
		
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader("SqlMapConfig.xml"));
		SqlSession sqlSession = sqlSessionFactory.openSession();
		
		User user = new User();
		user.setName("李思");
		user.setSex(2);
		int n= sqlSession.insert("test.insertUser", user);
		
		System.out.println(n);
		System.out.println(user.getId());
		//提交事务
		sqlSession.commit();
		sqlSession.close();
	}
	
	@Test
	public void deleteUser() throws Exception{
		
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader("SqlMapConfig.xml"));
		SqlSession sqlSession = sqlSessionFactory.openSession();
		
		int n= sqlSession.delete("test.deleteUser", 4);
		
		System.out.println(n);
		
		sqlSession.commit();
		sqlSession.close();
	}
	

	@Test
	public void updateUser() throws Exception{
		
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader("SqlMapConfig.xml"));
		SqlSession sqlSession = sqlSessionFactory.openSession();
		
		User user = new User();;
		user.setId(5);
		user.setName("李思aa");
		user.setSex(1);
		int n= sqlSession.insert("test.updateUser", user);
		
		System.out.println(n);
		
		sqlSession.commit();
		sqlSession.close();
	}
	
	
	
}



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值