一、先附上项目层级目录:

SSM--MyBatis对数据库进行增删改查

二、主配置文件:sqlMapConfig.xml 

配置mapper时一定要搞清它和你的mapper.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 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/skh?characterEncoding=utf-8"/>
        <property name="username" value="root"/>
        <property name="password" value="usbw"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
   <mapper resource="mapper/UserMapper.xml"/>
  </mappers>
</configuration>

三、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="UserMapper"><!-- 可能会有多个mapper配置文件 相当于给mapper配置文件另起一个名字 -->
 <!--  parameterType 为sql语句中的参数类型
       resultType 查询结果返回类型
  -->
 <select id="selectById" parameterType="int" resultType="cn.skh.bean.User">
   select * from qwe where id = #{id} 
 </select>
 <select id="selectUserByName" parameterType="String" resultType="cn.skh.bean.User">
    <!-- 根据名字模糊查询用户 -->
	<!-- #{} 占位符 尽量选用#{}来解决问题 占位符接收的传值会自动加上双引号 所以不需要在另外加引号-->
	<!-- ${} 字符串拼接 or 1=1  王 -->
	<!-- 字符串拼接写法select * from qwe where name like '%${value}%'  -->
     select * from qwe where name like "%"#{name}"%"
     <!-- 等价于select * from qwe where name like '%王%' 不过参数 王 不需要另加引号 只需给%加即可 -->
 </select>
 <insert id="insertUser" parameterType="cn.skh.bean.User">
  <!-- 占位符#{}中的内容要更具实体类中的变量名来写  #{id}等价于cn.skh.bean.User.id-->
   insert into qwe values(#{id},#{name},#{password},#{sex})
 </insert>
 <update id="updateUser" parameterType="cn.skh.bean.User">
     update qwe set name = #{name} where id = #{id}
 </update>
 <delete id="deleteUserById" parameterType="int">
 delete from qwe where id = #{id}
 </delete>
</mapper>

三、JavaBean以及数据库表结构

package cn.skh.bean;
/**
 * 需要注意的地方 bean中的属性名称要和数据库中的属性名称相对性
 * 属性和数据库中字段的名称要一样 不能这个是name 那个是username
 * @author SKH
 *
 */
public class User {
     private int id;
     private String name;
     private String password;
     private String sex;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	@Override
	public String toString() {
		return "User [id=" + id + ", username=" + name + ", password=" + password + ", sex=" + sex + "]";
	}
     
}
id	int	11	
name varchar	255	
password varchar	255	
sex	varchar	255	

四、测试类

package cn.skh.test;
import java.io.IOException;
import java.io.InputStream;
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 cn.skh.bean.User;
public class HelloMyBatis {
	//测试入门程序 通过id查询用户
	  private static void test() throws IOException {
		  //读取配置文件
		  String resource = "sqlMapConfig.xml";
		  InputStream in = Resources.getResourceAsStream(resource);
		  //建造一个建造工厂的东东
		  SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
           //通过配置文件建造工厂
		  SqlSessionFactory ssf = ssfb.build(in);
		   //通过工厂生产商品
		  SqlSession session = ssf.openSession();
		   //使用商品 即操作数据库
	       //参数1:要操作的sql语句     参数2:sql语句的参数
	       //UserMapper.selectById . 之前为UserMapper配置文件的命名空间 之后为select的id属性值
	      User u = session.selectOne("UserMapper.selectById",1);
	      System.out.println(u);
	}
	//模糊查询
	  private static void test2() throws IOException {
		  //读取配置文件
		  String resource = "sqlMapConfig.xml";
		  InputStream in = Resources.getResourceAsStream(resource);
		//建造一个建造工厂的东东
		  SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
        //通过配置文件建造工厂
		  SqlSessionFactory ssf = ssfb.build(in);
		 //通过工厂生产商品
		  SqlSession session = ssf.openSession();
		  //使用商品 即操作数据库
		  List<User> us = session.selectList("UserMapper.selectUserByName","逯");
		  for(User u:us) {
			  System.out.println(u);
		  }	 
	}
	  private static void test3() throws IOException {
		  //读取配置文件
		  String resource = "sqlMapConfig.xml";
		  InputStream in = Resources.getResourceAsStream(resource);
		  //建造一个建造工厂的东东
		  SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
           //通过配置文件建造工厂
		  SqlSessionFactory ssf = ssfb.build(in);
		   //通过工厂生产商品
		  SqlSession session = ssf.openSession();
		   //使用商品 即操作数据库
	      User u = new User();
	      u.setId(7);
	      u.setName("mlk");
	      u.setPassword("123456");
	      u.setSex("女");
	      session.insert("UserMapper.insertUser", u);
	      session.commit();//提交事务才会生效    
	}
	  private static void test4() throws IOException {
		  //读取配置文件
		  String resource = "sqlMapConfig.xml";
		  InputStream in = Resources.getResourceAsStream(resource);
		  //建造一个建造工厂的东东
		  SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
           //通过配置文件建造工厂
		  SqlSessionFactory ssf = ssfb.build(in);
		   //通过工厂生产商品
		  SqlSession session = ssf.openSession();
		   //使用商品 即操作数据库
	      User u = new User();
	      u.setId(0);
	      u.setName("zxx&SKh");
	      session.update("UserMapper.updateUser", u);
	      session.commit();//提交事务才会生效    
	}
	  private static void test5() throws IOException {
		  //读取配置文件
		  String resource = "sqlMapConfig.xml";
		  InputStream in = Resources.getResourceAsStream(resource);
		  //建造一个建造工厂的东东
		  SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
           //通过配置文件建造工厂
		  SqlSessionFactory ssf = ssfb.build(in);
		   //通过工厂生产商品
		  SqlSession session = ssf.openSession();
		   //使用商品 即操作数据库
	      session.delete("UserMapper.deleteUserById", 7);
	      session.commit();//提交事务才会生效    
	}
  public static void main(String[] args) throws IOException {
       //test();//查询
	  //test2();//查询
	  //test3();//添加
	  //test4();//修改
	  //test5();//删除
	}
}

五、最后附上一日志文件(不一定必须要放在你的项目里)

要注意此日志文件要与你的sqlConfig.xml处于同一及目录

# 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

 

相关文章: