发表于: 2018-03-23 20:44:23
1 653
小白学java第十天,今天学习时间4-5小时
今天完成的事情:(今天首先完成了Mysbatis,
首先创建mysql驱动配置文件
然后创建mybatis配置文件
<?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>
<!-- 加载java的配置文件,如db.properties -->
<properties resource="mysql.properties"></properties>
<!-- 省却包名 -->
<typeAliases>
<package name="com.mybatis.beans"/>
</typeAliases>
<!-- 配置mybatis的环境信息,与spring整合,该信息由spring来管理 -->
<environments default="cybatis">
<environment id="cybatis">
<!-- 配置JDBC事务控制,由mybatis进行管理 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 配置数据源,采用mybatis连接池 -->
<dataSource type="POOLED">
<property name="driver" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
</environments>
<!-- 加载映射文件 -->
<mappers>
<package name="com/mybatis/mapper"/>
</mappers>
</configuration>
创建对应实体对象
package com.mybatis.beans;
import java.io.Serializable;
public class UserBean implements Serializable{
private static final long serialVersionUID = 1L;
private Integer id;
private String username;
private String password;
private Double age;
public UserBean() {
super();
}
public UserBean(String username, String password, Double age) {
super();
this.username = username;
this.password = password;
this.age = age;
}
public UserBean(Integer id, String username, String password, Double age) {
super();
this.id = id;
this.username = username;
this.password = password;
this.age = age;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String name) {
this.username = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Double getAccount() {
return age;
}
public void setAccount(Double age) {
this.age = age;
}
@Override
public String toString() {
return "UserBean [id=" + id + ", username=" + username + ", password="
+ password + ", age=" + age + "]";
}
}
常见接口mapper和定义操作表的映射文件mapper.xml
package com.mybatis.mapper;
import java.util.List;
import com.mybatis.beans.UserBean;
public interface UserMapper {
/**
* 新增用戶
* @param user
* @return
* @throws Exception
*/
public int insertUser(UserBean user) throws Exception;
/**
* 修改用戶
* @param user
* @param id
* @return
* @throws Exception
*/
public int updateUser (UserBean user,int id) throws Exception;
/**
* 刪除用戶
* @param id
* @return
* @throws Exception
*/
public int deleteUser(int id) throws Exception;
/**
* 根据id查询用户信息
* @param id
* @return
* @throws Exception
*/
public UserBean selectUserById(int id) throws Exception;
/**
* 查询所有的用户信息
* @return
* @throws Exception
*/
public List<UserBean> selectAllUser() throws Exception;
}
、
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org/DTD Mapper 3.0" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mybatis.mapper.UserMapper">
<!-- 自定义返回结果集 -->
<resultMap id="userMap" type="UserBean">
<id property="id" column="id" javaType="java.lang.Integer"></id>
<result property="username" column="username" javaType="java.lang.String"></result>
<result property="password" column="password" javaType="java.lang.String"></result>
<result property="account" column="account" javaType="java.lang.Double"></result>
</resultMap>
<insert id="insertUser" useGeneratedKeys="true" keyProperty="id">
insert into user (username,password,age) values (#{username},#{password},#{age})
</insert>
<update id="updateUser" >
update user set username=#{username},password=#{password},age=#{age} where id=#{id}
</update>
<delete id="deleteUser" parameterType="int">
delete from user where id=#{id}
</delete>
<select id="selectUserById" parameterType="int" resultMap="userMap">
select * from user where id=#{id}
</select>
<select id="selectAllUser" resultMap="userMap">
select * from user
</select>
</mapper>
创建工具类
package com.mybatis.tools;
import java.io.Reader;
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 DBTools {
public static SqlSessionFactory sessionFactory;
static{
try {
//使用MyBatis提供的Resources类加载mybatis的配置文件
Reader reader = Resources.getResourceAsReader("mybatis.cfg.xml");
//构建sqlSession的工厂
sessionFactory = new SqlSessionFactoryBuilder().build(reader);
} catch (Exception e) {
e.printStackTrace();
}
}
//创建能执行映射文件中sql的sqlSession
public static SqlSession getSession(){
return sessionFactory.openSession();
}
}
最后写测试
package com.mybatis.service;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.mybatis.beans.UserBean;
import com.mybatis.mapper.UserMapper;
import com.mybatis.tools.DBTools;
public class UserService {
private static Logger logger = LoggerFactory.getLogger(UserService.class);
public static void main(String[] args) {
insertUser();
//deleteUser(1);
//selectUserById(2);
//selectAllUser();
}
/**
* 新增用户
*/
private static boolean insertUser(){
SqlSession session = DBTools.getSession();
UserMapper mapper = session.getMapper(UserMapper.class);
UserBean user = new UserBean("张飞", "5201314", 998.0);
try {
int index=mapper.insertUser(user);
boolean bool=index>0?true:false;
logger.error("新增用户user对象:{},操作状态:{}",new Object[]{user,bool});
session.commit();
return bool;
} catch (Exception e) {
e.printStackTrace();
session.rollback();
return false;
}finally{
session.close();
}
}
/**
* 删除用户
* @param id 用户ID
*/
private static boolean deleteUser(int id){
SqlSession session=DBTools.getSession();
UserMapper mapper=session.getMapper(UserMapper.class);
try {
int index=mapper.deleteUser(id);
boolean bool=index>0?true:false;
logger.debug("根据用户id:{},操作状态{}",new Object[]{id,bool});
session.commit();
return bool;
} catch (Exception e) {
e.printStackTrace();
session.rollback();
return false;
}finally{
session.close();
}
}
/**
* 根据id查询用户
* @param id
*/
private static void selectUserById(int id){
SqlSession session=DBTools.getSession();
UserMapper mapper=session.getMapper(UserMapper.class);
try {
UserBean user= mapper.selectUserById(id);
logger.debug("根据用户Id:{},查询用户信息:{}",new Object[]{id,user});
session.commit();
} catch (Exception e) {
e.printStackTrace();
session.rollback();
}finally{
session.close();
}
}
/**
* 查询所有的用户
*/
private static void selectAllUser(){
SqlSession session=DBTools.getSession();
UserMapper mapper=session.getMapper(UserMapper.class);
try {
List<UserBean> user=mapper.selectAllUser();
logger.debug("获取所用的用户:{}",user);
session.commit();
} catch (Exception e) {
e.printStackTrace();
session.rollback();
}finally{
session.close();
}
}
}
这个是去一片博客学习的,之中出现了很多问题忘了截图了,在百度下一步一步解决,最后还有一个日志log4j在网上查的,测试结果如下
在最后确定程序正确之后对代码进行了消化,对mybatis进行了理解学习,工作量有点大。。)
明天计划的事情:(继续加深对Mybatis的理解,学习spring框架下的JdbcTemplate。)
遇到的问题:(没弄清楚DAO是什么,没弄明白我写的程序里有没有DAO,不知道命名规范是什么,百度资料很少。。。知道log4j文件,但不是很理解,)
收获:(学习了Mybatis,学习了映射文件)
评论