MyBatis学习(2)【主要是记录学习中出现的问题】

弄了个web project项目

UserMapper.java代码

package cn.dao;

import cn.pojo.User;

public interface UserMapper {
	int add(User 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="cn.dao.UserMapper">
	<insert id="saveUser" parameterType="user" useGeneratedKeys="true">
		INSERT INTO TB_USER(name,sex,age) VALUES(#{name},#{sex},#{age})
	</insert>

	<select id="selectUser" parameterType="int" resultType="user">
		SELECT *from TB_USER WHERE id=#{id}
	</select>
	
	<update id="modifyUser" parameterType="user">
		UPDATE TB_USER SET name=#{name},sex=#{sex},age=#{age} WHERE id=#{id}
	</update>
	
	<delete id="removeUser" parameterType="int">
		DELETE FROM TB_USER WHERE id=#{id}
	</delete>
	
	<insert id="add" parameterType="user">
  		INSERT INTO TB_USER(`name`,`sex`,`age`) VALUES(#{name},#{sex},#{age})
  	</insert>
  	
  	<select id="selectAll" resultType="User">
  		SELECT *FROM TB_USER
  	</select>

</mapper>

User.java代码

package cn.pojo;

import java.io.Serializable;

import org.apache.ibatis.type.Alias;

/**
 * @author AUSU
 *
 */
//@Alias("user")
public class User implements Serializable{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private Integer id;            //用户标识
	private String name;           //用户姓名
	private String sex;            //用户性别
	private Integer age;           //用户年龄
	
	
	
	@Override
	public String toString() {
		return "User [id=" + id + ", name=" + name + ", sex=" + sex + ", age=" + age + "]";
	}

	//无参数的构造方法       
	public User() {
		super();
		// TODO Auto-generated constructor stub
	}
	
	//有参数的构造方法
	public User(String name, String sex, Integer age) {
		super();
		this.name = name;
		this.sex = sex;
		this.age = age;
	}

	
	//setter和getter
	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

	public Integer getAge() {
		return age;
	}

	public void setAge(Integer age) {
		this.age = age;
	}
	
	
}

在这里注意一下:

@Alias("user"),我注释掉了,如果有注解,则别名为其注解值user

Test.java代码

package cn.test;

import java.io.InputStream;
import java.text.Normalizer.Form;
import java.util.List;
import java.util.Map;

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.apache.jasper.tagplugins.jstl.core.ForEach;

import cn.util.MyBatisUtil;
import cn.dao.UserMapper;
import cn.pojo.User;

public class Test {
	public static void main(String[] args) {
//创建SqlSession实例,赋给SqlSession变量		
		SqlSession sqlSession = MyBatisUtil.getSqlSession();
//方法一:将User对象作为参数调用SqlSession的insert方法,MyBatis会找到cn.dao.UserMapper命名空间下
//id="saveUser"的元素,执行该元素的SQL语句
		//User user=new User("jack","男",55);
		//int count=sqlSession.insert("cn.dao.UserMapper.saveUser",user);

//根据id查询User对象
		User user=sqlSession.selectOne("cn.dao.UserMapper.selectUser",5);
		System.out.println(user);
		
//修改User对象的属性值
		user.setName("chyyy");
		user.setAge(65);
//修改User对象
		sqlSession.update("cn.dao.UserMapper.modifyUser",user);
		System.out.println(user);
		
//删除id为1的User对象
		sqlSession.delete("cn.dao.UserMapper.removeUser",1);
		
//查询表中所有数据返回List集合,集合中的每个元素都是一个Map
//List<Map<String,Object>> list=sqlSession.selectList("cn.dao.UserMapper.selectAll");
//遍历List集合,打印每一个Map集合
//list.forEach(row->System.out.println(row););  在这里用不了,要1.8才行,而且UserMapper里面的resultType.xml的参数值要改为map
		//我这样也行,不过UserMapper.xml里面的resultType的参数值要改为User
		List<User> list=sqlSession.selectList("cn.dao.UserMapper.selectAll");		
		System.out.println(list);    //方法一输出,不过不好看
		for (User list1 : list) {    //方法二输出,这种用在第一个好像不行
			System.out.println(list1);
		}
		
		
//方法二:我在UserMapper.java里面自己写一个增加的方法,然后通过getMapper去调用		
		//User user=new User("tom","女",52);
		//int count=sqlSession.getMapper(UserMapper.class).add(user);
		sqlSession.commit();    //提交事务
		//System.out.println("增加了"+count+"条数据!");
		MyBatisUtil.closeSession(sqlSession);
	
	}
}

MyBatisUtil.java代码

package cn.util;

import java.io.IOException;
import java.io.InputStream;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class MyBatisUtil {
	
	
	private static SqlSessionFactory sqlSessionFactory;
	
	/**
	 * 创建SqlSessionFactory   只创建一次
	 */
	static{
		try {
			String resource = "mybatis-config.xml";
			InputStream inputStream;
			inputStream = Resources.getResourceAsStream(resource);
			//创建SqlSessionFactory对象,读取配置文件
			sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	
	}
	/**
	 * 获得SqlSessionFactory
	 * @return SqlSessionFactory
	 */
	public static SqlSessionFactory getSqlSessionFactory(){
		
		return sqlSessionFactory;
		
	}
	/**
	 * 获得 SqlSession
	 * @return SqlSession
	 */
	public static SqlSession getSqlSession(){
		return sqlSessionFactory.openSession(false);
	}
	/**
	 * 關閉sqlSession
	 * @param sqlSession
	 */
	public static void closeSession(SqlSession sqlSession){
		if(sqlSession!=null){
			sqlSession.close();
		}
	}
	

}

MyBatis-config.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="database.properties"></properties> 
	<!-- 日志 -->
	<settings>
		<setting name="logImpl" value="LOG4J" />
	</settings>
	<!-- 类型命名:别名 -->
  	<typeAliases>
		<typeAlias type="cn.pojo.User" alias="User"/>
	</typeAliases>
<!--  	<typeAliases>
		<package name="cn.pojo"/>
	</typeAliases> -->
	

	<!-- 运行环境 -->
	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<property name="driver" value="${jdbc.driver}" />
				<property name="url" value="${jdbc.url}" />
				<property name="username" value="${jdbc.user}" />
				<property name="password" value="${jdbc.password}" />
			</dataSource>
		</environment>
	</environments>
	<mappers>
		<mapper resource="cn/dao/UserMapper.xml" />
	</mappers>
</configuration>

运行结果:

DEBUG [main] - ooo Using Connection [com.mysql.jdbc.JDBC4Connection@457e2f02]
DEBUG [main] - ==>  Preparing: SELECT *from TB_USER WHERE id=? 
DEBUG [main] - ==> Parameters: 5(Integer)
User [id=5, name=chyyy, sex=女, age=65]
DEBUG [main] - ooo Using Connection [com.mysql.jdbc.JDBC4Connection@457e2f02]
DEBUG [main] - ==>  Preparing: UPDATE TB_USER SET name=?,sex=?,age=? WHERE id=? 
DEBUG [main] - ==> Parameters: chyyy(String), 女(String), 65(Integer), 5(Integer)
User [id=5, name=chyyy, sex=女, age=65]
DEBUG [main] - ooo Using Connection [com.mysql.jdbc.JDBC4Connection@457e2f02]
DEBUG [main] - ==>  Preparing: DELETE FROM TB_USER WHERE id=? 
DEBUG [main] - ==> Parameters: 1(Integer)
DEBUG [main] - ooo Using Connection [com.mysql.jdbc.JDBC4Connection@457e2f02]
DEBUG [main] - ==>  Preparing: SELECT *FROM TB_USER 
DEBUG [main] - ==> Parameters: 
[User [id=2, name=admin, sex=男, age=27], User [id=3, name=admin, sex=男, age=39], User [id=4, name=admin, sex=男, age=40], User [id=5, name=chyyy, sex=女, age=65], User [id=6, name=admin, sex=女, age=48], User [id=7, name=admin, sex=人, age=48], User [id=8, name=admin, sex=人, age=48], User [id=9, name=chy, sex=人, age=48], User [id=10, name=chy, sex=人, age=48], User [id=11, name=chy, sex=人, age=48], User [id=12, name=chy, sex=人, age=48], User [id=13, name=chy, sex=人, age=48], User [id=14, name=chy, sex=人, age=48], User [id=15, name=chy, sex=人, age=48], User [id=16, name=chy, sex=人, age=48], User [id=17, name=chy, sex=人, age=48], User [id=18, name=chy, sex=人, age=48], User [id=19, name=chy, sex=人, age=48], User [id=20, name=jack, sex=男, age=55], User [id=21, name=jack, sex=男, age=55], User [id=22, name=tom, sex=女, age=52]]
User [id=2, name=admin, sex=男, age=27]
User [id=3, name=admin, sex=男, age=39]
User [id=4, name=admin, sex=男, age=40]
User [id=5, name=chyyy, sex=女, age=65]
User [id=6, name=admin, sex=女, age=48]
User [id=7, name=admin, sex=人, age=48]
User [id=8, name=admin, sex=人, age=48]
User [id=9, name=chy, sex=人, age=48]
User [id=10, name=chy, sex=人, age=48]

猜你喜欢

转载自blog.csdn.net/weixin_42717928/article/details/83963765
今日推荐