mac java mysql_mac下使用MyBatis增删改查(mysql,Java)

1.安装mysql

下载地址为http://dev.mysql.com/downloads/mysql/,选择dmg类型的直接下载,跳转的页面要求注册或登录,可以直接点击页面最下面的

No thanks, just start my download.

下载,安装

安装结束会提示默认密码:

2016-01-26T03:15:17.366026Z 1 [Note] A temporary password is generated for root@localhost: o)pa_.adT2wZ

If you lose this password, please consult the section How to Reset the Root Password in the MySQL reference manual.

安装之后在系统偏好设置最下面可以看到mysql图标。

2.修改密码,创建表格

安装之后在mac的终端中输入mysql会提示找不到命令,因为系统默认会查找/usr/bin下的命令,如果这个命令不在这个目录下就找不到命令,mysql默认安装在/usr/local/mysql/bin/mysql,需要建立一个链路指向这里,在终端中执行命令 $sudo ln -s /usr/local/mysql/bin/mysql /usr/bin

设置之后通过mysql --version可以查看mysql版本号,注意version前面是两个横线

mysql -u root -p回车,再输入密码回车即可进入mysql

首先需要修改密码,否则无法进行进一步操作

设置方式是SET PASSWORD = PASSWORD('your new password'); 关于修改密码问题可以参考这里

密码修改之后就可以执行sql语句,例如select version(),current_date;会返回下面的结果:

version()current_date

5.7.10

2016-01-26

show databases  显示已经创建的数据库,通过create database mydb; 创建名为“mydb”的数据库,使用drop database mydb;删除名为“mydb”的数据库,使用use mydb 选择使用“mydb”数据库,选中一个数据库之后可以创建表格。

mysql中创建表格时通过character set = utf8;使表格支持中文。

create table user ( id int auto_increment, userName varchar(50), userAge int,userAddress varchar(200), primary key (id) ) character set = utf8;

3.使用MyBatis对mysql进行增删改查

创建maven项目,这个项目使用mybatis对mysql中user表进行增删改查操作,User是和表格对应的JavaBean.

package mybatis.demo;

/**

* Created by code on 16/1/27.

*/

public class User {

public int id;

public String userName;

public int userAge;

public String userAddress;

public User (){

super();

}

public User(int id, String userName, int userAge, String userAddress) {

this.id = id;

this.userName = userName;

this.userAge = userAge;

this.userAddress = userAddress;

}

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getUserName() {

return userName;

}

public void setUserName(String userName) {

this.userName = userName;

}

public int getUserAge() {

return userAge;

}

public void setUserAge(int userAge) {

this.userAge = userAge;

}

public String getUserAddress() {

return userAddress;

}

public void setUserAddress(String userAddress) {

this.userAddress = userAddress;

}

@Override

public String toString() {

return "User{" +

"id=" + id +

",\tuserName='" + userName + '\'' +

",\tuserAge=" + userAge +

",\tuserAddress='" + userAddress + '\'' +

'}';

}

}

项目目录结构如下图,pom.xml添加mysql和mybatis的依赖,并添加拷贝xml配置文件到target目录下的相关配置

4a645ae94b3f05bd7f95a706a26e14dd.png

pom.xml代码如下

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

java.test

mybatis_demo

1.0-SNAPSHOT

org.mybatis

mybatis

3.1.1

mysql

mysql-connector-java

5.1.38

src/main/java

**/*.xml

true

使用mybatis主要要配置两类xml文件,一个是用于连接数据库和xml映射文件的,这里就是db_conf.xml,注意要修改连接数据库的password。

/p>

PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-config.dtd">

这个文件的environment部门配置了连接数据库所需的信息,mappers部分配置了一个xml映射文件,即mybatis.demo包下面的UserMapper.xml,这个配置文件包含了对数据库增删改查相关的sql映射语句,其中mapper标签中的namespace需要写这个xml文件所在包名和文件名,但不包括后缀。代码中会使用每个增删改查子标签的id来使用对应的sql语句。

/p>

PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

insert into user(id,userName,userAge,userAddress)

values(#{id},#{userName},#{userAge},#{userAddress})

insert into user(userName,userAge,userAddress) values(#{userName},#{userAge},#{userAddress})

select * from user where id = #{id}

select userName as userName from user where id = #{id}

select count(*) from user

delete from user where id=#{id}

update user set userName=#{userName} where id=#{id}

和UserMapper.xml对应的文件是UserMapper.java,这是一个接口类,里面定义了若干方法,每个方法的方法名和UserMapper.xml中每条增删改查子标签的id相同。

package mybatis.demo;

/**

* Created by code on 16/1/27.

*/

public interface UserMapper {

public User selectUserById(int id);

public void insertUser(User user);

public void insertUserWithoutId(User user);

public int getCount();

public void setUser(User user);

}

为了使用mybatis,写了一个工厂类ConnectionFactory.java,可以方便的得到sqlSession,这个文件需要读取db_conf.xml,运行的时候ConnectionFactory是在target目录下,所以需要将db_conf.xml拷贝到target目录下,拷贝工作是通过pom.xml中build部分的代码自动完成的。

package mybatis.demo;

import org.apache.ibatis.io.Resources;

import org.apache.ibatis.session.SqlSessionFactory;

import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;

import java.io.Reader;

/**

* Created by code on 16/1/27.

*/

public class ConnectionFactory {

private static SqlSessionFactory factory;

static {

try {

Reader reader = Resources.getResourceAsReader("db_conf.xml");

factory = new SqlSessionFactoryBuilder().build(reader);

} catch (IOException e) {

e.printStackTrace();

}

}

public static SqlSessionFactory getSqlSessionFactory(){

return factory;

}

}

UserManager.java写了具体的数据库增删改查静态方法,类中的方法名可以随便取,但是为了和映射文件对应,这个类中的方法名和映射文件中的id及方法名一致,但是UserManager.java和UserMapper.java之间没有实现关系。

package mybatis.demo;

import org.apache.ibatis.session.SqlSession;

/**

* Created by code on 16/1/27.

*/

public class UserManager {

public static User selectUserById(int id){

SqlSession sqlSession = ConnectionFactory.getSqlSessionFactory().openSession();

try{

UserMapper user = sqlSession.getMapper(UserMapper.class);

return user.selectUserById(id);

}

finally {

sqlSession.close();

}

}

public static void insertUserWithoutId(User u){

SqlSession sqlSession = ConnectionFactory.getSqlSessionFactory().openSession();

UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

userMapper.insertUserWithoutId(u);

sqlSession.commit();

sqlSession.close();

}

public static void insertUser(User u){

SqlSession sqlSession = ConnectionFactory.getSqlSessionFactory().openSession();

UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

userMapper.insertUser(u);

sqlSession.commit();//这里必须提交,否则运行提示已经插入,但是数据库中没有记录。

sqlSession.close();

}

public static int getCount(){

SqlSession sqlSession = ConnectionFactory.getSqlSessionFactory().openSession();

UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

int n = userMapper.getCount();

sqlSession.commit();

sqlSession.close();

return n;

}

public static void setUser(User user){

SqlSession sqlSession = ConnectionFactory.getSqlSessionFactory().openSession();

UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

userMapper.setUser(user);

sqlSession.commit();

sqlSession.close();

}

}

RunTest.java调用UserManager.java中的方法完成数据库的增删改查操作。

package mybatis.demo;

/**

* Created by code on 16/1/27.

*/

public class RunTest {

public static void main(String[] args) {

crud();

}

public static void crud() {

int id = 0;

//插入数据

User u = UserManager.selectUserById(id);

if (u == null) {

u = new User(id, "winter", 30, "jinan");

UserManager.insertUser(u);

System.out.println("新增用户为:" + u);

} else {

System.out.println("id="+id+"的用户已经存在 " + u);

}

int nameIndex = UserManager.getCount()+1;

u = new User(nameIndex,"mybatis"+nameIndex,28+nameIndex,"usa NO."+nameIndex);

UserManager.insertUserWithoutId(u);

u.setUserName("mybatis" + nameIndex + "_fixed");

UserManager.setUser(u);

//查询数据

User user = null;

int index = 0;

while(true){

user = UserManager.selectUserById(++index);

if (user != null) {

System.out.println(user.toString());

} else {

System.out.println("id = "+index+" 的查询结果为 " + null);

break;

}

}

}

}

运行RunTest即可看到数据库增删改查对应的输出,没运行一次会递增向数据库中增加一条记录。如果读取出错,即数据库中有多条记录,但是最后只能循环读取少数记录,需要坚持是否有记录id不连续的情况,如果记录不连续可以修改crud()方法中id的值插入对应id的值。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值